为什么这些for和while循环以不同方式迭代?

时间:2017-10-04 22:04:34

标签: python loops for-loop while-loop iteration

我对Python3.6中的for和while循环有疑问:

为什么while循环中的变量会影响这个循环,for循环中的变量不能?有没有办法使后一种方式也有效?

我正在使用Python来计算数学问题,该算法使用与代码块中的第一个相同的for循环。 但随着此循环中变量a的值发生变化,for-loop的范围仍然存在。

所以我使用while循环来实现我的目标并且它经历了。 我对此的猜测是,一个范围(一组元素)一旦被运行就被决定,或者一个for循环不具有相同的性质'作为一个循环。

a = 28
for i in range(1,a):
    a = a - 5

# outcomes: a = -107, i =27

a = 28
i = 1
while i < a:
    a = a - 5
    i = i + 1

# outcomes: a = 3, i = 6

1 个答案:

答案 0 :(得分:2)

a = 28
for i in range(1,a):
    a = a - 5

阅读:a减去5次,共27次。

a = 28
i = 1
while i < a:
    a = a - 5
    i = i + 1

阅读:只要a小于i,就保持从a减去5。

显然,这两个陈述是不一样的。无论for的值如何,a循环都会预先计算范围,并且迭代是固定的。在while的情况下,在每次新迭代时重新测试条件a的最新值,并考虑您看到的差异。