Python用户输入eval错误

时间:2015-09-13 18:16:33

标签: 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 (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

3 个答案:

答案 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

的Python 3文档,请参阅https://docs.python.org/3.5/library/functions.html#input