我正在尝试创建一个for循环,提示用户做3次爱好,然后将每个人添加到爱好中。
这是我到目前为止所提出的:
hobbies = []
for tries in range(3):
hobby = raw_input(input("what's your favorite hobby?: "))
hobbies.append(hobby)
在用户输入提示输入响应后,让我们说我的回答是“竞争性吃”,我在终端中收到以下错误:
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
我确定我在这里犯了一个非常愚蠢的错误,但我似乎无法弄清楚我做错了什么。
答案 0 :(得分:3)
input
相当于eval(raw_input)
。在你的例子中,它完全是多余的。只需将其删除并仅保留raw_input
:
hobby = raw_input("what's your favorite hobby?: ")
编辑:
要回答评论中的问题,input
接受字符串并尝试将其作为python表达式进行评估(有关详细信息,请参阅eval
's documentation)。因为&#34;竞争性饮食&#34;不是你已经定义的变量,它不能被评估,因此NameError
。
答案 1 :(得分:1)
您只需要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
是合适的。