我想知道如何从这样的循环出来:
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中,我会做一个= b = c = d = 95,但在python中不起作用。当然我可以使用while循环,但后来我必须使用X + = 1语句,它看起来很糟糕。
任何帮助?
关于循环: 我用它来使用暴力破解4-char密码。这不是一个真正的目的 - 仅用于测试。
答案 0 :(得分:12)
使用itertools产品:
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
答案 1 :(得分: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