Python Traceback(最近一次调用最后一次)

时间:2016-02-18 22:38:12

标签: python python-2.7

执行此代码时出错:

nameUser=input("What is your name ? ")    
print (nameUser)

错误消息是

  

追踪(最近一次通话):     文件“C:/Users/DALY/Desktop/premier.py”,第1行,in     文件“”,第1行,in   NameError:名称'klj'未定义

发生了什么事?

2 个答案:

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