我最近一直在创建一个文本冒险游戏,但几乎立即遇到输入问题。当我使用字符串而不是整数时,它给我错误消息。可能有一个明显的原因,这种情况正在发生,我只是没有看到它。
以下是一个例子:
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编程没问题,但是我在阅读错误消息时非常糟糕。如果你们能给我一个答案那就太棒了。谢谢!
答案 0 :(得分:0)
使用input
函数的错误是Python 2的典型错误,而不是Python 3.我怀疑你实际上在使用Python 2.
使用python
命令确定运行哪个版本的python:
$ python --version
# example output: Python 2.7.3
要确保使用python 3运行脚本,请执行以下操作:
$ python3 scriptname.py
在Python 2中,为了获得用户输入,您实际上需要使用函数raw_input
,因为input
函数尝试评估用户的输入,就好像它是python代码一样。
因此,当用户输入'y'
时,input
函数会尝试评估表达式 y
,在这种情况下,这意味着名为y
的变量,它不存在。
因此对于python 2,您的代码应如下所示:
b = raw_input("Do you like video games? y/n")
# etc
在python 3中,input
函数取代raw_input
,因此您的代码将按原样运行。
答案 1 :(得分:0)
你实际上是在使用Python 2,而不是3。由于您在Python 2 中使用input()
,input()
实际上正在评估表达式,而不是Python 3等同于Python 2&#39; s {{ 1}}。在这种情况下,raw_input()
未能找到名为input()
(输入)的变量并引发错误。
只需将Python版本从2.x更改为3.x即可。如果您坚持使用Python 2,请改用y
:
raw_input()