【问题标题】:Python 3 Input Function and Sublime Text Build SystemPython 3 输入函数和 Sublime Text 构建系统
【发布时间】:2018-01-04 20:16:39
【问题描述】:

我有一个关于 Sublimetext3 构建系统的问题。我有以下代码(如下)从用户那里得到响应。我安装了 Python3 并将其用作构建系统。我最初使用函数input(),因为Python3 取代了Python2 的raw_input。这在 Sublime 文本控制台上编译。

start = input("Would you like to play? (Y/N) ")
if(start.lower() == "y"):
    print(start)

由于 Sublime text 无法从用户那里获得响应,我使用 Python3 的 REPL 作为构建系统。但是,我无法让上面的代码工作。它一直给我一个

NameError: name 'Y' is not defined

我可以让它通过的唯一方法是使用引号输入用户输入,即"y"

但是,当我使用 REPL 构建系统将 input 更改为 raw_input 时,它奇迹般地工作了(见下文)。它看起来像是 Python 3 和 Python 2 的混合体,因为打印函数 print() 仍然使用括号。

有人知道如何获取不带引号的输入吗?谁能解释一下为什么下面的代码混合了 Python3 和 Python2?

start = raw_input("Would you like to play? (Y/N) ")
if(start.lower() == "y"):
    print(start)

【问题讨论】:

  • 很可能只是python2。 print(...) 是有效的python2,它只是被解释为print (...)

标签: python python-3.x sublimetext3 raw-input


【解决方案1】:

在 python3 中 raw_input 被重命名为 input 并且 python2 的 input 被删除。 Python2 的版本将输入解析为代码,这就是您收到此错误的原因,您需要使用raw_input

您也可以像这样破解它,这样它就可以交叉兼容了。

try:
   input = raw_input
except NameError:
   pass

如果你想要一种更有条理的方式,你也可以从sys.stdinread

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 2015-03-01
    • 2013-10-14
    • 2014-07-07
    • 1970-01-01
    • 2018-04-27
    相关资源
    最近更新 更多