为什么按回车时input()会出现语法错误?

10 投票
4 回答
16390 浏览
提问于 2025-04-16 11:59

我有以下的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函数的行为是你所期望的。

撰写回答