Python 入門指南

單元 6 - 選擇

~~學習進度表~~

程式中的選擇 (selection) 就是依條件 (condition) 使程式有不同的執行方向,若條件為真,也就是 True ,程式就會跳過 False 的部份執行 True 的部份,反之亦然

if condirion1:
  pass
elif condition2:
  pass
else:
  pass

選擇結構有單一選擇跟多重選擇,兩者都使用 if 陳述 (if statement)if關鍵字 (keyword) 之一,若是多重選擇 if 須與 elifelse 連用。單一選擇,也就是單獨使用 if 陳述如下

if 3 > 5:
  print("什麼!三居然大於五!")
   
#《程式語言教學誌》的範例程式
# https://kaiching.org/
# 檔名:sec_demo01.py
# 功能:示範 Python 中的選擇陳述
# 作者:張凱慶 */

條件為 if 後面到冒號的範圍,上例為 3 大於 5 ,如果 3 大於 5 為真,程式就會執行條件後縮排 (indentation) 的程式區塊 (block) ,其範圍一直到沒有縮排為止,這裡就可以看到 Python 裡頭縮排的意義。如果 3 大於 5 為假,程式自然跳過條件後的程式區塊,去找區塊後的第一個陳述 (statement) 執行。

ifelse 連用,條件為真,執行 if 後的程式區塊,條件為假,就執行 else 後的程式區塊

if 3 > 5:
  print("什麼!三居然大於五!")
else:
  print("還好,三沒有大於五!")
   
#《程式語言教學誌》的範例程式
# https://kaiching.org/
# 檔名:sec_demo02.py
# 功能:示範 Python 中的選擇陳述
# 作者:張凱慶 */

elif 表示其他的條件,形成 if-elif-else 的多重選擇,最後的 else 表示以上皆非

if 3 > 5:
  print("什麼!三居然大於五!")
elif 4 > 5:
  print("什麼!四居然大於五!")
elif 5 > 5:
  print("什麼!五居然大於五!")
elif 6 > 5:
  print("六當然大於五!")
else:
  print("沒有符合的條件!")
  
#《程式語言教學誌》的範例程式
# https://kaiching.org/
# 檔名:sec_demo03.py
# 功能:示範 Python 中的選擇陳述
# 作者:張凱慶 */

以上範例執行結果如下

$ python sec_demo03.py
六當然大於五!
$

C-Style 的程式語言中,另有一種依據常數進行的選擇結構,這在 Python 同樣是用 if-elif-else 的多重選擇來進行,原因不外是 if-elif-else 就能做到相同的功能, Python 以簡單作為原則,因此沒有額外的選擇結構語法。

舉一例如下

print()
s = 6
if s == 3:
  print("3...")
elif s == 4:
  print("4...")
elif s == 5:
  print("5...")
elif s == 6:
  print("6...")
else:
  print("沒有符合的條件!")
print()

#《程式語言教學誌》的範例程式
# https://kaiching.org/
# 檔名:select_demo.py
# 功能:示範 Python 中的選擇陳述
# 作者:張凱慶 */

這裡的條件為判斷某一變數 (variable) 是否符合某一常數 (constant) ,執行結果如下

$ python select_demo.py
 
6...
 
$

複合陳述 (compound statement) 除了選擇結構 (selection structure) 還有重複結構 (repetition structure) ,重複結構也被稱為迴圈 (loop) ,接下來我們就進入討論迴圈的部份。

中英文術語對照
區塊block
複合陳述compound statement
條件condition
常數constant
if 陳述if statement
縮排indentation
關鍵字keyword
迴圈loop
重複結構repetition structure
選擇selection
選擇結構selection structure
陳述statement
變數variable
重點整理
1. 單一的 if 陳述,條件為真時就會執行 if 底下縮排的區塊。
2. 縮排長度通常用 2 到 5 個空格,我們採用 3 個空格。
3. if-else 陳述,條件為真時就會執行 if 底下縮排的區塊,反之執行 else 底下縮排的區塊。
4. if-elif-else 陳述,視哪一個條件為真時就執行該縮排的區塊,如果都不為真,就會執行 else 縮排的區塊, else 就是以上皆為非的情況。
問題與討論
1. 縮排的格數有什麼重要性?超過 5 格或只用 1 格有什麼優缺點?
2. 其他程式語言通常提供兩種以上的選擇結構,為什麼 Python 只有一種?
3. elif 陳述的個數有限制嗎?
練習
1. 寫一個程式 exercise0601.py ,建立兩個變數 ab ,並將 a 設定為 3b 設定為 5 ,利用 if 陳述判斷兩者是否相等,不管是否相等都印出對應的訊息。
2. 承上題,另寫一個程式 exercise0602.py ,改成接受使用者輸入。
3. 寫一個程式 exercise0603.py ,要求使用者輸入考試分數,若是低於 60 分印出 "Bad!" , 60 到 70 分印出 "Not Bad!" , 70 到 80 分印出 "Good!" , 80 到 90 分印出 "Great!" , 90 到 100 分印出 "Excellent!" , 100 印出 "Perfect!"

上一頁 單元 5 - 運算式與陳述
回 Python 入門指南首頁
下一頁 單元 7 - 迴圈
回 Python 教材首頁
回程式語言教材首頁