名称未定义错误

时间:2012-02-16 16:59:39

标签: python string

我很清楚这是一个菜鸟问题,但我似乎无法找到解决方案,我对编程很新,但渴望学习。我正在浏览python中的第一个google clases,这是我得到的错误。

def both_ends(s):
  print s[0:2], s[3:5]
  return

x = input('...: ')
both_ends(x)

sergei@sergei-MS-7253:~/Desktop/p2$ python test2.py
...: haloj
Traceback (most recent call last):
  File "test2.py", line 10, in <module>
    x = input('...: ')
  File "<string>", line 1, in <module>
NameError: name 'haloj' is not defined

请解释问题所在。

谢谢

3 个答案:

答案 0 :(得分:5)

在Python 2中,input()接受一个应该立即执行的字符串。如果要将给定输入保存为字符串(您的意图),请使用raw_input()

答案 1 :(得分:2)

尝试使用raw_input代替input

要进行扩展,您可能正在阅读一个假设您正在使用Python 3.x的教程,并且您可能正在使用Python 2.x.在Python 2.x中,input实际上会评估它获得的文本,这意味着它认为haloj是一个变量名;因此NameError。在Python 3.x中,input只是将文本作为字符串返回。

您的另一个选择是输入'haloj'而不是haloj。 (注意添加的引号。)

答案 2 :(得分:0)

为此,您应使用raw_input()代替input()。使用input()时,python实际上正在执行eval(raw_input()) - 所以它试图在你输入的内容上调用eval。当您输入'haloj'时,python会查找名为haloj的变量,当然,该变量不存在。