Python又要來看''迴圈''了!不是已經討論過了嗎,怎麼又來! 這次來點不一樣的吧!

Python又要來看''迴圈''了!不是已經討論過了嗎,怎麼又來! 這次來點不一樣的吧!

看這一篇以前,建議先看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 程式碼的寫法。所以在學完Python教學遇到有次數限制的迴圈時,不妨使用 for 迴圈吧!

 

 

    uidesignxiaoshow 發表在 痞客邦 留言(0) 人氣()