Python用户输入评估错误

Python用户输入评估错误,python,Python,您好,我是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 (m

您好,我是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
回溯(最近一次呼叫最后一次):
文件“/home/mark/workspace/Gest/launcher.py”,第4行,在
新建用户=输入(“输入用户”)
文件“/root/.p2/pool/plugins/org.python.pydev_4.3.0.201508182223/pysrc/pydev_sitecustomize/sitecustomize.py”,第141行,输入
返回评估(原始输入(提示))
文件“”,第1行,在
NameError:未定义名称“david”

通过检查代码,您似乎在使用Python 2.x,在2.x中,
input()
实际上用于评估用户的输入,因此您必须使用
raw\u input()
从用户获取输入,请记住
raw\u 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)

您需要使用
raw\u input()
而不是
input()
。正常的
input()
函数使用python代码,而
raw\u 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)

您的代码适用于Python 3,但不适用于Python 2。在Python2中,响应
输入
函数而输入的文本作为Python代码计算,因此未定义关于
david
的错误

raw_input
是您在Python2上想要的

见:

以及:

如果切换到Python3,代码是正确的,因为Python3中的
input
相当于Python2中的
raw\u input


有关
输入的Python 3文档,请参见
使用
原始输入()
,假设您使用的是
Python 2.x
。看起来是Python 2.x,但是最好使用
打印用户
而不是
打印(用户)