2. Python筆記 - 流程控制及迴圈
2-1. 流程控制2-1-1. if 指令
if 指令用來判斷條件句是否成立, 才執行敘述區塊. 需特別留意, 條件句結尾需冒號, 並且敘述區塊強制縮排. 當條件句條件成立(true)時, 程式會執行敘述區塊的程式碼; 反之條件句條件不成立(false), 程式不會執行敘述區塊程式碼.
2-1-2: if + else 指令
相信大部分的人無法滿足 if 指令的功能, 因為當條件句為 false 時, 我們也希望程式也有所作為. 這時候就需要 else 登場了. 當條件句為true時, 執行敘述區塊1的程式碼; 當條件句為false時, 執行敘述區塊2的程式碼.
Ex:
大家可能會對執行結果充滿訝異, 為什麼我輸入1, 但是程式顯示我輸入的不是1呢? 這時候我們要回到前一篇提到的 資料型態, num是一個從鍵盤輸入的值, 它的資料型態是字串(str), 所以在上面程式碼, 我們需要改寫成如下的形式.
執行結果:
把輸入的變數, 直接從str轉成int, 方便之後做比較. (但可能會衍生其他問題, 譬如使用者輸入非數字, 無法轉成int. 此時該怎麼辦呢? 後續談到例外處理, 再來處理這樣的問題.)
2-1-3: if + elif + else 指令
儘管 if + else 已經讓我們很滿意了, 不過貪心的我們, 還是希望可以有更多的功能, 以方便碰到多重選擇時, 不用使用巢式判斷式(nested condition statement). 這時候, 我們可以使用 if + elif + else 的寫法.
Ex:
執行結果:
從上述的例子知道, 針對不同的需求, 可使用不同的工具來處理問題, 讓程式的撰寫更靈活.
2-2.迴圈
Python的迴圈有兩種, for迴圈 及 while迴圈. 兩種迴圈主要的分別為, 如果有清楚的計算次數, 使用 for迴圈; 如果沒有清楚的計算次數, 但有清楚的條件限制, 使用 while迴圈.
2-2-1. for 迴圈
for迴圈的運作機制為程式會從iterable object(迭代物件)取出一個項目, 代入Variable中, 接著執行敘述區塊, 直到iterable object皆取出的為止.
直接看運作的機制可能有點抽象, 我直接從例子來做說明. 下面這段程式碼輸出1~10, 並且逐次加總. i 就是Variable(迴圈變數), range(1,11)就是iterable object(迭代物件). range(1,11)的意思為程式會逐次把1,2,3...10放到變數 i. 直到執行完i=10, i=11不會被執行. 所以就會產生如下的執行結果.
執行結果:
2-2-2. while迴圈
while迴圈就相對好理解, 只要condition為true, 就執行敘述區塊; condition為false, 就跳過. 需注意的是避免condition永遠為true, 就會變成無窮迴圈.
下面這是一個簡單的範例. 利用while迴圈讓使用者輸入正確答案, 再利用 if 迴圈判斷是否正確, 然後跳出迴圈.
執行結果:
2-2-3: 迴圈的else
for 及 while 迴圈都支援 else 敘述, 當迴圈不是因為 break, return, 或是例外終止時, else 裡的描述會被執行.
2-2-4: break 和 continue
for 和 while 迴圈都支援 break 和 continue. 這兩者功能說明如下:
break: 跳出迴圈, 無論在迴圈什麼地方.
continue: 略過(本次)迴圈剩餘的程式碼, 並回到condition重新判斷.
2-2-5: 巢式迴圈 (nested loop)
巢式迴圈是一種很常用的技巧, 利用這種巢式寫法, 可以解決很多比較複雜的問題, 像如果我要列出99乘法表, 如果只使用單一迴圈來寫, 就會變得相當複雜. 下面是巢是巢式迴圈的範例程式.
執行結果:
Version 1 @ 12/22/17
0 留言