1. 程式人生 > Python入門教學 >16 Python 的迴圈控制語句

16 Python 的迴圈控制語句

在程式碼中有的時候我們需要程式不斷地重複執行某一種操作,例如我們需要不停的判斷某一列表中存放的資料是否大於0,這個時候就需要使用迴圈控制語句。

1. while 迴圈語句

1.1 功能與語法

程式的迴圈結構允許多次執行相同的程式碼塊,如下圖所示:

圖片描述

圖:while 迴圈結構

在迴圈結構中,程式的執行流程為:

  1. 判斷迴圈條件
  2. 如果為真,則執行迴圈中的程式碼塊;執行後跳轉到步驟 1,重複第 1 步和第 2 步.
  3. 如果為假,則迴圈結束

Python 提供了 while 語句用於迴圈控制,語法如下:

while 條件:
    程式碼塊

當迴圈條件為真時,程式會反覆執行程式碼塊,直至迴圈條件為假。

1.2 例子

編寫程式 while-loop.py,如下所示:

案例演示 預覽 複製 複製成功!
number = 1
while number <= 3:
    print(number)
    number = number + 1
print('END')
執行案例 點選 "執行案例" 可檢視線上執行效果
  • 在第 1 行,設定變數 number 的初值為 1
  • 在第 2 行,判斷變數 number 是否小於等於 3,執行 4 次條件判斷
    • 第 1 次條件判斷時,number 等於 1,列印 1,將 number 遞增為 2
    • 第 2 次條件判斷時,number 等於 2,列印 2,將 number 遞增為 3
    • 第 3 次條件判斷時,number 等於 3,列印 3,將 number 遞增為 4
    • 第 4 次條件判斷時,number 等於 4,迴圈結束,執行第 5 行,列印 END

程式輸出結果為:

1
2
3
END

2. for 迴圈語句

2.1 功能與語法

Python 提供了 for 語句用於遍歷序列中的元素,語法如下所示:

for 迴圈變數 in 序列:
    程式碼塊

假設序列中包含有 N 個元素:A1、A2、…、An,使用 for 語句遍歷該序列的過程如下:

  • for 語句中的程式碼塊會執行 N 次
  • 第 1 次執行時,迴圈變數的值為 A1
  • 第 2 次執行時,迴圈變數的值為 A2
  • 第 N 次執行時,迴圈變數的值為 An

for 語句用於遍歷序列中的元素,這裡所講的序列是廣義的,可以是:

  • 列表
  • 元組
  • 集合
  • range 物件

2.2 遍歷列表

案例演示 預覽 複製 複製成功!
for item in ['www', 'imooc', 'com']:
    print(item)
執行案例 點選 "執行案例" 可檢視線上執行效果

程式的輸出結果如下:

www
imooc
com

2.3 遍歷元組

案例演示 預覽 複製 複製成功!
for item in ('www', 'imooc', 'com'):
    print(item)
執行案例 點選 "執行案例" 可檢視線上執行效果

程式的輸出結果如下:

www
imooc
com

2.4 遍歷集合

案例演示 預覽 複製 複製成功!
for item in {'www', 'imooc', 'com'}:
    print(item)
執行案例 點選 "執行案例" 可檢視線上執行效果

程式的輸出結果如下:

www
imooc
com

2.5 遍歷 range 物件

Python 中 range 物件表示一定範圍的整數序列,它有兩種形式:

  • range(number) 表示區間 [0, number) 內的整數序列,該區間從 0 開始、到 number 結束,不包含 number。
  • range(start, end) 表示區間 [start, end) 內的整數序列,該區間從 start 開始、到 end 結束,不包含 end。
  1. 例子:遍歷 range(3)
案例演示 預覽 複製 複製成功!
for item in range(3):
    print(item)
執行案例 點選 "執行案例" 可檢視線上執行效果

range(3) 表示 0、1、2 這三個整數構成的序列,程式的輸出結果如下:

0
1
2
  1. 例子:遍歷 range(1, 3)
案例演示 預覽 複製 複製成功!
for item in range(1, 3):
    print(item)
執行案例 點選 "執行案例" 可檢視線上執行效果

range(3) 表示 1、2 這兩個整數構成的序列,程式的輸出結果如下:

1
2

3. break 語句

3.1 功能與語法

在通常的迴圈中,當條件為假時,迴圈才會終止,有些情況下,希望能夠提前從迴圈中退出。Python 提供了
break 語句用於從迴圈中退出,如下圖所示:

圖片描述

圖:break 語句
  • 當條件為假時,迴圈結束,程式流程到達出口
  • 當條件為真時,執行條件為真的分支中的程式碼塊
    • 如果程式碼塊中包含有 break 語句
    • break 語句會中斷當前的迴圈執行流程,直接跳轉到程式的出口

3.2 例子

編寫程式檢測 number 是否為素數,將檢測結果儲存在變數 is_prime 中,如下所示:

案例演示 預覽 複製 複製成功!
number = 9
is_prime = True
factor = 2
while factor < number:
    print(factor)
    if number % factor == 0:
        is_prime = False
        break
    factor = factor + 1
print(is_prime)
執行案例 點選 "執行案例" 可檢視線上執行效果
  • 在第 1 行,設定 number 為 9,程式檢測 number 是否為素數
  • 在第 2 行,設定檢測結果 is_prime 初值為 True
  • 在第 3 行,設定迴圈變數 factor 為 2
    • 在第 4 行,判斷迴圈變數 factor 是否小於 number
    • 在第 9 行,迴圈變數 factor 自增 1
  • 在第 6 行,判斷 factor 是否是 number 的因子
    • 如果 factor 是 number 的因子,則 number 不是素數
    • 在第 6 行,將結果記錄在變數 is_prime 中
    • 在第 7 行,已經檢測到 number 不是素數,因此可以提前退出迴圈

執行程式,輸出結果如下:

2
3
False

4. continue 語句

4.1 功能與語法

在通常的迴圈中,迴圈塊中的語句是順序執行的,有些情況下,希望能夠跳過迴圈塊中的剩餘語句。Python 提供了 continue 語句用於跳過迴圈塊中的剩餘語句,如下圖所示:

圖片描述

圖:continue 語句
  • 當條件為假時,迴圈結束,程式流程到達出口
  • 當條件為真時,執行條件為真的分支中的程式碼塊
    • 如果程式碼塊中包含有 continue 語句
    • break 語句會中斷當前的迴圈執行流程,直接跳轉到迴圈條件處

4.2 例子

編寫程式計算列表中正數的累加和,程式碼如下:

案例演示 預覽 複製 複製成功!
number = 9
is_prime = True
factor = 2
while factor < number:
    print(factor)
    if number % factor == 0:
        is_prime = False
        break
    factor = factor + 1
print(is_prime)
執行案例 點選 "執行案例" 可檢視線上執行效果
  • 在第 1 行,設定 sum 為 0
  • 在第 2 行,設定一個包含 6 個元素的列表,其中包含 3 個正數、3 個負數
  • 在第 3 行,使用 for 迴圈遍歷這個列表
  • 在第 4 行,如果 number < 0
    • 使用 continue 語句跳過第 6 行的語句
    • 程式跳轉到迴圈開始的地方繼續執行

程式執行的輸出結果如下:

6

5. else 語句

5.1 在 while 迴圈中使用 else 語句

while 語句中提供了 else 語句,語法如下:

while 條件:
    程式碼塊 1
else:
    程式碼塊 2
  • 當迴圈條件為真時,執行程式碼塊 1
  • 當迴圈條件為假時,執行程式碼塊 2

編寫程式 while-else.py,如下所示:

案例演示 預覽 複製 複製成功!
number = 1
while number <= 3:
    print(number)
    number = number + 1
else:
    print('At the end:', number)
執行案例 點選 "執行案例" 可檢視線上執行效果

程式輸出結果為:

1
2
3
At the end: 4

5.2 在 for 迴圈中使用 else 語句

for 語句中提供了 else 語句,語法如下:

for 變數 in 序列:
    程式碼塊 1
else:
    程式碼塊 2
  • 當迴圈條件為真時,執行程式碼塊 1
  • 當迴圈條件為假時,執行程式碼塊 2

編寫程式 for-else.py,如下所示:

案例演示 預覽 複製 複製成功!
for number in range(1, 4):
    print(number)
else:
    print('At the end:', number)
執行案例 點選 "執行案例" 可檢視線上執行效果

程式輸出結果為:

1
2
3
At the end: 4

5.3 一個有意義的例子

else 語句通常用於當迴圈非正常退出的場景中,一個有意義的例子如下:

案例演示 預覽 複製 複製成功!
number = 9
factor = 2
while factor < number:
    print(factor)
    if number % factor == 0:
        is_prime = False
        break
    factor = factor + 1
else:
    is_prime = True
print(is_prime)
執行案例 點選 "執行案例" 可檢視線上執行效果

該程式檢測 number 是否為素數,將檢測結果儲存在變數 is_prime 中

  • 在第 1 行,設定 number 為 9,程式檢測 number 是否為素數
  • 在第 2 行,設定迴圈變數 factor 為 2
    • 在第 3 行,判斷迴圈變數 factor 是否小於 number
    • 在第 8 行,迴圈變數 factor 自增 1
  • 在第 5 行,判斷 factor 是否是 number 的因子
    • 如果 factor 是 number 的因子,則 number 不是素數
    • 在第 6 行,將結果記錄在變數 is_prime 中
    • 在第 7 行,提前退出迴圈
  • 在第 9 行,依次測試 2、3、4、5、6、7、8 是否為 number 的因子
    • 如果都不是 number 的因子,則說明 number 是素數
    • 在第 10 行,將結果記錄在變數 is_prime 中

執行程式,輸出結果如下:

2
3
False

上述的例子,使用 for 迴圈改寫,如下所示:

案例演示 預覽 複製 複製成功!
number = 9
for factor in range(2, number):
    print(factor)
    if number % factor == 0:
        is_prime = False
        break
else:
    is_prime = True
print(is_prime)
執行案例 點選 "執行案例" 可檢視線上執行效果

執行程式,輸出相同的結果,如下所示:

2
3
False

6. 小結

Python 中的迴圈控制語句只有 for 和 While 兩種,不同於 C 或者 Java 等其他程式語言還有 do…while。迴圈控制語句和分級結構語句一樣在工作中經常會用到。大家多想想在程式設計中有什麼地方是需要用到 迴圈控制語句的,想到之後不妨用程式碼實現一下。