名称未定义错误

1 投票
3 回答
3573 浏览
提问于 2025-04-17 13:08

我知道这个问题可能很基础,但我找不到解决办法。我刚开始学习编程,非常想学好。我正在参加谷歌的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()这个函数。

撰写回答