我是Python的新手,虽然我在教程中逐字输入,但我得不到结果。基本上我期待从范围内得到多个答案,但我只得到一个结果。
>>> sum = 0
>>> for i in range (10): sum = sum + i
>>> print (sum)
45
我哪里错了?
答案 0 :(得分:8)
sum
的 注意 是一个坏主意,因为sum()已经是Python内置函数。我在这里使用total
代替:
total = 0
for i in range(10):
total = total + i # same as total += i
print(total)
给出:
0
1
3
6
10
15
21
28
36
45
这是您期望/想要的输出吗?
在Python中,空格/缩进至关重要,所以如果你想让一个语句成为函数/ loop / etc的一部分,你需要将它缩进到与块中其他语句相同的级别
相比之下,您的原始代码看起来更像传统格式:
total = 0
for i in range(10):
total = total + i # same as total += i
print(total)
因此,您可以看到print
在循环执行完毕后仅被称为一次。 缩进使两个版本之间完全不同。
最后,PEP8 - The Python Style Guide提到应该no space between the function name and its arguments,因此range(10)
首选range (10)
,print()
print ()
等等
PEP 8都是很好的阅读。
答案 1 :(得分:2)
这实际上是你应该期待的正确答案。 Here's proof(希望你不介意一点JS证明我的观点)
现在,如果您希望在循环的每次迭代中打印sum
变量,您应该将代码修改为如下所示:
sum = 0
for i in range (10):
sum = sum + i
print (sum)
间距在Python中很重要。非常重要。
答案 2 :(得分:2)
这里没有错。在每一步中,你将下一个数字加到sum中,所以在每一步中它都是0,1,3,6,....,45然后你打印出那个答案。
如果您想要打印出每一步,您需要确保打印在for块内:
for i in range (10):
sum = sum + i
print (sum)
(注意缩进)
PS。不要将sum
用作变量名。它已经是一个全局函数,所以通过赋值sum=0
你删除了旧的含义 - 在新的python shell中检查sum(range(10))