名称未定义错误
我知道这个问题可能很基础,但我找不到解决办法。我刚开始学习编程,非常想学好。我正在参加谷歌的Python入门课程,但遇到了这个错误。
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
为了这个目的,你应该使用 raw_input()
而不是 input()
。当你使用 input()
的时候,实际上 Python 是在执行 eval(raw_input())
,也就是说它在尝试对你输入的内容进行计算。当你输入 'haloj' 时,Python 会去找一个叫 haloj
的变量,但这个变量当然是不存在的。
2
试试用 raw_input
代替 input
。
简单说,你可能在看一个假设你使用的是 Python 3.x 的教程,但实际上你可能在用 Python 2.x。在 Python 2.x 中,input
会把你输入的内容当成代码来执行,这就意味着它会把 haloj
当成一个变量名来处理,所以才会出现 NameError
的错误。而在 Python 3.x 中,input
只是把你输入的内容当作字符串返回。
另外一个选择是输入 'haloj'
,也就是在 haloj
外面加上引号。(注意引号的添加。)
4
在Python 2中,input()这个函数会把你输入的内容当作代码直接执行。如果你想把输入的内容当作字符串保存(也就是你想要的效果),应该使用raw_input()这个函数。