我很清楚这是一个菜鸟问题,但我似乎找不到解决方案,我对编程很陌生,但渴望学习。我正在用 python 浏览第一个 google 课程,这是我得到的错误。
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
请解释一下问题是什么。
谢谢你
在 Python 2 中,input() 接受一个应立即执行的字符串。如果您想将给定的输入保存为字符串(您的意图),请使用 raw_input()。
尝试用
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
的变量,当然,该变量不存在。