在'之外定义变量。环

时间:2015-07-20 18:22:22

标签: python loops while-loop

[背景信息:我目前正在完成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'有什么意义?在循环之外?

4 个答案:

答案 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每次旅行,这会累积你期望的答案。