Python 速查手冊

4.12 複合陳述 while else

關鍵字 (keyword) while 用來構成 while 迴圈 (loop) , while 之後空一格接上迴圈結束條件 (condition) ,最後加上冒號,只要條件為真,迴圈就會持續進行,條件為假就會結束迴圈。通常結束條件是用控制變數 (variable) 進行管理,因此進入迴圈前要先設定好控制變數,迴圈裡也要調整控制變數值。 while 迴圈最後可以接上關鍵字 else ,進行迴圈結束後的處理

先來看看簡單的 while 迴圈,此例的控制變數為 ii 先設定為整數 1 ,另外設定整數變數 sum ,這是用來加總的,然後 i 小於 10 為迴圈的結束條件,注意條件後要加上冒號。如此在迴圈中設定 i 加等於 1 ,讓 i 隨迴圈的次數遞增,第一次執行的時候 i 等於 0 ,之後 i 等於 123 ,直到 i 等於 10 ,這樣 i 小於 10 的條件就不再成立,這個 while 迴圈就會結束,直譯器就會去找下一行沒有縮排的程式碼,讓程式碼繼續執行

i = 0
sum = 0
while i < 10:
    sum += i
    i += 1

print(sum)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:while01.py
# 功能:示範 while 陳述
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 while01.py
45
$

有時候寫程式 (program) 會故意讓迴圈不會結束,讓迴圈變成無窮迴圈 (infinite loop) ,因為很多情況需要這麼做,例如打開電腦後,開啟一個視窗,想要維持視窗顯示在螢幕上,這就需要一個無窮迴圈,另外像是遊戲也一樣,遊戲通常會放在無窮迴圈裡,直到符合遊戲結束條件,才會結束遊戲,至於最簡單設定無窮迴圈就是在 whileTrue 當迴圈的結束條件,迴圈就會一直跑,這裡的例子是用字串 "quit" 當迴圈結束指令,當使用者在鍵盤上打入 quit 後,才利用 break 跳出迴圈

while True:
    if input(":") == "quit":
        break

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:while02.py
# 功能:示範 while 陳述
# 作者:張凱慶

於命令列執行以上程式,先輸入 There is no spoon. ,按下 Enter ,再輸入 Hello World! ,再輸入 Enter ,此時程式仍在等待使用者輸入

$ python3 while02.py
:There is no spoon.
:Hello World!
:

最後輸入 quit ,按下 Enter ,才跳到命令列的下一個提示符號,結束程式執行

:quit
$

while 迴圈也可以是巢狀,例如這邊利用巢狀迴圈印出九九乘法表

i = 1
j = 1
while i <= 9:
    while j <= 9:
         print(i*j, end=" ")
         j += 1
    i += 1
    j = 1
    print()

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:while03.py
# 功能:示範 while 陳述
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 while03.py
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
$

關鍵字 continue 可以用在 while 迴圈中,這讓迴圈直接跳到下一輪執行,注意這裡 continue 之前要先將控制變數遞增,不然 j 會永遠等於 4 ,這個 while 迴圈會變成無窮迴圈

i = 1
j = 1
while i <= 9:
    while j <= 9:
         if j == 4:
             j += 1
             continue
         print(i*j, end=" ")
         j += 1
    i += 1
    j = 1
    print()

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:while04.py
# 功能:示範 while 陳述
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 while04.py
1 2 3 5 6 7 8 9
2 4 6 10 12 14 16 18
3 6 9 15 18 21 24 27
4 8 12 20 24 28 32 36
5 10 15 25 30 35 40 45
6 12 18 30 36 42 48 54
7 14 21 35 42 49 56 63
8 16 24 40 48 56 64 72
9 18 27 45 54 63 72 81
$

while 迴圈最後如果接上 else ,這在迴圈條件為假的時候執行,需要注意的是這有點像是迴圈結束後的預設執行項目,也就是說,這 else 的部分一定會執行,無論迴圈內的工作會不會真的執行

i = 0
while i <= 3:
    print(i)
    i += 1
else:
    print("!")

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:while05.py
# 功能:示範 while 陳述
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 while05.py
0
1
2
3
!
$

相關教學影片

上一頁: 4.11 複合陳述 for in else
Python 速查手冊 - 目錄
下一頁: 4.13 複合陳述 try except finally else
回 Python 教材首頁
回程式語言教材首頁