我很清楚这是一个菜鸟问题,但我似乎无法找到解决方案,我对编程很新,但渴望学习。我正在浏览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
请解释问题所在。
谢谢
答案 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
的变量,当然,该变量不存在。