我最近正在创建一个文本冒险游戏,但几乎立即遇到了输入问题。当我使用字符串而不是整数时,它会给出错误消息。发生这种情况可能有一个明显的原因,但我只是没有看到它。
这是一个例子:
b = input("Do you like video games? y/n")
if b == "y":
print("Good For You!")
if b == "n":
print("What!? (Just joking)")
我做了很多研究,这似乎对大多数其他人都有效。但是当我使用它时,我收到此错误:
Do you like video games? y/ny
Traceback (most recent call last):
File "/home/ubuntu/workspace/Test.py", line 1, in <module>
b = input("Do you like video games? y/n")
File "<string>", line 1, in <module>
NameError: name 'y' is not defined
如您所见,它表示 y 未定义。我对基本的 python 编程很熟悉,但我不擅长阅读错误消息。如果你们能给我答案,那就太好了。谢谢!
使用
input
函数产生的错误是 Python 2 的典型错误,而不是 Python 3。我怀疑您实际上使用的是 Python 2。
要确定使用
python
命令时运行的 python 版本:
$ python --version
# example output: Python 2.7.3
为了确保使用 python 3 运行脚本,请执行以下操作:
$ python3 scriptname.py
raw_input
,因为input
函数尝试评估用户的输入,就好像它是Python代码一样。
因此,当用户输入
'y'
时,input
函数会尝试计算 表达式 y
,在这种情况下,这意味着名为 y
的 变量,但它不存在。
因此对于 python 2,您的代码应该如下所示:
b = raw_input("Do you like video games? y/n")
# etc
input
函数取代了 raw_input
,因此您的代码将按原样运行。
不幸的是,您实际上使用的是 Python 2,而不是 3。由于您在 Python
2中使用
input()
,因此 input()
实际上是在计算表达式,而不是 Python 3 中相当于 Python 2 的 raw_input()
。 input()
在这种情况下,无法找到名称为 y
(输入)的变量并引发错误。
只需将您的 Python 版本从 2.x 更改为 3.x 就可以了。如果您坚持使用 Python 2,请使用
raw_input()
代替:
b = raw_input("Do you like video games? y/n")