NameError 返回 Python raw_input 提示
NameError returned with Python raw_input prompt
我正在尝试创建一个 for 循环,提示用户输入爱好 3 次,然后将每一次附加到爱好。
这是我到目前为止的想法:
hobbies = []
for tries in range(3):
hobby = raw_input(input("what's your favorite hobby?: "))
hobbies.append(hobby)
我在用户输入提示下输入响应后,假设我的响应是 "competitive eating",我在终端中收到以下错误:
Traceback (most recent call last):
File "hobbyprompt.py", line 12, in <module>
hobby = raw_input(input("what's your favorite hobby?: "))
File "<string>", line 1, in <module>
NameError: name 'competitive eating' is not defined
我确定我在这里犯了一个非常愚蠢的错误,但我似乎无法弄清楚我做错了什么。
您只需要 raw_input
,而不是 input
后跟 raw_input
。使用
hobby = raw_input("what's your favorite hobby?: ")
在 python 3.x 中,input
执行 raw_input
在以前版本中执行的操作。但是在 Python 3 之前,input
除了从 stdin 读取一行之外,还对该行求值,就好像它是一个有效的 Python 表达式一样。 raw_input
是备选方案,因此您应该使用其中之一,而不是两者。这里,raw_input
是合适的。
input
等价于 eval(raw_input)
。在您的示例中它是完全多余的。放下它并仅保留 raw_input
:
hobby = raw_input("what's your favorite hobby?: ")
编辑:
为了回答评论中的问题,input
获取字符串并尝试将其计算为 python 表达式(有关详细信息,请参阅 eval
's documentation)。由于 "competitive eating" 不是您已经定义的变量,因此无法对其进行评估,因此 NameError
.
我正在尝试创建一个 for 循环,提示用户输入爱好 3 次,然后将每一次附加到爱好。
这是我到目前为止的想法:
hobbies = []
for tries in range(3):
hobby = raw_input(input("what's your favorite hobby?: "))
hobbies.append(hobby)
我在用户输入提示下输入响应后,假设我的响应是 "competitive eating",我在终端中收到以下错误:
Traceback (most recent call last):
File "hobbyprompt.py", line 12, in <module>
hobby = raw_input(input("what's your favorite hobby?: "))
File "<string>", line 1, in <module>
NameError: name 'competitive eating' is not defined
我确定我在这里犯了一个非常愚蠢的错误,但我似乎无法弄清楚我做错了什么。
您只需要 raw_input
,而不是 input
后跟 raw_input
。使用
hobby = raw_input("what's your favorite hobby?: ")
在 python 3.x 中,input
执行 raw_input
在以前版本中执行的操作。但是在 Python 3 之前,input
除了从 stdin 读取一行之外,还对该行求值,就好像它是一个有效的 Python 表达式一样。 raw_input
是备选方案,因此您应该使用其中之一,而不是两者。这里,raw_input
是合适的。
input
等价于 eval(raw_input)
。在您的示例中它是完全多余的。放下它并仅保留 raw_input
:
hobby = raw_input("what's your favorite hobby?: ")
编辑:
为了回答评论中的问题,input
获取字符串并尝试将其计算为 python 表达式(有关详细信息,请参阅 eval
's documentation)。由于 "competitive eating" 不是您已经定义的变量,因此无法对其进行评估,因此 NameError
.