那些你不知道的Python控制結構(十)-for迴圈
看這一篇之前,建議先看過這一篇「Python控制結構5.while 迴圈」複習一下 while 迴圈。
在Python教學中,如果我們要多次重複執行一個指令,我們可以使用迴圈(loops)。迴圈中的程式碼會用以下的方式執行指令:1、按照所指定的次數,重複執行;2、重複執行,直到特定的條件成立時結束;3、針對某一集合(例如:Python list串列之中的物件)中的所有項目,都會各執行一次。
while 迴圈只要「沒有」另外設定「迴圈結束的條件(如:if 、break)」,迴圈就會無限的循環。本次我們要介紹的 for 迴圈則是在一行內就 自帶計數功能的迴圈,可以將重複循環控制在固定的數量內。
以下為一個 while 迴圈的範例,起始值為「count=0」、調整值為「count = count + 1」、讓迴圈結束的條件為「<= 5」,如下所示:
在Python教學中,如果我們要多次重複執行一個指令,我們可以使用迴圈(loops)。迴圈中的程式碼會用以下的方式執行指令:1、按照所指定的次數,重複執行;2、重複執行,直到特定的條件成立時結束;3、針對某一集合(例如:Python list串列之中的物件)中的所有項目,都會各執行一次。
for 迴圈 vs. while 迴圈
之前我們曾經介紹過的 while 迴圈用法與 if 條件判斷式相似,只要給予的條件成立(即為「True(真)」),它就會執行。不同的是執行次數,if 只執行一次;while 迴圈則輪迴執行無限多次 (除非有設定讓迴圈結束的條件且條件成立)。while 迴圈只要「沒有」另外設定「迴圈結束的條件(如:if 、break)」,迴圈就會無限的循環。本次我們要介紹的 for 迴圈則是在一行內就 自帶計數功能的迴圈,可以將重複循環控制在固定的數量內。
以下為一個 while 迴圈的範例,起始值為「count=0」、調整值為「count = count + 1」、讓迴圈結束的條件為「<= 5」,如下所示:
count=0 while count <= 5: print(count) count = count + 1
上述範例結果為:
0 1 2 3 4 5
上個範例,若我們把第二行的「count <= 5」抽掉,換成一個「合乎常理」的條件(例如 count = 0),這個 loop 就會「0,1,2,3,4,5,6,7⋯⋯」永無止盡的重複「+1」的動作。同個範例,若使用 for 迴圈,則在第一行就可以搭配 range數列,定義「終止值」。如下例:
for count in range(0,6,1): print(count)
上述例子結果為:
0 1 2 3 4 5
有沒有發現,原本使用 while loop 需要 4 行的 coding,使用 for loop 只要兩行?
因為 while 迴圈把三大控制條件:初始值、讓迴圈結束的條件、更新值(又稱為調整值)分散在各行來敘述,for 迴圈則使用 range數列 將這三大控制條件放在同一行中展現。上述 range 的寫法為「range(起始值為0,迴圈在6之前就結束,調整值為+1),一行立刻應用 Range數列來訂定起始值、結束條件與調整方法,是不是很精簡又方便的?Python 的 range 函數的詳細用法請見這一篇。
下面還有另外一個例子,為 for 迴圈應用 Python List串列函數的,將串列表中的所有物件都執行一次的範例:
因為 while 迴圈把三大控制條件:初始值、讓迴圈結束的條件、更新值(又稱為調整值)分散在各行來敘述,for 迴圈則使用 range數列 將這三大控制條件放在同一行中展現。上述 range 的寫法為「range(起始值為0,迴圈在6之前就結束,調整值為+1),一行立刻應用 Range數列來訂定起始值、結束條件與調整方法,是不是很精簡又方便的?Python 的 range 函數的詳細用法請見這一篇。
下面還有另外一個例子,為 for 迴圈應用 Python List串列函數的,將串列表中的所有物件都執行一次的範例:
the_BIG4=["Megadeth","Metallica","Anthrax","Slayer"] for bandname in the_BIG4: print(bandname+" is a thrash metal band.")
上述例子結果為:
Megadeth is a thrash metal band. Metallica is a thrash metal band. Anthrax is a thrash metal band. Slayer is a thrash metal band.
這種針對某一集合中的所有項目(例如:List串列之中的所有物件),都各執行一次例子,若用 while 迴圈來表示則需要:1、套用到 counter 「計數器」變數(計數器的數值是跟著索引跑的,所以設定起始值為「counter = 0」。串列的索引編號均是從零開始,詳細請看這篇)。;2、調整值為多加一次,故把計數器變數設為「counter = counter + 1」;3、讓迴圈結束的條件為當計數器把串列的東西全都執行結束時,因此把計數器的值設定為「最大的索引數」, 結果如下所示:
the_BIG4=["Megadeth","Metallica","Anthrax","Slayer"] counter = 0 max_index = len(the_BIG4)-1 while counter <= max_index: bandname = the_BIG4[counter] print(bandname + " is a thrash metal band.") counter = counter + 1
比起來,for 迴圈自帶計數的特性,真的簡化了 Python 程式碼的寫法。所以有機會遇到有次數限制的迴圈時,不妨使用 for 迴圈吧!
更多閱讀:
Python控制結構1.布林值Boolean-True or False?
Python控制結構2.if else條件判斷(1)
Python控制結構2.if else條件判斷(2)
Python控制結構3.布林邏輯:and,or,not
Python控制結構4.運算子優先順序(Operator precedence)一覽
Python控制結構5.while 迴圈
Python控制結構7.List串列與其他運算子的應用
Python控制結構8.List-append,insert,index,len函數
Python控制結構9.Range數列生成
Python控制結構10.for迴圈
Python控制結構11.實作簡單的計算機
Python控制結構2.if else條件判斷(1)
Python控制結構2.if else條件判斷(2)
Python控制結構3.布林邏輯:and,or,not
Python控制結構4.運算子優先順序(Operator precedence)一覽
Python控制結構5.while 迴圈
Python控制結構7.List串列與其他運算子的應用
Python控制結構8.List-append,insert,index,len函數
Python控制結構9.Range數列生成
Python控制結構10.for迴圈
Python控制結構11.實作簡單的計算機