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遞減
張貼留言