關鍵字 (keyword) for 與 in 構成 for-in 迴圈 (loop) ,用來在複合資料型態中依序取得元素,基本使用是在 for 後面空一格,然後接取得元素的控制變數 (variable) ,接著空一格為 in ,再空一格接複合資料型態的物件 (object) ,最後加上冒號。 for-in 迴圈的底下未縮排的部分,最後可以接上 else ,處理迴圈條件為假的情況。
來看看實際的例子,這裡控制變數 i 依序取得 range(10) 產生的 0 到 9 的整數,然後利用變數 sum 進行加總,最後 sum 的結果是 45
sum = 0
for i in range(10):
sum += 1
print(sum)
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:for01.py
# 功能:示範 for 陳述
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 for01.py |
10 |
$ |
接下來的例子把 for-in 用在字串 (string) 中,依序取得每一個長度為一的子字串,然後用 print() 函數印出子字串的內容
for i in "Hello":
print(i)
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:for02.py
# 功能:示範 for 陳述
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 for02.py |
H |
e |
l |
l |
o |
$ |
for-in 迴圈裡頭也能有另一個 for-in 迴圈,迴圈中含有其他迴圈被稱為巢狀迴圈,這裡利用巢狀迴圈印出九九乘法表
for x in range(1, 10):
for y in range(1, 10):
print(x*y, end=" ")
print()
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:for03.py
# 功能:示範 for 陳述
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 for03.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 |
$ |
for-in 迴圈中可以用關鍵字 continue 跳到下一輪,也就是複合資料型態物件的下一個元素,也可以用關鍵字 break 中斷迴圈進行
for x in range(1, 10):
if x == 3:
continue
elif x == 8:
break
for y in range(1, 10):
if y == 5:
continue
print(x*y, end=" ")
print()
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:for04.py
# 功能:示範 for 陳述
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 for04.py |
1 2 3 4 6 7 8 9 |
2 4 6 8 12 14 16 18 |
4 8 12 16 24 28 32 36 |
5 10 15 20 30 35 40 45 |
6 12 18 24 36 42 48 54 |
7 14 21 28 42 49 56 63 |
$ |
for-in 迴圈最後如果接上 else ,這在迴圈條件為假的時候執行,需要注意的是這有點像是迴圈結束後的預設執行項目,也就是說, for-in 迴圈的條件為假,表示 in 之後的複合資料型態物件中沒有元素,全部元素取出後也是沒有元素,因此 for-in 迴圈的 else 比較像是預設執行項目,而非純粹沒有元素的後續處理
sum = 0
for i in []:
sum += i
else:
if sum == 0:
print("沒有資料")
else:
print("資料已存")
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:for05.py
# 功能:示範 for 陳述
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 for05.py |
沒有資料 |
$ |
相關教學影片