首先看看在 Java 中如何跳出多重循环:
outter:
for (int i = 1; i <= 5; ++i) {
for (int j = 1; j <= 5; ++j) {
if (j > 3) { // 结束子循环
break;
}
if (i * j == 6) { // 跳出父循环
break outter;
}
System.out.println(String.format("(%1$d, %2$d)", i, j));
}
}
而在 Python 中没有类似的语法可以跳出多重循环,因此需要考自己实现。
常用之一:
class BreakAll(Exception):
pass
try:
for i in range(1, 6):
for j in range(1, 6):
if j > 3: # 结束子循环
break
if i * j == 6: # 跳出父循环
raise BreakAll
print('(%d, %d)' % (i, j))
except BreakAll:
pass
或许在这种场景下以下代码更合适:
for i in range(1, 6):
break_all = False
for j in range(1, 6):
if j > 3: # 结束子循环
break;
if i * j == 6: # 跳出父循环
break_all = True
break
print('(%d, %d)' % (i, j))
if break_all:
break