为什么我刚按enter时input()会出错?

2024-04-30 05:13:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下python代码:

print 'This is a simple game.'
input('Press enter to continue . . .')
print 'Choose an option:'

...

但当我按回车键时,会出现以下错误:

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

另外,我正在Windows7上使用PythonIdle2.6版本。


Tags: to代码angameinputislinethis
3条回答

在Python 2.x中,input()等同于eval(raw_input())。当您传递空字符串时,eval会给出语法错误。

你想用raw_input()代替。

对于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))

血淋淋的细节见here

请记住,Python 3解决了这个问题。input function there的行为与您预期的一样。

在Python 2中,input()字符串被求值,如果它们是空的,则会引发异常。您可能需要raw_input()(或者转到Python 3)。

相关问题 更多 >