为什么按回车时input()会出现语法错误?
我有以下的Python代码:
print 'This is a simple game.'
input('Press enter to continue . . .')
print 'Choose an option:'
...
但是当我按下 Enter 键时,出现了以下错误:
Traceback (most recent call last):
File "E:/4.Python/temp.py", line 2, in <module>
input('Press enter to continue . . .')
File "<string>", line 0
^
SyntaxError: unexpected EOF while parsing
附注:我在Windows 7上使用的是Python IDLE 2.6版本。
相关问题在IPython中: 为什么在我输入代码时,IPython REPL告诉我“SyntaxError: unexpected EOF while parsing”?
4 个回答
3
在Python 2.x中,input()
相当于先用raw_input()
获取输入,然后再用eval
来处理这个输入。如果你给eval
一个空字符串,它会报语法错误。
所以,你应该使用raw_input()
来获取用户输入。
4
在Python 2中,input()
这个函数会把输入的内容当作代码来执行,如果你什么都不输入,它会报错。你可能更想用raw_input()
这个函数(或者直接换用Python 3)。
23
在Python 2中,你应该使用raw_input
,而不是input
。前者会读取一行输入,而后者会读取一行并尝试执行它。如果你不想让输入的数据破坏你的代码,这样做是不太明智的。
举个例子,用户可能会输入一些任意的函数,像下面这个例子:
def sety99():
global y
y = 99
y = 0
input ("Enter something: ")
print y
如果你在Python 2中运行这段代码,并输入sety99()
,输出结果会是99
。尽管在你的代码正常执行的过程中,y
并没有被故意设置为其他值(虽然在函数里确实有设置,但你的代码并没有明确调用这个函数)。原因是input(prompt)
的调用实际上等同于eval(raw_input(prompt))
。
想了解更多细节,可以查看这里。
要记住,Python 3解决了这个问题。在Python 3中,input函数的行为是你所期望的。