Python 3输入函数和Sublime文本构建系统

时间:2018-01-04 20:16:40

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

我对Sublimetext3构建系统有疑问。我有以下代码(下面)来自用户的响应。我安装了Python3并将其用作构建系统。我最初使用函数input(),因为Python3取代了Python2的raw_input。这在Sublime文本控制台上编译。

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

由于Sublime文本无法从用户那里获得响应,因此我使用REPL for Python3作为构建系统。但是,我无法使上述代码生效。它一直给了我一个

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)

1 个答案:

答案 0 :(得分:1)

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

或者你可以像这样破解它,以便它可以交叉兼容。

try:
   input = raw_input
except NameError:
   pass

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