Python 入門指南 V2.00 - 單元 6 - 選擇




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



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


   if 3 > 5:
      print("Oh! 3 is bigger than 5!")

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


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


   if 3 > 5:
      print("Oh! 3 is bigger than 5!")
   else:
      print("Not Bad! 3 is not bigger than 5!")

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


   if 3 > 5:
      print("Oh! 3 is bigger than 5!")
   elif 4 > 5:
      print("Oh! 4 is bigger than 5!")
   elif 5 > 5:
      print("Oh! 5 is bigger than 5!")
   elif 6 > 5:
      print("Of course! 6 is bigger than 5!")
   else:
      print("There is no case :(")

我們將以上寫成完整的範例程式,如下


001print()
002if 3 > 5:
003   print("Oh! 3 is bigger than 5!")
004elif 4 > 5:
005   print("Oh! 4 is bigger than 5!")
006elif 5 > 5:
007   print("Oh! 5 is bigger than 5!")
008elif 6 > 5:
009   print("Of course! 6 is bigger than 5!")
010else:
011   print("There is no case :(")
012print()
013  
014# 檔名: select_demo.py 
015# 作者: Kaiching Chang 
016# 時間: July, 2014

執行結果如下



另舉一例如下


001print()
002s = 6
003if s == 3:
004   print("3...")
005elif s == 4:
006   print("4...")
007elif s == 5:
008   print("5...")
009elif s == 6:
010   print("6...")
011else:
012   print("There is no case :(")
013print()
014  
015# 檔名: select_demo2.py 
016# 作者: Kaiching Chang 
017# 時間: July, 2014

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



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


中英文術語對照


選擇selection
條件condition
if 陳述if statement
關鍵字keyword
縮排indentation
區塊block
陳述statement
變數variable
常數constant
複合陳述compound statement
選擇結構selection structure
重複結構repetition structure
迴圈loop

重點整理


  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.cpp ,要求使用者輸入考試分數,若是低於 60 分印出 "Bad!" , 60 到 70 分印出 "Not Bad!" , 70 到 80 分印出 "Good!" , 80 到 90 分印出 "Great!" , 90 到 100 分印出 "Excellent!" , 100 印出 "Perfect!"

the end

沒有留言: