如果Input Equals Strings Do(Something)Not Working Python 3

时间:2016-07-26 22:30:54

标签: python string python-3.x input

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

以下是一个例子:

    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编程没问题,但是我在阅读错误消息时非常糟糕。如果你们能给我一个答案那就太棒了。谢谢!

2 个答案:

答案 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

在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,因此您的代码将按原样运行。

答案 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()