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

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

我对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)
python python-3.x sublimetext3 raw-input
1个回答
1
投票

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

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

try:
   input = raw_input
except NameError:
   pass

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

© www.soinside.com 2019 - 2024. All rights reserved.