0

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

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

print total
4

3 回答 3

11

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

于 2013-10-24T10:49:47.613 回答
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

总结这里发生的事情,total 和 current 分别初始化为 0 和 1,在第一个循环中,使用(total += current相当于total = total + current第一个循环它们分别是 1 和 2。

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

于 2013-10-24T10:52:58.333 回答
2

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

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

total   0 -> 1 -> 3 -> 6 -> 10 -> 15 -> 21
current 1 -> 2 -> 3 -> 4 ->  5 ->  6 ->  7
于 2013-10-24T10:57:35.493 回答