Python input()给出没有定义

时间:2014-12-20 04:59:15

标签: python

我从下面的某本书中得到了一个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

它出了什么问题? 谢谢!

2 个答案:

答案 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上运行,但有些不会。