| 1. 控制變數初始設定 |
| 2. 迴圈結束條件測試 |
| 3. 調整控制變數的值 |
for 迴圈只需要取得元素的控制變數 (variable) ,其餘條件 (condition) 測試與調整控制變數的部份,迴圈中會自動完成。
典型的 for 迴圈如下應用
a = "abcdefghijklmnopqrstuvwxyz"
i = 0
for x in a:
print(x, end=" ")
i += 1
if i % 10 == 0:
print()
print()
# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:cf07.py
# 功能:示範 Python 程式
# 作者:張凱慶
# 時間:西元 2010 年 12 月 執行結果如下

此例印出 26 個英文小寫字母,資料儲存在第 1 行建立的變數 a 之中
a = "abcdefghijklmnopqrstuvwxyz"
第 2 行的變數 i ,用來計數,每印 10 個字母便印出新行符號,因此出值設為 0
i = 0
for 迴圈從第 4 行到第 9 行
for x in a:
print(x, end=" ")
i += 1
if i % 10 == 0:
print()第 5 行的 print() 函數 (function) ,我們多增加一個預設的參數 (parameter) end ,這是指定印出 x 之後的結尾符號,如沒有指定,就會印出新行。
第 8 行的 if 陳述 (if statement) ,我們取 i 除以 10 的餘數是否等於 0 ,也就是說 i 從 0 一路遞增到 9 印出 10 個英文字母後,當 i 遞增到 10 或 10 的倍數,此時程式就會印出新行,因此一行會印 10 個英文字母。
迴圈 (loop) 也可以是巢狀的 (nested) ,所謂巢狀的迴圈是指迴圈中包含其他的迴圈,如下例程式印出九九乘法表,就是利用兩個 for 迴圈,一個 for 迴圈之中包含另一個 for 迴圈
for x in range(10):
for y in range(10):
print(x * y, end=" ")
print()
# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:cf08.py
# 功能:示範 Python 程式
# 作者:張凱慶
# 時間:西元 2010 年 12 月 執行結果如下

range() 為內建函數,會自動產生一個從 0 開始到參數減 1 的串列 (list) ,因此
for x in range(10):
就表示 x 會從 0 一路遞增到 10 - 1 ,也就是 9 。
若利用關鍵字 break 則可以挑出迴圈,而利用關鍵字 continue 則會跳過迴圈這一輪的執行。下例在印出九九乘法表的程式中加入了 break 與 continue 陳述
for x in range(10):
if x == 0:
continue
elif x == 8:
break
for y in range(10):
if y == 0:
continue
print(x * y, end=" ")
print()
# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:cf09.py
# 功能:示範 Python 程式
# 作者:張凱慶
# 時間:西元 2010 年 12 月執行結果如下

由於 x 等於 0 與 y 等於 0 的時候都使用 continue 陳述,因此 0 列與 0 行不會被印出,此外, x 等於 8 時使用 break 陳述跳出迴圈,結束印出乘法表的迴圈。
| 中英文術語對照 | |
|---|---|
| for 迴圈 | for loop |
| 複合資料型態 | compound data type |
| 元素 | element |
| 控制變數 | variable |
| 條件 | condition |
| 函數 | function |
| 參數 | parameter |
| if 陳述 | if statement |
| 迴圈 | loop |
| 巢狀的 | nested |
| 串列 | list |
參考資料
http://docs.python.org/py3k/reference/compound_stmts.html
http://docs.python.org/py3k/tutorial/controlflow.html
http://docs.python.org/py3k/reference/compound_stmts.html
http://docs.python.org/py3k/tutorial/controlflow.html
1 則留言:
請問python的for loop 可以類似像java for (i=0;i<=11111;i*10+1){} 對迴圈變數做一些式子運算嗎 還是只能遞增or遞減
張貼留言