定义变量“而”循环
背景信息:我目前正在完成从MIT EDX网站Python编程的课程,和我工作的部分上,而循环]定义变量“而”循环
我的问题一直在努力,如下所示:“写一个while循环,将值1加到end,end。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 + 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
随着每次通过循环,总递增和利用。在第一个中,你将在每个循环中写下总数。
当您在while循环中定义total
时,它会在每次循环时将其自身重新分配到0 + end
,在程序结束时为1。在外部定义它时,它将total
设置为0,然后对于while
中的每个循环,它将继续向其添加值。
另外,你可以写total = total + end
作为total += end
,它意味着同样的事情,但实际上是(非常)快一点。
问题在于total = 0 + end
。这样做是将当前值end
分配给total
。由于end
最终变成1
,这就是总数。您需要添加end
到运行total
:
total = total + end
或:
while end != 0:
total += end
end -= 1
print total
与total
while循环中的例子中,它是被每次end != 0
重新定义,并正在打印后立即end
是等于1(end = end-1
将使断裂你出while循环结束后等于1)。
在另一个例子中,你并没有重新定义total
每次通过while循环,这是积累你期望的答案。
可能重复的[Python范围规则简述](http://*.com/questions/291978/short-description-of-python-scoping-rules) – jycr753
它实际上与范围无关。每个循环都具有实质上不同的内容。 – TigerhawkT3