我从下面的某本书中得到了一个python代码,但它运行异常。
# name.py
name = input('What is your first name? ')
print('Hello ' + name.capitalize() + '!')
结果是:
$ 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
它出了什么问题? 谢谢!
答案 0 :(得分:7)
因为input
的工作原理。请参阅https://docs.python.org/2/library/functions.html#input您必须使用raw_input
。
答案 1 :(得分:6)
这本书是为Python 3编写的。旧的Python 2 input()
函数与Python 3 input()
的工作方式不同。正如troolee链接的文档中所提到的,Python 2 input()
等同于eval(raw_input(prompt))
,这很方便,但也可以是dangerous,因为任何输入字符串都会被评估。
因此,要在Python 2上运行Python 3代码示例,您需要使用input()
替换raw_input()
次调用。
还有其他差异会导致Python 3代码在Python 2上无法工作(或者至少工作方式不同)。特别是,Python 3中不再存在旧的print
语句,它已被替换为print()
功能。一些Python 3 print()
函数调用可以在Python 2上运行,但有些不会。