【问题标题】:If Input Equals Strings Do (Something) Not Working Python 3 [duplicate]如果输入等于字符串做(某事)不工作 Python 3 [重复]
【发布时间】:2016-07-26 22:30:53
【问题描述】:

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

这是一个例子:

    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 3。
  • 你确定你使用的是 Python 3 吗?对我来说,只有当我在 Python 2 中运行您的代码时才会出现该错误。
  • 如果您尝试在 linux 上运行您的代码,请确保您使用 python3 Test.py 从终端运行它
  • NameError from Python input() functionthisthisthis 的可能重复项...

标签: python string python-3.x input


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    不幸的是,您实际上使用的是 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")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      相关资源
      最近更新 更多