Python 簡易手冊

單元 22 - while 陳述

關鍵字 (keyword) while 用來設計迴圈 (loop) ,所謂迴圈就是重複執行特定工作,舉例如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 設定控制變數
i = 0

# 印出小於 10 的整數
while i < 10:
    # 迴圈工作
    print(i)
    # 調整控制變數
    i += 1

# 檔名: while_demo.py
# 說明: 《Python簡易手冊》的範例
# 網址: http://kaiching.org
# 作者: Kaiching Chang
# 時間: 2024 年 3 月

典型的 while 迴圈分成以下四個部分

這個例子依註解 (comment) 分成這四個部分,首先在第 2 行設定控制變數 (control variable)

 1
 2
# 設定控制變數
i = 0

接著在第 5 行,關鍵字 while 後面空一格,接上測試迴圈結束條件 (condition) ,此例是判斷控制變數 i 是否小於 10 ,最後要加上冒號

 4
 5
# 印出小於 10 的整數
while i < 10:

第 7 行為此迴圈進行的工作,只有印出控制變數 i

 6
 7
    # 迴圈工作
    print(i)

第 9 行,調整控制變數值

 8
 9
    # 調整控制變數
    i += 1

此例如果沒有調整控制變數到滿足 while 迴圈的結束條件,那迴圈就永遠不會終止,此為永真迴圈 (infinite loop) 。永真迴圈為程式設計的一種技巧,一般來說,特殊結束條件的迴圈就會設計成永真迴圈,單元 25 - break 陳述會討論用關鍵字 break 結束永真迴圈的方式。

關鍵字 break 可以直接中斷迴圈,還有另一個關鍵字 continue 可以讓迴圈直接進行下一輪,單元 24 - continue 陳述會介紹如何使用 continue

這個程式就會先印出 0 ,然後 12 ⋯⋯ 到 9 為止,執行結果如下

> python while_demo.py
0
1
2
3
4
5
6
7
8
9
>

while 迴圈中可以有另一個迴圈,這叫做巢狀迴圈 (nested loop) ,舉例如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 設定控制變數
i, j = 0, 0

# 第一層迴圈
while i < 10:
    # 調整第一層迴圈的控制變數
    i += 1
    # 第二層迴圈
    while j < 10:
        # 調整第二層迴圈的控制變數
        j += 1
        # 印出數字乘積
        print(i*j, end=", ")
    # 印出斷行
    print()
    # 重新設定第二層迴圈的控制變數
    j = 0

# 檔名: while_demo2.py
# 說明: 《Python簡易手冊》的範例
# 網址: http://kaiching.org
# 作者: Kaiching Chang
# 時間: 2024 年 3 月

這個例子是印出九九乘法表,需要兩個控制變數,第一層迴圈為 i ,第二層則是 j ,由於控制變數的初值設定為 0 ,所以一進入迴圈就將控制變數遞增,注意第 17 行

16
17
    # 重新設定第二層迴圈的控制變數
    j = 0

這是將第二層的控制變數 j 重新設定為 0 ,如果不這麼做,第二層迴圈就只會跑一次,此例執行結果如下

> python while_demo2.py
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 
2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 
3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 
4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 
5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 
6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 
7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 
8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 
9, 18, 27, 36, 45, 54, 63, 72, 81, 90, 
10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
>

while 迴圈的最後可以加上 else ,這是迴圈結束條件為假時執行的部分,也可以看成是執行迴圈的預設選項,例如

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 設定控制變數
i = 10

# 倒數計時
while i > 0:
    print(i)
    i -= 1
# 迴圈的預設選項
else:
    print("End")

# 檔名: while_demo3.py
# 說明: 《Python簡易手冊》的範例
# 網址: http://kaiching.org
# 作者: Kaiching Chang
# 時間: 2024 年 3 月

第 9 行就是 else 的部分

 8
 9
10
# 迴圈的預設選項
else:
    print("End")

此例是在迴圈結束後印出 "End" ,執行結果如下

> python while_demo3.py
10
9
8
7
6
5
4
3
2
1
End
>

參考資料

上一頁 單元 21 - match 陳述
回 Python 簡易手冊 首頁
下一頁 單元 23 - for 陳述
回 Python 教材首頁
回程式語言教材首頁