Python回溯(最后一次调用)
我在执行此代码时出错:Python回溯(最后一次调用),python,python-2.7,Python,Python 2.7,我在执行此代码时出错: nameUser=input("What is your name ? ") print (nameUser) 错误消息是 回溯(最近一次呼叫最后一次): 文件“C:/Users/DALY/Desktop/premier.py”,第1行,在 文件“”,第1行,在 NameError:未定义名称“klj” 发生了什么事?您正在使用Python 2,函数将尝试对输入的表达式求值。因为您输入了一个字符串,Python将其视为一个名称并尝试对其求值。如果没有使用该名称定
nameUser=input("What is your name ? ")
print (nameUser)
错误消息是
回溯(最近一次呼叫最后一次):
文件“C:/Users/DALY/Desktop/premier.py”,第1行,在
文件“”,第1行,在
NameError:未定义名称“klj”
发生了什么事?您正在使用Python 2,函数将尝试对输入的表达式求值。因为您输入了一个字符串,Python将其视为一个名称并尝试对其求值。如果没有使用该名称定义变量,则会出现
namererror
异常
要解决此问题,在Python 2中,可以使用。这将返回用户输入的字符串,并且不会尝试对其求值
请注意,如果您使用的是Python3,
input()
的行为与Python2中的raw\u input()
的行为相同。在Python2中,input
被计算,input()
相当于eval(raw\u input())
。当您输入klj时,Python尝试计算该名称并引发错误,因为该名称未定义
使用raw\u 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
演示3:使用原始输入获取字符串
>>> raw_input()
klj
'klj'
以字符串形式输入您的姓名,例如'Tom'
。或者,使用raw\u input
而不是input
一些版本的python使用input()
作为键盘输入函数,而其他版本使用raw\u input()
。尝试改用raw_input()
。是的,它可以与raw_input()配合使用。)为什么功能是这样设计的。该函数的目的是只接受输入。需要对输入的内容进行评估。@darth\u编码器:raw\u input()
的目的是只接受输入并将其作为字符串返回<代码>输入()
不同;它评估输入。这就是这两个函数的定义。由于Python3中的raw\u input()
被重命名为input()
,并且input()
被完全删除,因此它似乎不值得因名称不当(IMHO)input()
函数而引起混淆。它有什么目的?如果您想执行用户输入,这是一个显而易见的应用程序,但我想了解input
函数背后的设计语义。我仍然不清楚计算输入的确切含义。@darth\u coder:在Python 2中input()
相当于eval(raw\u input())
,所以“计算输入”就是这个意思。有关更多详细信息,请阅读eval()
的功能。正如我所建议的,存在input()
的一个原因是您可以轻松地评估用户输入。如果这不是一个令人满意的解释,那么我认为您的问题可以归结为“eval()的目的是什么?”,因为这就是最终发生的事情。
>>> raw_input()
klj
'klj'