名称未定义错误[重复]

问题描述 投票:0回答:3

我很清楚这是一个菜鸟问题,但我似乎找不到解决方案,我对编程很陌生,但渴望学习。我正在用 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 string
3个回答
4
投票

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


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
的变量,当然,该变量不存在。

© www.soinside.com 2019 - 2024. All rights reserved.