pythonshell和IDLE之间的不同结果

pythonshell和IDLE之间的不同结果,python,python-3.x,interpreter,python-idle,Python,Python 3.x,Interpreter,Python Idle,下面的代码正在打印从1到1000的5的倍数之和 s = 0 for i in range(1, 1001): if i % 5 == 0: s += i print(s) 如果我在空闲状态下运行此代码,结果是100500,但是在shell中有一个错误SyntaxError:invalid syntax,出现在print上。为什么IDLE和shell给出不同的结果?我的Python版本是3.7。在Python shell(规范名称:REPL)中,您需要用空行终止缩进块,因此您应该在REP

下面的代码正在打印从1到1000的5的倍数之和

s = 0
for i in range(1, 1001):
    if i % 5 == 0: s += i
print(s)
如果我在空闲状态下运行此代码,结果是100500,但是在shell中有一个错误SyntaxError:invalid syntax,出现在
print
上。为什么IDLE和shell给出不同的结果?我的Python版本是3.7。

在Python shell(规范名称:REPL)中,您需要用空行终止缩进块,因此您应该在REPL中运行此命令:

s = 0
for i in range(1, 1001):
    if i % 5 == 0: s += i

print(s)

请注意,
print
之前的空行,这是REPL中所必需的,但在从文件(或空闲)运行代码时不是这样。

您只是在shell中键入代码(而不是从文件运行)?如果是这样,您需要在打印前输入一个空行来终止前面的多行语句。IDLE的Shell也需要一个空行。不同之处在于IDLE自动缩进第三行,因此必须退格才能在没有缩进的情况下输入
print
,使其成为单独的语句。