如果输入等于字符串则(某事)不起作用Python 3 [重复]

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

我最近正在创建一个文本冒险游戏,但几乎立即遇到了输入问题。当我使用字符串而不是整数时,它会给出错误消息。发生这种情况可能有一个明显的原因,但我只是没有看到它。

这是一个例子:

    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 编程很熟悉,但我不擅长阅读错误消息。如果你们能给我答案,那就太好了。谢谢!

python string python-3.x input
2个回答
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

在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

在 python 3 中,

input
函数取代了
raw_input
,因此您的代码将按原样运行。


0
投票

不幸的是,您实际上使用的是 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")
© www.soinside.com 2019 - 2024. All rights reserved.