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

标签 python loops for-loop while-loop iteration

我有一个关于Python3.6中的for和while循环的问题:

为什么while循环中的变量可以影响这个循环,而for循环中的变量却不能?有没有办法让后一种方式也起作用?

我正在使用Python来计算一道数学题,该算法使用与代码块中的第一个循环相同的for循环。 但随着该循环中变量 a 的值发生变化,for 循环的范围保持不变。

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

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

最佳答案

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

阅读:只要 i 小于 a,就不断从 a 中减去 5。

<小时/>

显然,这两种说法并不相同。 for 循环预先计算范围,并且迭代是固定的,无论 a 的值如何。对于 while 来说,在每次新迭代时都会使用 a 的最新值重新测试条件,以考虑您看到的差异。

关于python - 为什么这些 for 和 while 循环的迭代方式不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46574885/

相关文章:

python - Pandas:如何将列中的多个列表拆分为多行?

Python:使类可迭代

vba - Excel VBA Exit For 在 If block 内不起作用

python - 遍历列表列表并使用迭代器

javascript - react for 循环

python - 无法通过 __getattr__( __getattribute__ ) 调用 __add__

python - 如何将Linux命令转换为Python脚本?

python - FastAPI动态多路径参数

java - 此代码段如何将输出输出为 7?

python - for循环执行