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

Start Python 'while' loop before condition is defined

本问题已经有最佳答案,请猛点这里访问。

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

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

问题是,在定义了"函数输出"之前,while循环不会启动——但它是在循环中定义的。现在我有:

1
2
3
function_output = function(x)
while (function_output) > tolerance:
    function_output = function(x)

但是,有没有一种方法可以让这个循环在不必迭代函数一次的情况下启动呢?


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

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

就像在C和类似的语言中一样。

已经提出了类似的构造,但被拒绝了。你已经在做的是最好的方法。

另一方面,如果你想用do-while的风格来做,建议的方法是

1
2
3
while True:
    if f() > tolerance:
       break


使用break语句从循环中退出

1
2
3
while True:
    if function_output(x) > tolerance:
        break


这个样式怎么样?您可能需要选择一个更好的变量名。

1
2
3
should_continue = True
while should_continue:
    should_continue = ( function(x) > tolerance )