执行此代码时出错:
nameUser=input("What is your name ? ")
print (nameUser)
错误消息是
追踪(最近一次通话): 文件“C:/Users/DALY/Desktop/premier.py”,第1行,in 文件“”,第1行,in NameError:名称'klj'未定义
发生了什么事?
答案 0 :(得分:3)
您正在使用Python input()
函数尝试评估输入的表达式。因为您输入了一个字符串,Python会将其视为名称并尝试对其进行评估。如果没有使用该名称定义的变量,您将获得NameError
例外。
要解决此问题,可以在Python 2中使用raw_input()
。这将返回用户输入的字符串,并且不会尝试对其进行评估。
请注意,如果您使用的是Python 3,input()
的行为与Python 2中的raw_input()
行为相同。
答案 1 :(得分:3)
在Python2中,input
被评估,input()
等同于eval(raw_input())
。当您输入klj时,Python会尝试评估该名称并引发错误,因为该名称未定义。
使用raw_input
从Python2中获取用户的字符串。
演示1:klj
未定义:
>>> input()
klj
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'klj' is not defined
演示2:klj
已定义:
>>> klj = 'hi'
>>> input()
klj
'hi'
演示3:获取raw_input
的字符串:
>>> raw_input()
klj
'klj'