答案 0 :(得分:225)
There is no do-while loop in Python.
这是一个类似的结构,取自上面的链接。
while True:
do_something()
if condition():
break
答案 1 :(得分:24)
没有预先打包的“do-while”,但实现特殊循环结构的一般Python方法是通过生成器和其他迭代器,例如:
import itertools
def dowhile(predicate):
it = itertools.repeat(None)
for _ in it:
yield
if not predicate(): break
所以,例如:
i=7; j=3
for _ in dowhile(lambda: i<j):
print i, j
i+=1; j-=1
根据需要执行一条腿,即使谓词在开始时已经是假的。
通常最好将更多的循环逻辑封装到您的生成器(或其他迭代器)中 - 例如,如果您经常遇到一个变量增加的情况,一个减少,并且您需要一个do / while循环来比较它们,你可以编码:
def incandec(i, j, delta=1):
while True:
yield i, j
if j <= i: break
i+=delta; j-=delta
你可以使用:
for i, j in incandec(i=7, j=3):
print i, j
取决于你想要在你的生成器(或其他迭代器)中放置多少与循环相关的逻辑以及你想要在它之外有多少(就像任何其他函数,类或其他用途一样)你可以用来从主流执行中重构代码的机制,但是,一般来说,我喜欢看到for
循环中使用的生成器很少(理想情况下没有)“循环控制逻辑”(代码)与更新下一个循环段的状态变量和/或测试是否应该再次循环有关。
答案 2 :(得分:20)
我更喜欢使用循环变量,因为它倾向于阅读比“1:”更好一点,并且没有看起来丑陋的break
语句:
finished = False
while not finished:
... do something...
finished = evaluate_end_condition()
答案 3 :(得分:10)
不,没有。而是使用while
循环,例如:
while 1:
...statements...
if cond:
break