diff --git a/pyopencl/__init__.py b/pyopencl/__init__.py
index 6635680aa243492b763d3f2432c8ca458c74314e..633b59c4f8a38212585cf7566ed5df1b6dd4efba 100644
--- a/pyopencl/__init__.py
+++ b/pyopencl/__init__.py
@@ -669,33 +669,38 @@ def create_some_context(interactive=True, answers=None):
         answers = ctx_spec.split(":")
 
     if answers is not None:
-        pre_provided_answers = answers[:]
+        pre_provided_answers = answers
+        answers = answers[:]
     else:
         pre_provided_answers = None
 
     user_inputs = []
 
+    try:
+        import sys
+        if not sys.stdin.isatty():
+            interactive = False
+    except:
+        interactive = False
+
     def get_input(prompt):
         if answers:
             return str(answers.pop(0))
+        elif not interactive:
+            return ''
         else:
             user_input = raw_input(prompt)
             user_inputs.append(user_input)
             return user_input
 
-    try:
-        import sys
-        if not sys.stdin.isatty():
-            interactive = False
-    except:
-        interactive = False
+    # {{{ pick a platform
 
     platforms = get_platforms()
 
     if not platforms:
         raise Error("no platforms found")
-    elif len(platforms) == 1 or not interactive:
-        platform = platforms[0]
+    elif len(platforms) == 1:
+        platform, = platforms
     else:
         if not answers:
             print "Choose platform:"
@@ -723,6 +728,10 @@ def create_some_context(interactive=True, answers=None):
                 if platform is None:
                     raise RuntimeError("input did not match any platform")
 
+    # }}}
+
+    # {{{ pick a device
+
     devices = platform.get_devices()
 
     def parse_device(choice):
@@ -742,7 +751,7 @@ def create_some_context(interactive=True, answers=None):
 
     if not devices:
         raise Error("no devices found")
-    elif len(devices) == 1 or not interactive:
+    elif len(devices) == 1:
         pass
     else:
         if not answers:
@@ -756,6 +765,8 @@ def create_some_context(interactive=True, answers=None):
         else:
             devices = [parse_device(i) for i in answer.split(",")]
 
+    # }}}
+
     if user_inputs:
         if pre_provided_answers is not None:
             user_inputs = pre_provided_answers + user_inputs