close

Python中for迴圈和while 迴圈比一比!

Python中for 迴圈和while 迴圈比一比!

 

Python教學 今天要給大家說說迴圈。看這一篇之前,建議大家先看這一篇「Python控制結構5.while 迴圈」回憶回憶,複習一下 while 迴圈是什麼。

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串列函數的,將串列表中的所有物件都執行一次的範例:

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 迴圈吧!

 

 

相關文章 

 

arrow
arrow
    創作者介紹
    創作者 Ezra.Yii5778 的頭像
    Ezra.Yii5778

    Java課程是為了今日.Python課程是為了將來

    Ezra.Yii5778 發表在 痞客邦 留言(0) 人氣()