Python 簡易手冊

單元 23 - for 陳述

關鍵字 (keyword) for 為另一種迴圈 (loop) ,通常用在逐一處理序列 (sequence) 的元素 (element) ,舉例如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 建立資料
items = ["lamp", "desk", "pen"]

# 印出資料
for i in items:
    print(i)

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

序列是指字串 (string) 、串列 (list) 、序對 (tuple) 等資料型態,其實可迭代的物件都可以用 for 迴圈處理,單元 66 - 迭代器會介紹可迭代的觀念及如何定義迭代器 (iterator) 。

第 5 行, for 之後空一格接上控制變數 (control variable) i ,再空一格接上關鍵字 inin 後空一格接上串列 (list) 變數 items

 4
 5
 6
# 印出資料
for i in items:
    print(i)

串列變數 items 是在第 2 行建立的,單元 39 - 串列會詳細介紹如何定義串列。

也就是說,每一次執行 for 迴圈就會用變數 (variable) i 取得 items 中的元素,由於 items 的第一個元素是 "lamp" ,所以第一次 i 取得 "lamp" ,然後在底下縮排的部分進行處理,接下來再依序取得 "deck""pen" 進行處理,這裡都是印出變數 i ,執行結果如下

> python for_demo.py
lamp
desk
pen
>

for 迴圈的特定是在迴圈之前不需要設定控制變數,而是在關鍵字 for 之後直接命名控制變數的名稱,這樣的優點是 for 迴圈的控制變數只作用於迴圈內,也就是迴圈中的區域變數 (local variable) ,離開迴圈後該控制變數就失去效力。

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

關鍵字 for 也用在串列、集合、字典產生元素的綜合運算 (comprehension) ,綜合運算會在單元 43 - 綜合運算詳細介紹。

for 迴圈中可以有另一個 for 迴圈,這叫做巢狀迴圈 (nested loop) ,例如以下程式印出九九乘法表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 印出九九乘法表
for i in range(1, 11):
    for j in range(1, 11):
        print(i*j, end=", ")
    print()

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

內建函數 (built-in function) range() 可以產生兩個引數 (argument) 之間的整數數列,例如 111 ,就是產生從 123410 ,也就是第二個引數前一個數字的整數數列,此例執行結果如下

> python for_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,
>

range() 有三種參數 (parameter) 版本,分別是需要一個引數、兩個引數及三個引數,上例示範兩個引數,如果是一個引數,就是產生從 0 開始到引數減 1 的整數數列,至於三個引數的話,底下會提供三個引數的例子。

參數是定義函數 (function) 時提供的識別字,呼叫函數提供的實際數值 (value) 叫做引數,單元 44 - 函數與 return 陳述會詳細介紹如何定義函數。

for 迴圈的最後可以加上 else ,作為迴圈執行的預設選項,例如

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 印出 10 到 1 之間的整數
for i in range(10, 0, -1):
    print(i)
# 迴圈的預設選項
else:
    print("End")

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

第 2 行,這裡用到 range() 的三個參數版本,第一個引數 10 是數列開始值,第二個引數 0 是數列結束值,至於第三個引數是 -1 ,所以會以減 1 的方式進行,最後到 0 的前一個數字 1 為止

 1
 2
# 印出 10 到 1 之間的整數
for i in range(10, 0, -1):

第 5 行是 else 的部分,也就是迴圈結束後依定會執行的預設項目

 4
 5
 6
# 迴圈的預設選項
else:
    print("End")

此例執行結果如下

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

參考資料

上一頁 單元 22 - while 陳述
回 Python 簡易手冊 首頁
下一頁 單元 24 - continue 陳述
回 Python 教材首頁
回程式語言教材首頁