名称未定义错误
问题描述:
我很清楚,这是一个noob问题,但我似乎找不到解决方案,我很新编程但渴望学习。我正在浏览python中的第一个google clases,这是我得到的错误。名称未定义错误
def both_ends(s):
print s[0:2], s[3:5]
return
x = input('...: ')
both_ends(x)
[email protected]:~/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
请解释一下问题所在。
谢谢
答
尝试raw_input
而不是input
。
为了扩展,您可能正在阅读一篇假设您使用Python 3.x的教程,并且您可能正在使用Python 2.x.在Python 2.x中,input
实际上评估它获取的文本,这意味着它认为haloj
是一个变量名;因此NameError
。在Python 3.x中,input
只是将该文本作为字符串返回。
您的其他选项是输入'haloj'
而不是haloj
。 (注意加引号。)
答
为此,您应该使用raw_input()
而不是input()
。当你使用input()
时,python实际上是在做一个eval(raw_input())
- 所以它试图调用你输入的eval。当你输入'haloj'时,python寻找一个名为haloj
的变量,当然这个变量不存在。
谢谢你,这解决了我的问题,并帮助我理解它。 – Sergei 2012-02-16 17:10:05