Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python回溯(最后一次调用)_Python_Python 2.7 - Fatal编程技术网

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'