[背景信息:我目前正在完成MIT edx网站上的Python编程课程,正在研究while循环部分。]
我一直在努力解决的问题如下:"写一个while循环,将值1到end(包括1和12)相加。 end是我们为您定义的变量。"
当我尝试回答这个问题时,我说:
while end != 0:
total = 0 + end
end = end-1
print total
我输入的任何值的返回结果'结束'是1,这显然是不正确的。
然而,当我再次尝试时,我定义了总数'循环之外,并把:
total = 0
while end != 0:
total = total + end
end = end-1
print total
这有效!
我的问题是:为什么我放入的第一个代码不起作用?定义' total'有什么意义?在循环之外?
答案 0 :(得分:1)
问题在于total = 0 + end
。这样做是将end
的当前值分配给total
。由于end
最终成为1
,因此总数为end
。您需要将total
添加到正在运行的total = total + end
:
while end != 0:
total += end
end -= 1
print total
或:
{{1}}
答案 1 :(得分:1)
在第一个代码块中,每次运行total = 0 + end
时,都会重置total
total = 0 + 10
total = 0 + 9
total = 0 + 8
...
total = 0 + 1
最后一行,total = 0 + 1
等于1
在第二个循环中,您正在使用之前的total
:
total = 0
total = 0 + 10
total = 10 + 9
total = 19 + 8
...
total = 54 + 1
每次通过循环时,总计会增加并使用。在第一个中,你是在每个循环中编写总数。
答案 2 :(得分:0)
当你在while循环中定义total
时,它会在每次循环时重新分配给0 + end
,在程序结束时为1。当您在外部定义它时,它会将total
设置为0,然后对于while
中的每个循环,它会继续向其添加值。
另外,旁注,您可以将total = total + end
写为total += end
,这意味着同样的事情,但实际上(非常)更快一点。
答案 3 :(得分:0)
在while循环中包含total
的示例中,每次end != 0
时都会重新定义它,并且在end
等于1之后立即打印它({{1}在end等于1之后,会让你摆脱while循环。
在另一个例子中,你没有通过while循环重新定义end = end-1
每次旅行,这会累积你期望的答案。