2017-11-25 194 views
-1

如果我尝试代码:为什么不“而”的工作方式相同“的”有继续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。 我在这里错过了什么?

+2

的_outer_循环递增它,但_inner_循环不。 –

+2

while循环不增加,只要条件成立就保持循环。 –

+1

关键是,'continue'继续执行_current_循环。 – ForceBru

回答

5

A while loop是一个带有条件的代码结构。只要条件满足,它就会保持循环。此外,一个while循环确实是没有其他其他(这与将下一项读入变量的for循环相反)。

此外,while环路是环路continue语句与最近的循环绑定。因此,在您的第二条代码声明中,continue将让代码在while循环上执行新的迭代。

由于您while循环不会改变i,和continue会让while环路(不是for环路)执行新的循环,这将因此继续执行while循环。

这就是说,这两个代码片段都不是优雅的。你可以简单地用一个range(..)语句有两个参数陈述开始值:

for i in range(6, 10): 
    print(i)
+0

我只使用上面的代码作为一个简单的例子。我不是一个完整的小白,虽然回顾性的,这个问题肯定会让我看起来像一个XD – Daniel

2

TL;!DR while loop=if statement

你有这些环结构是如何工作的一种误解。

A for-loop将在iterable(如range)中循环通过variable。当它到达iterable的末尾或遇到breakreturn时,它将跳出loop

A while循环连续运行,条件是True或遇到breakreturn

在你的情况下,当程序到达for-loop的第一个循环时,i0。然后输入一个while循环,条件为i < 5

这个条件是True(因为0< 5)所以loop运行。您可以致电continue。这个关键字告诉Python移到下一个循环并且逃离当前循环。因此,在这种情况下,由于while循环是当前的loop,因此Python跳转到while循环中的下一个循环。

在这里,我们再次评估条件:i < 5并再次这是True。正如你所看到的,我们回到上面的2段落!因此,创建了一个无限的loop,程序永远不会结束。

希望这会回答你的问题。

+0

或遇到“休息”。这也有效 –

+0

@ Jean-FrançoisFabre那实际上就是我的意思!我正在考虑'break',我想'return'也可以。 –

相关问题