選擇結構

由上而下一行接一行逐行執行,即使再執行一次其流程仍不會改變,此種程式架構稱為「循序結構」。

較複雜的程式會應程式的需求,依照條件式的不同而進行不同的執行流程,而得到不同的結果,這種架構就是「選擇結構」。

Python提供的 if 選擇結構敘述如下:

  1. 單向選擇: if … 
  2. 雙向選擇: if … else …
  3. 巢狀選擇: if … else …
  4. 多向選擇: if … elif … else

選擇結構中會有條件式,依照條件式的不同會執行不同的程式流程。條件式可以使用前面介紹的關係和邏輯運算式來編寫。

1.  單向選擇 if…

所謂 「單向選擇」是指當 if 的條件式成立為 True  時,會執行 if 條件式「:」冒號後面縮排的敘述區段;若if的條件式不成立為 False 時,則跳過 if 單向選擇結構,執行縮排敘述區段後的敘述。語法及流程圖如下:

[例] 求num的絕對值

[例] 成績在55分以上未達60分者,以60分計分。

Python3.8中新增「:=」指定表式(Assignment Expressions 或稱指派表示式),因為符號很像海象臉部的眼睛和長牙,因此被暱稱為海象運算子。指定表式可縮短程式碼加快執行速度,但會降低可讀性,可自行視需求使用。例如:

2. 雙向選擇 if…else…

「雙向選擇」是指當條件式成立時,執行 if 條件式「:」冒號後面的敘述區段1;若條件式不成立時,則執行 else 「:」冒號後的敘述區段2。

語法及流程圖如下:

[例] 門票300元,若年齡低於10歲或65歲以上半價。

[例] 根據成績及格或不及格,給予不同回饋。

[簡例] 輸入密碼,若密碼正確,顯示「密碼正確,歡迎光臨」;若密碼不正確,顯示「密碼錯誤,拒絕進入」。 (檔名: password.py)

3. 巢狀選擇 if…else…

所謂 「巢狀選擇」是指 ifelse 的敘述區段裡面,還有選擇結構,巢狀選擇結構就是將雙向選擇延伸成多向選擇。語法及流程圖如下:

[簡例] 給予三個整數,使用巢狀選擇結構來找出三個整數中的最大數。 (檔名:max.py)

4. 多向選擇 if…elif…else

當選擇的項目超過兩個,也可以使用「多向選擇」結構來處理。除第一個條件使用 if 判斷外,其他都使用elif,最後以 else 處理剩下的可能性。

[簡例] (檔名:movie.py)
根據最低年齡制定電影分級,電影分級的規則如下:

  1. 普遍級:0歲以上皆可欣賞。
  2. 保護級:6歲(含)以上皆可欣賞。
  3. 輔導級:12歲(含)以上皆可欣賞。
  4. 限制級:18歲(含)以上皆可欣賞。
  5. 預設為普遍級。

相關主題與延伸閱讀

此資料夾下有 3 條筆記。