我对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)
答案 0 :(得分:1)
在python3中,raw_input
被重命名为input
,而python2' s input
被删除。 Python2的版本将输入解析为代码,这就是您收到此错误的原因,您需要使用raw_input
。
或者你可以像这样破解它,以便它可以交叉兼容。
try:
input = raw_input
except NameError:
pass
如果你想要一种更有条理的方式,你也可以read
sys.stdin
。