不能錯過的Python控制結構:(10)for迴圈

 

先前的Python教學我們已經教過你While迴圈了,而這篇要教你的是for迴圈!

 

看這一篇之前,建議先看這一篇Python教學:「Python控制結構5.while 迴圈」複習 while 迴圈。

Python 中,若我們要多次重複執行一個指令,我們可以使用迴圈(loops)。迴圈中的程式碼會用以下的方式執行指令:1、按照所指定的次數,重複執行;2、重複執行,直到特定的條件成立時結束;3、針對某一集合(例如:Python list串列之中的物件)中的所有項目,都各執行一次。

for 迴圈 vs. while 迴圈

先前我們曾經介紹過的 while 迴圈用法與 if 條件判斷式相似,只要給予的條件成立(即為「True(真)」),它就會執行。不同的是執行次數,if 只執行一次;while 迴圈則輪迴執行無限多次 (除非有設定讓迴圈結束的條件且條件成立)。

while 迴圈只要「沒有」另外設定「迴圈結束的條件(如:if 、break)」,迴圈就會無限的循環。這次我們要介紹的 for 迴圈則是在一行內就 自帶計數功能的迴圈,可以將重複循環控制在固定的數量內。

讓我們來看看Python教學,給的以下這個 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串列函數的,將串列表中的所有物件都執行一次的範例:

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控制結構:(5)while迴圈

不能錯過的Python控制結構:(完)實作簡單的計算機

不能錯過的Python控制結構:(1)布林值

AI人工智慧日益進步,張忠謀:過半人力將被替代!!該如何自保?

觀察一下URL的蛛絲馬跡,你會發現SEO優化比你想像中的有趣!

暑假快到了!與其讓兒子盲目拚學測,我寧可讓他先選擇人生方向~

中國IT教育領導品牌 達內教育集團第一家海外授權中心

 

 

arrow
arrow
    創作者介紹
    創作者 Uder.chain 的頭像
    Uder.chain

    娶了UI設計師的Python工程師-北歐生活

    Uder.chain 發表在 痞客邦 留言(0) 人氣()