你好我是python编程的新手,我试图整理一个小片段,看看事情是如何运作的,但我想我的代码有问题:
users = []
while True:
new_user = input("Enter a user")
if new_user == 'quit':
break
else:
users.append(new_user)
for user in users:
print(user)
我得到的错误是这样的:
Traceback (most recent call last):
File "/home/mark/workspace/Gest/launcher.py", line 4, in <module>
new_user = input("Enter a user")
File "/root/.p2/pool/plugins/org.python.pydev_4.3.0.201508182223/pysrc/pydev_sitecustomize/sitecustomize.py", line 141, in input
return eval(raw_input(prompt))
File "<string>", line 1, in <module>
NameError: name 'david' is not defined
答案 0 :(得分:2)
通过检查代码,您似乎使用的是Python 2.x,并且2.x input()
实际上用于评估用户的输入,因此您必须使用raw_input()
来来自用户的输入,请记住raw_input()
总是返回一个字符串。
users = []
while True:
new_user = raw_input("Enter a user")
if new_user == 'quit':
break
else:
users.append(new_user)
for user in users:
print(user)
答案 1 :(得分:0)
您需要使用raw_input()
而不是input()
。普通input()
函数使用python代码,而raw_input()
使用户输入string
。我也可以建议在你的提示上添加一些填充,使其更具可读性吗?
users = []
while True:
new_user = raw_input("Enter a user: ")
if new_user == 'quit':
break
else:
users.append(new_user)
for user in users:
print(user)
答案 2 :(得分:0)
您的代码适用于Python 3,但不适用于Python 2.在Python 2中,为响应input
函数而输入的文本被评估为Python代码,因此未定义david
的错误
raw_input
就是你想要的Python 2。
请参阅:
https://docs.python.org/2/library/functions.html#input
和
https://docs.python.org/2/library/functions.html#raw_input
如果切换到Python 3,则代码是正确的,因为Python 3中的input
相当于Python 2中的raw_input
。
有关input
。