为什么不“而”的工作方式相同“的”有继续staement
如果我尝试代码:为什么不“而”的工作方式相同“的”有继续staement
for i in range(10):
if i < 5:
continue
print(i)
将打印的数字6-10。 但代码:
for i in range(10):
while i < 5:
continue
print(i)
将永不终止。 似乎while循环不增加i。 我在这里错过了什么?
A while
loop是一个带有条件的代码结构。只要条件满足,它就会保持循环。此外,一个while
循环确实是没有其他其他(这与将下一项读入变量的for
循环相反)。
此外,while
环路是环路。 continue
语句与最近的循环绑定。因此,在您的第二条代码声明中,continue
将让代码在while
循环上执行新的迭代。
由于您while
循环不会改变i
,和continue
会让while
环路(不是for
环路)执行新的循环,这将因此继续执行while
循环。
这就是说,这两个代码片段都不是优雅的。你可以简单地用一个range(..)
语句有两个参数陈述开始值:
for i in range(6, 10):
print(i)
我只使用上面的代码作为一个简单的例子。我不是一个完整的小白,虽然回顾性的,这个问题肯定会让我看起来像一个XD – Daniel
TL;!DR while loop
=if statement
你有这些环结构是如何工作的一种误解。
A for-loop
将在iterable
(如range
)中循环通过variable
。当它到达iterable
的末尾或遇到break
或return
时,它将跳出loop
。
A while
循环连续运行,条件是True
或遇到break
或return
。
在你的情况下,当程序到达for-loop
的第一个循环时,i
是0
。然后输入一个while
循环,条件为i < 5
。
这个条件是True
(因为0
是< 5
)所以loop
运行。您可以致电continue
。这个关键字告诉Python移到下一个循环并且逃离当前循环。因此,在这种情况下,由于while
循环是当前的loop
,因此Python跳转到while
循环中的下一个循环。
在这里,我们再次评估条件:i < 5
并再次这是True
。正如你所看到的,我们回到上面的2
段落!因此,创建了一个无限的loop
,程序永远不会结束。
希望这会回答你的问题。
或遇到“休息”。这也有效 –
@ Jean-FrançoisFabre那实际上就是我的意思!我正在考虑'break',我想'return'也可以。 –
的_outer_循环递增它,但_inner_循环不。 –
while循环不增加,只要条件成立就保持循环。 –
关键是,'continue'继续执行_current_循环。 – ForceBru