1. 程式人生 > >python跳出多層迴圈

python跳出多層迴圈

今天同事問我一個python面試題,關於python跳出多層迴圈,原來還真沒用過,網上一查還真有點意思,下面記錄一下:

Python 本身沒有“break n” 和“goto” 的語法,這也造成了Python 難以跳出多層(特定層數)迴圈。下面是幾個跳出多層(特定層數)迴圈的tip。

1、自定義異常

class getoutofloop(Exception): pass

try:
    for i in range(5):
        for j in range(5):
            for k in range(5):
                if
i == j == k == 3: raise getoutofloop() else: print i, '----', j, '----', k except getoutofloop: pass

2、封裝為函式return

def test():
    for i in range(5):
        for j in range(5):
            for k in range(5):
                if i == j == k == 3
: return else: print i, '----', j, '----', k test()

3、for … else … 用法

上面的兩種都是隻能跳出多層而不能跳出特定層數的迴圈,接下來的這個正是為了跳出特定層數的迴圈。

for i in range(5):
    for j in range(5):
        for k in range(5):
            continue
        else: print("1")
        break
else: print("2") break

輸出:
1

else在 if 和for 正常迴圈完成之後執行,和直接寫在 if 和for 之後沒有區別,但是如果用break結束迴圈之後else就不會執行了。這也是個很新奇的做法。
才知道原來可以作為跳出多層迴圈用。不過要是有多次跳出不同層的迴圈的需求,也沒轍了。