Python input()给出没有定义

Tom*_*Xue 3 python

我从下面的一些书中得到了一个python代码,但它运行异常.

# name.py

name = input('What is your first name? ')
print('Hello ' + name.capitalize() + '!')
Run Code Online (Sandbox Code Playgroud)

结果是:

$ python name.py
What is your first name? jack
Traceback (most recent call last):
  File "name.py", line 3, in <module>
    name = input('What is your first name? ')
  File "<string>", line 1, in <module>
NameError: name 'jack' is not defined
Run Code Online (Sandbox Code Playgroud)

这有什么问题?谢谢!

Pav*_*kov 7

因为它是如何input工作的.请参阅https://docs.python.org/2/library/functions.html#input您必须使用raw_input.


PM *_*ing 6

那本书是为Python 3编写的.旧的Python 2 input()函数与Python 3的工作方式不同input().正如troolee链接的文档中所提到的,Python 2 input()相当于eval(raw_input(prompt)),这很方便,但由于任何输入字符串都被评估,因此也可能是危险的.

因此,要在Python 2上运行Python 3代码示例,您需要使用替换input()调用raw_input().

还有其他差异会导致Python 3代码在Python 2上无法工作(或至少工作方式不同).特别是,printPython 3中不再存在旧语句,它已被print()函数替换.一些Python 3 print()函数调用可以在Python 2上运行,但有些不会.