Python循环编程,循环不运行

时间:2012-08-11 11:39:48

标签: python loops

我是Python的新手,虽然我在教程中逐字输入,但我得不到结果。基本上我期待从范围内得到多个答案,但我只得到一个结果。

>>> sum = 0
>>> for i in range (10): sum = sum + i
>>> print (sum)    
45

我哪里错了?

3 个答案:

答案 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 ()等等

对于任何Python程序员来说,

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))