【问题标题】:Why do these for and while loops iterate differently?为什么这些 for 和 while 循环的迭代方式不同?
【发布时间】:2018-03-16 10:32:01
【问题描述】:

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

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

我正在做一道数学题,使用 Python 进行计算,该算法使用与代码块中的第一个相同的 for 循环。 但是随着这个循环中variable-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

【问题讨论】:

  • 是的,在 for 循环中,范围是预先计算的,因此迭代修复。在while循环中,每次迭代后根据ai的值重新测试条件。
  • 您可以在每个循环中添加一个打印语句,以查看@cᴏʟᴅsᴘᴇᴇᴅ 的答案和 Python 循环的运行情况。
  • 是的,python for 循环是“for-each”结构

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


【解决方案1】:
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 重新测试条件,考虑到您看到的差异。

【讨论】:

  • 抱歉,stackoverflow 的新手。我认为upvoting意味着接受答案,只是发现在需要切换的答案旁边有一个复选标记。感谢您的帮助!
猜你喜欢
  • 2021-09-07
  • 2012-01-17
  • 1970-01-01
  • 2014-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-15
相关资源
最近更新 更多