任何人都可以给我这个代码的完整示例吗?如果我打印总计,为什么结果总计为 21(即当前的总和)???
end=6
total = 0
current = 1
while current <= end:
total += current
current += 1
print total
因为1+2+3+4+5+6
是21
。为什么这么神秘?
您通常可以通过引入一些基本的调试来深入了解这类事情。我在你的代码循环中添加了一个打印,这样你就可以看到每次迭代后发生了什么:
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(上一个循环结束时的值)等等。
你有什么期待?1 + 2 + 3 + 4 + 5 + 6 = 21
这是每个循环的起始值和值
total 0 -> 1 -> 3 -> 6 -> 10 -> 15 -> 21
current 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7