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

選擇結構有單一選擇跟多重選擇,兩者都使用 if 陳述 (if statement) , if 為關鍵字 (keyword) 之一,若是多重選擇 if 須與 elif 或 else 連用。單一選擇,也就是單獨使用 if 陳述如下
| if 3 > 5: | |
| print("Oh! 3 is bigger than 5!") |
條件為 if 後面到冒號的範圍,上例為 3 大於 5 ,如果 3 大於 5 為真,程式就會執行條件後縮排 (indentation) 的程式區塊 (block) ,其範圍一直到沒有縮排為止,這裡就可以看到 Python 裡頭縮排的意義。如果 3 大於 5 為假,程式自然跳過條件後的程式區塊,去找區塊後的第一個陳述 (statement) 執行。
if 與 else 連用,條件為真,執行 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 :(") |
我們將以上寫成完整的範例程式,如下
| 001 | print() |
| 002 | if 3 > 5: |
| 003 | print("Oh! 3 is bigger than 5!") |
| 004 | elif 4 > 5: |
| 005 | print("Oh! 4 is bigger than 5!") |
| 006 | elif 5 > 5: |
| 007 | print("Oh! 5 is bigger than 5!") |
| 008 | elif 6 > 5: |
| 009 | print("Of course! 6 is bigger than 5!") |
| 010 | else: |
| 011 | print("There is no case :(") |
| 012 | print() |
| 013 | |
| 014 | # 檔名: select_demo.py |
| 015 | # 作者: Kaiching Chang |
| 016 | # 時間: July, 2014 |
執行結果如下

另舉一例如下
| 001 | print() |
| 002 | s = 6 |
| 003 | if s == 3: |
| 004 | print("3...") |
| 005 | elif s == 4: |
| 006 | print("4...") |
| 007 | elif s == 5: |
| 008 | print("5...") |
| 009 | elif s == 6: |
| 010 | print("6...") |
| 011 | else: |
| 012 | print("There is no case :(") |
| 013 | print() |
| 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 |
重點整理
- 單一的 if 陳述,條件為真時就會執行 if 底下縮排的區塊。
- 縮排長度通常用 2 到 5 個空格,我們採用 3 個空格。
- if-else 陳述,條件為真時就會執行 if 底下縮排的區塊,反之執行 else 底下縮排的區塊。
- if-elif-else 陳述,視哪一個條件為真時就執行該縮排的區塊,如果都不為真,就會執行 else 縮排的區塊, else 就是以上皆為非的情況。
問題與討論
- 縮排的格數有什麼重要性?超過 5 格或只用 1 格有什麼優缺點?
- 其他程式語言通常提供兩種以上的選擇結構,為什麼 Python 只有一種?
- elif 陳述的個數有限制嗎?
練習
- 寫一個程式 exercise0601.py ,建立兩個變數 a 及 b ,並將 a 設定為 3 , b 設定為 5 ,利用 if 陳述判斷兩者是否相等,不管是否相等都印出對應的訊息。
- 承上題,另寫一個程式 exercise0602.py ,改成接受使用者輸入。
- 寫一個程式 exercise0603.cpp ,要求使用者輸入考試分數,若是低於 60 分印出 "Bad!" , 60 到 70 分印出 "Not Bad!" , 70 到 80 分印出 "Good!" , 80 到 90 分印出 "Great!" , 90 到 100 分印出 "Excellent!" , 100 印出 "Perfect!" 。
the end
沒有留言:
張貼留言
0.留言請選擇註冊帳號, Google 或 OpenID 均可
1.歡迎留言交流,但不歡迎垃圾留言及廣告留言
2.文章相關問題歡迎提出,請減少情緒性留言
3.非文章相關內容,請到 G+ 社群或 FB 社團提出
4.問作業之留言會被直接刪除
5.莫忘網路禮節
6.可使用部份HTML標記,如 <b> 、 <i> 、 <a>
7.站長保留刪除留言的權力