在定义条件之前启动 Python 'while' 循环

Posted

技术标签:

【中文标题】在定义条件之前启动 Python \'while\' 循环【英文标题】:Start Python 'while' loop before condition is defined [duplicate]在定义条件之前启动 Python 'while' 循环 【发布时间】:2019-04-26 06:36:00 【问题描述】:

我有一段代码执行一个函数,然后根据该输出决定是否应该重复:

while (function_output) > tolerance:
    function_output = function(x)

问题是 while 循环在定义“function_output”之前不会开始 - 但它是在循环中定义的。目前我有:

function_output = function(x)
while (function_output) > tolerance:
    function_output = function(x)

但是有没有办法让这个循环开始而不必迭代函数一次?

【问题讨论】:

模拟do while? while True: stuff() if fail_condition: break 不,python没有“do”-“while”循环 function_output = 公差 + 1 循环前? @TIF:对于它的价值,您的第二个代码块是执行此操作的规范方法。 OP是正确的,认为第二种方式不好:它有重复的代码。 【参考方案1】:

python 中没有这样的东西。既不是do-while,也不是

while (x = f() > 5):
  dostuff

喜欢C 和类似的语言。

类似的构造have been proposed, but rejected。你已经在做的是最好的方法。

另一方面,如果您想以do-while 样式进行操作,建议的方式是

while True:
    if f() > tolerance:
       break

【讨论】:

soon @timgeb:有用(虽然有点难看)。让我们也期待do-while...【参考方案2】:

使用break 语句退出循环

while True:
    if function_output(x) > tolerance:
        break

【讨论】:

我认为你的条件是倒置的——那是在 OPs 代码中继续循环的条件【参考方案3】:

这个模式怎么样。您可能想选择一个更好的变量名。

should_continue = True
while should_continue:
    should_continue = ( function(x) > tolerance )

【讨论】:

虽然这当然是一个替代方案,但它并不比 OP 的实现好多少。 @Idlehands 的重复代码较少。 @ctrl-alt-delor,重复了什么,一个函数调用?如果我必须权衡重复的函数调用与创建新变量,我知道我更喜欢哪个。 @Jpp 我同意如果只是一个函数调用,但如果有很多或参数,我会这样做。或者封装。

以上是关于在定义条件之前启动 Python 'while' 循环的主要内容,如果未能解决你的问题,请参考以下文章

浅谈python中的while循环

do...while 语句

为啥while循环有时会在满足退出条件之前退出?

Python基础之if判断,while循环,循环嵌套

在 C++ 中满足某些条件(如果)后,如何重新启动 while 循环? [关闭]

While 循环条件在:复合条件表达式 AND'd [python]