带有 Input() 的 Python 代码在 Sublime REPL 中给出语法错误,但可以与 Python Shell 一起使用 [重复]

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

我在 python 3 中输入了一段代码,python shell 运行得非常好并给出了正确的输出。我将此代码传输到 Sublime Text 3,下载了 sublime REPL 包,然后用它来运行我的代码。但是,当我运行它并使用 REPL 在 Sublime 中输入输入时,它告诉我存在语法错误。这是发现语法错误的行:

dataGiven = sorted([float(x) for x in input("Enter data separated by a space (At least 3 values of data must be entered) ").split()])

但是,没有语法错误,因为 python shell 正确运行了代码。请帮忙。我发现 Sublime text 确实很有帮助,但由于这个输入,它无法正常运行。如果您需要的话,我愿意发布更大的代码段。提前致谢。

编辑

错误截图:

Traceback (most recent call last):
  File "Untitled.py", line 708, in <module>
    dataGiven = sorted([float(x) for x in input("Enter data separated by a space (At least 3 values of data must be entered) ").split()])
  File "<string>", line 1
    78 67 45
        ^
SyntaxError: invalid syntax

***Repl Closed***
python sublimetext3 sublimetext python-2.x
1个回答
2
投票

听起来 Sublime 正在使用 Python 2 解释器运行它。

input
尝试
eval
在 Python 2 中输入的字符串,这大约是在运行时获取
SyntaxError
的唯一方法(因为大多数任意用户输入的字符串在语法上都不是合法的 Python 代码)。尝试将代码更改为:

import sys
print(sys.version_info)

它将告诉您它正在运行的实际版本。如果它是 Python 2,并且您需要它像在 Python 3 上一样在 Python 2 上运行,请切换到

raw_input
函数,或者屏蔽版本差异,添加:

if sys.version_info < (3,):
    input = raw_input

到文件顶部,在 Python 2 上将

input
替换为
raw_input
,因此其行为就像在 Python 3 上一样。

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