--- tags: Python --- # 選擇結構 ## 條件式 條件式指所有可以回傳真假值的式子, 像是 `a < b` `a == b` 等等都是條件式, 並且條件式也可以使用`and` `or`來合併, 因此條件式中常常會有關係運算子與邏輯運算子的蹤影。 --- ## if-else-statement `if` 可以篩選符合特定條件的變數做運算,若不符合則會直接跳過`if`中的程式碼。 寫法: ```python= if 條件式: #code here ``` 假設我要判斷一個輸入是否小於10,可以寫成以下程式碼: ```python= num = int(input("輸入一個數字: ")) if num <= 10: print(num, "小於等於10") ``` 當我們想要把大於10的也輸出出來,可能會先想到下列寫法: ```python= num = int(input("輸入一個數字: ")) if num <= 10: print(num, "小於等於10") if num > 10: print(num, "大於10") ``` 看起來有許多重複,造成程式碼的條件有點冗長,是否有方法可以解決呢? 其實Python提供了 `else` 敘述,可以讓你包含所有不符合該條件式的情況(所以`else`必須寫在`if`後面), 使用`else`可以改寫成: ```python= num = int(input("輸入一個數字: ")) if num <= 10: print(num, "小於等於10") else: print(num, "大於10") ``` 當我們想要把等於10的情況也分隔出來,一開始可能會使用: ```python= num = int(input("輸入一個數字: ")) if num < 10: print(num, "小於10") else: if num == 10: print(num, "等於10") else: print(num, "大於10") ``` 這種寫法稱為巢狀選擇結構。 但Python還提供了一個更方便的寫法 -- `elif` 敘述, `elif`其實是`else if`的縮寫,就跟巢狀結構中使用 `else` 再寫 `if` 是一樣的功能。 改寫後的程式碼會如下: ```python= num = int(input("輸入一個數字: ")) if num < 10: print(num, "小於10") elif num == 10: print(num, "等於10") else: print(num, "大於10") ``` 可以看到在這個例子中使用 `elif` 的程式碼又變得更加簡潔, 巢狀結構與 `elif` 皆有適用的情形,看使用者的運用可以讓他更加容易閱讀。 --- ## and or not的使用 我們可以在條件式中加入`and`或是`or`來合併多個條件式, 詳細`and` `or`的邏輯在[運算子](https://hackmd.io/@alanlin/operator)章節有講解過。