为什么python中没有while循环

Bah*_*til 31 python loops do-while

为什么Python没有像许多其他编程语言那样的'do while'循环,比如C?

示例:在C中我们执行while循环,如下所示:

do {
   statement(s);
} while( condition );
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 57

没有do...while循环,因为没有很好的方法来定义适合statement: indented block每个其他Python复合语句使用的模式的循环.因此,添加此类语法的提议从未达成一致.

也没有必要有这样的结构,而不是你可以这样做:

while True:
    # statement(s)
    if not condition:
        break
Run Code Online (Sandbox Code Playgroud)

并具有与C do { .. } while condition循环完全相同的效果.

参见PEP 315 - 增强的循环:

拒绝[...]因为没有出现可能与以下形式竞争的语法:

    while True:
        <setup code>
        if not <condition>:
            break
        <loop body>
Run Code Online (Sandbox Code Playgroud)

对于基本的do-while循环,发现了PEP中提出的语法替代语法,但由于条件位于顶部,因此它几乎得不到支持:

    do ... while <cond>:
        <loop body>
Run Code Online (Sandbox Code Playgroud)

或者,正如Guido van Rossum所说:

请拒绝PEP.沿着这些方向的更多变化不会使语言更优雅或更容易学习.他们只是节省了一些急躁的人一些打字,同时让那些必须阅读/维护他们的代码的人想知道这意味着什么.

  • “实际上也没有必要有这样的构造,而不是当你可以这样做时:”如果你这样做,然后在条件检查之前在 while 循环中的某个地方调用“继续”,那么它将产生非常好的效果。与在具有 do-while 循环的其他语言中执行相同的操作非常不同,因为 continue 语句意味着您永远不会检查条件。真正的 do-while 循环允许您调用 continue,然后在条件为 false 时结束循环。我喜欢 python,但我真正怀念的两件事是 do-while 和 real for i=0; i++, i&lt;x:循环。 (3认同)
  • @Vinzent 然后使用 `try:`...`finally:` 构造并将条件放在 `finally` 块中。“try”块中的任何“Continue”语句仍将触发“finally”块,因此仍会检查条件。我创建了一个[快速演示](https://repl.it/@mjpieters/dowhilecontinue)。 (2认同)

小智 8

因为大家都看错了。你不想做...而你想做...直到。

如果初始条件为真,则 WHILE 循环可能就是您想要的。另一种选择不是 REPEAT ... WHILE 循环,而是 REPEAT ... UNTIL 循环。初始条件一开始为 false,然后重复循环直至其为 true。

明显的语法是

repeat until (false condition):
  code
  code
Run Code Online (Sandbox Code Playgroud)

但出于某种原因,这超出了每个人的头脑。