为什么这个循环的结果是21?

时间:2013-10-24 10:45:37

标签: python loops

任何人都可以给我一个完整的代码示例吗?如果我打印总数,为什么结果总数是21(即当前的总和)???

end=6
total = 0
current = 1
while current <= end:
    total += current
    current += 1

print total

3 个答案:

答案 0 :(得分:11)

因为1+2+3+4+5+621。为什么那么神秘?

答案 1 :(得分:3)

通常可以通过引入一些基本的调试来深入了解这类事情。我在代码循环中添加了一个打印,以便您可以看到每次迭代后发生的事情:

end=6
total = 0
current = 1
while current <= end:
    total += current
    current += 1
    print "total: ", total, "\tcurrent: ", current 

print total

输出结果为:

total:  1   current:  2
total:  3   current:  3
total:  6   current:  4
total:  10  current:  5
total:  15  current:  6
total:  21  current:  7
21

总结这里发生的事情,总和当前分别初始化为0和1,第一个循环总数是使用total += current设置的(相当于total = total + current),即总数= 0+然后,电流增加1到2,所以在第一次循环之后它们是1&amp;分别为2。

在第二个循环中total += current将被评估为total = 1 + 2(前一个循环结束时的值),依此类推。

答案 2 :(得分:2)

你有什么期望? 1 + 2 + 3 + 4 + 5 + 6 = 21

这里是每个循环的起始值和值

total   0 -> 1 -> 3 -> 6 -> 10 -> 15 -> 21
current 1 -> 2 -> 3 -> 4 ->  5 ->  6 ->  7