如何在Python中中断嵌套循环?
我想知道怎么才能跳出这样的循环:
for a in range(95):
for b in range(95):
for c in range(95):
for d in range(95):
...
do some computings
...
if condition:
task completed
在任务完成后,所有的循环和计算都会继续进行。它们需要被中断,但我不知道该怎么做——在“任务完成”后加一个单独的break语句只会结束最里面的for循环,但这个循环会被多次调用,所以我们并没有得到什么。
在C语言中,我可以用a=b=c=d=95来实现,但在Python中这样做就不行。当然,我可以用while循环来代替,但那样我就得用X+=1这样的语句,看起来会很糟糕。
有没有什么帮助?
关于这个循环: 我用它来通过暴力破解一个4个字符的密码。这并不是我的真实目的——只是用来测试而已。
2 个回答
4
你可以用异常来跳出嵌套的循环:
class Break(Exception): pass
try:
for a in range(95):
for b in range(95):
for c in range(95):
for d in range(95):
# ...
# do some computings
# ...
if condition:
# task completed
raise Break()
except Break:
# do some stuff
或者使用 StopIteration
:
try:
for a in range(95):
for b in range(95):
for c in range(95):
for d in range(95):
# ...
# do some computings
# ...
if condition:
# task completed
raise StopIteration()
except StopIteration:
# do some stuff
12
使用itertools库中的product函数:
from itertools import product
for a, b, c, d in product(range(95), range(95), range(95), range(95)):
print a, b, c, d
if a == 1: break
更简洁的写法,感谢Ashwini:
for a, b, c, d in product(range(95), repeat=4):
print a, b, c, d
if a == 1: break