Python的for迴圈退出

小周啊發表於2019-05-11

for
else
for迴圈如果正常結束,才會執行else語句。

我們寫一個for…else型別的語句如下:

#!/usr/local/python3/bin/python

for i in range(10):
    print(i)
else:
    print(`main end`)

執行之後我們會發現,在這種情況下,else後面的內容還是執行了:

[root@izj6cdhdoq5a5z7lfkmaeaz ~]# python forE.py
0
1
2
3
4
5
6
7
8
9
main end

那麼我們設定一個停頓,如下所示:

#!/usr/local/python3/bin/python

import time
for i in range(10):
    print(i)
    time.sleep(1)
else:
    print(`main end`)

執行的時候我們使用“ctrl+c”退出,如下:

[root@izj6cdhdoq5a5z7lfkmaeaz ~]# python forE.py
0
1
^CTraceback (most recent call last):
  File "forE.py", line 6, in <module>
    time.sleep(1)
KeyboardInterrupt
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#

從上面的結果中可以看出,程式退出之後丟擲了一個異常,鍵盤中斷,這時候else後面的內容就沒有執行。

那麼我們現在設定程式在某一個地方的時候退出,應該怎樣做呢?現在我們設定一個當i等於5的時候,就退出迴圈,這時候就可以用到for迴圈中的break:

#!/usr/local/python3/bin/python

import time
for i in range(10):
    print(i)
    if i==5:
        break    

else:
    print(`main end`)

執行之後我們會發現i的值到5就不往後執行了,else的內容也沒有執行:

[root@izj6cdhdoq5a5z7lfkmaeaz ~]# python forE.py
0
1
2
3
4
5
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#

我們後面還可以加上一些內容,當i等於3的時候continue,當i等於6的時候可以寫個pass,進行佔位:

#!/usr/local/python3/bin/python

import time
for i in range(10):
    if i==3:
        continue         #有了continue,迴圈後面的語句都不會執行了
    elif i==5:
        continue
    elif ==6:
        pass                #佔位
    print(i)

else:
    print(`main end`)

執行之後我們會發現,3和5都沒有在結果中體現出來:

[root@izj6cdhdoq5a5z7lfkmaeaz ~]# python forE.py
0
1
2
4
6
7
8
9
main end

如果我們在佔位的地方寫一條讓整個程式退出的程式碼,如下所示:

#!/usr/local/python3/bin/python

import time
import sys

for i in range(10):
    if i==3:
        continue         #有了continue,迴圈後面的語句都不會執行了
    elif i==5:
        continue
    elif i==6:
        sys.exit()       #退出整個程式
    print(i)

else:
    print(`main end`)

break 退出整個迴圈
continue 退出當前迴圈,接著進入下一個迴圈
pass 佔位
sys.exit() 退出整個指令碼


相關文章