2

我是 Python 新手。

我在网上看一个教程,作者用了str = input(),然后他输入了一个句子。之后,他得到存储在 str 中的输入字符串。但是,当我在我的 python shell 中尝试str = input()时,它不起作用。这是错误:

>>> a = input()
test sentence

Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    a = input()
  File "<string>", line 1
    test sentence
            ^
SyntaxError: unexpected EOF while parsing

你能告诉我为什么会这样吗?

4

4 回答 4

4

的含义input在 Python 2 和 Python 3 之间发生了变化。在 Python 2 中,input实际上评估了您作为 Python 代码输入的任何内容。因此,当您在 Python 中输入语法不正确的内容时,您会收到这样的错误。此外,raw_input它只接受任何输入并以字符串形式返回。

现在因为评估input并不是真的那么有用(并且 eval 是邪恶的),所以 Python 3 中的行为input被 Python 2 所取代raw_input

您的教程的作者很可能使用了 Python 3,其input行为与raw_inputPython 2 中的行为类似。如果您使用 Python 2,请raw_input改用。

于 2013-03-14T00:15:43.867 回答
2

a = input() test sentence不是有效代码。

#你可以用字符写评论。

编辑:你用的是什么版本的python?尝试raw_input而不是input.

inputpython 2和python 2的区别raw_input

raw_input:读取用户通过换行符写入的任何内容并将其存储到str

input:读取用户写的任何内容并评估该输入

raw_input变成input了python 3。

于 2013-03-14T00:10:03.657 回答
1

因为您使用的是input(),所以它需要有效的 Python 代码。你得到一个SyntaxError因为test sentence不是有效的 Python。

因此,尝试使用raw_input()(返回一个字符串)或这样做:

>>> a = input()
'test sentence' # by entering it as a string, it is evaluable

参考:

于 2013-03-14T00:14:01.873 回答
1

在 Python 2 中,raw_input(...)将返回作为字符串输入的任何内容。input(...)相当于eval(raw_input(...))非常危险!!)。eval将其参数评估为 Python 代码并返回结果,因此input需要格式正确的 Python 代码。你不应该Python 2 中使用inputor eval,因为它存在安全风险;改为使用raw_input

在 Python 3 中,input(...)返回作为字符串输入的任何内容。

于 2013-03-14T00:16:52.320 回答