首先看看在 Java 中如何跳出多重循環(huán):
outter:
for (int i = 1; i <= 5; ++i) {
for (int j = 1; j <= 5; ++j) {
if (j > 3) { // 結(jié)束子循環(huán)
break;
}
if (i * j == 6) { // 跳出父循環(huán)
break outter;
}
System.out.println(String.format("(%1$d, %2$d)", i, j));
}
}
而在 Python 中沒有類似的語法可以跳出多重循環(huán),因此需要考自己實(shí)現(xiàn)。
常用之一:
class BreakAll(Exception):
pass
try:
for i in range(1, 6):
for j in range(1, 6):
if j > 3: # 結(jié)束子循環(huán)
break
if i * j == 6: # 跳出父循環(huán)
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: # 結(jié)束子循環(huán)
break;
if i * j == 6: # 跳出父循環(huán)
break_all = True
break
print('(%d, %d)' % (i, j))
if break_all:
break