我在 Mac OSX 10.9.5m 上运行 python 2.7.10,但它不起作用。这是代码:
# YourName.py
name = input("What is your name?\n")
print("Hi, ", name)
错误如下:
Python 2.7.10 (v2.7.10:15c95b7d81dc, May 23 2015, 09:33:12)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
What is your name?
Ella
Traceback (most recent call last):
File "/Users/CentCom/Downloads/code/ch01/YourName.py", line 2, in <module>
name = input("What is your name?\n")
File "<string>", line 1, in <module>
NameError: name 'Ella' is not defined
>>>
在Python 2.7.1中使用
raw_input
:
name = raw_input("What is your name?\n")
否则你必须依赖用户足够了解才能输入带引号的字符串。像
"David"
,或者输入尝试评估名称(变量/对象/等),如果范围内没有这样的名称,您将收到错误。
或者,使用异常处理:
name = input("What is your name?\n")
try:
print("Hi, ", name)
except NameError, e:
print("Please enclose your input with quotes")
对于您使用的 Python 版本,您应该使用
raw_input
而不是 input
。
您可以更改这行代码:
name = input("What is your name?\n")
对此:
name = raw_input("What is your name?\n")
当您使用 Python 2 时,最好只使用
raw_input
。当您使用 input
时,Python 将始终尝试“评估”您输入的表达式。
这里解释了为什么使用
input
对于 Python 2 来说不是一个好的选择:
因此,如果您输入 5,它将返回数字 5(Python 中的
int
)。
但是如果你输入 bob,它会认为你给了 Python 一个名为 bob 的“变量”来求值,但 bob 在你的程序中并没有被定义为变量。这个例子实际上给出了您收到的错误:
NameError: name 'bob' is not defined
在Python中,如果你输入一个不存在的变量,那就是你得到的错误。看看我做的这个例子:
我尝试打印变量 d 而不为 d 分配任何内容:
>>> d
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'd' is not defined
因此,如果您想将 bob 作为字符串提供给您的输入,
input
希望您提供 bob 引号以使其成为有效字符串,如下所示:“bob”。为了避免这一切,raw_input 是正确的选择。
如果您决定使用 Python 3,Python 3 会将
raw_input
替换为 input
。但它的行为与 Python 2 的 raw_input
完全相同。
祝您编程顺利!
这是有关 raw_input 的文档:
Input
尝试评估给定字符串是否为程序。
对于单独的字符串,请使用 raw_input
。或者你必须引用输入的字符串,以允许 python 将其解释为字符串。
例如:
"Ella"
用于获取用户输入的Python 3.X 语法
name = input("What is your name?\n")
用于获取用户输入的Python 2.X 语法
name = raw_input("What is your name?\n")