在定义条件之前启动 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' 循环的主要内容,如果未能解决你的问题,请参考以下文章