2012-02-16 206 views
1

我很清楚,这是一个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 

请解释一下问题所在。

谢谢

回答

5

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

+0

谢谢你,这解决了我的问题,并帮助我理解它。 – Sergei 2012-02-16 17:10:05

2

尝试raw_input而不是input

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

您的其他选项是输入'haloj'而不是haloj。 (注意加引号。)

0

为此,您应该使用raw_input()而不是input()。当你使用input()时,python实际上是在做一个eval(raw_input()) - 所以它试图调用你输入的eval。当你输入'haloj'时,python寻找一个名为haloj的变量,当然这个变量不存在。