---
# System prepended metadata

title: 5-2 if敘述
tags: [chapter 5, Python]

---

###### tags: `chapter 5` `Python`
# 5-2 if敘述 #
## ``if else``敘述式 ##
在實作程式時，我們常常會遇到不要A只要B的情況，或著是在A情況下我必須做出B動作。流程圖架構大致上為下。

![](https://i.imgur.com/UqA64zK.png)

```python=
程式執行

if 條件判斷式:
    "if"程式碼1
    "if"程式碼2
    ...
else :
    "else"程式碼1
    "else"程式碼2
    ...

繼續剩餘程式
```


例如：你是店員，這時有一位客人進來要買酒，你必須查看他的證件，如果他超過18歲，那就賣給他，如果他小於18歲，那就不能賣給他。

上述故事中有提到兩個"如果"，這幫助我們更容易實現我們得程式，因為"如果"對應到python語法中的"``if``"。

==`if`語法在使用時會搭配上一個條件判斷式==，通常由前兩個小節提到的邏輯&關係運算子組成，根據該條件判斷式的成立與否，我們可以讓程式有不同的輸出，以下給出上述故事的python解法。

```python=
age = int(input("請輸入年齡："))
if age >= 18 :
    print("yes!")
else :
    print("no!!")

# 請輸入年齡：20
# yes!
```

根據上述程式，我們可以發現，`if`後面會接著一個`條件式`，且底下的縮排內容`print("yes!")`為該條件達成時須執行的動作。`else`則代表若`if`後的條件式不成立時，必須執行的程式區塊。因此可以確保這個程式不會同時輸出`yes!`和`no!!`，意味著一個顧客不會同時可以買酒也不能買酒。

## ``if...elif`` 敘述式 ##
並不是每一件事情都是二分法可以搞定的！

那這時候我們會需要`elif`來幫助我們做出更多的分類，`if...elif`的架構和`if else`很像，只差在他不會馬上加上`else`，而是以`else if`的縮寫`elif`代替，藉此進行更多的分類。

![](https://i.imgur.com/E3RrMQM.jpg)


例如：你是一位程式設計師，你接到一個case要你幫忙分辨農曆季節，那你可以這麼實作。

```python=
month = int(input("請輸入月份："))
if 1 <= month <= 3 :
    print("春天")
elif 4 <= month <= 6 :
    print("夏天")
elif 7 <= month <= 9 :
    print("秋天")
elif 10 <= month <= 12 :
    print("冬天")

# 請輸入月份：10
# 冬天
```

在`elif`後面會再加上第二個條件判斷式，如果month不在1和3之間，那他接著會判斷是否在4和6之間，如果也不符合，則會持續往下做條件判斷。

問題：如果有人故意輸入month為13呢？

## ``if...elif...else``敘述式 ##

上面提到的兩種方法也可以混合作使用，使用時機通常是想取出特定區間的樣本時會使用，`elif`和`else`在使用上並不會互相干擾，但`else`只會有一個且一定會在最後面！`elif`則可以根據需求自由新增個數。

例如：你是售票員，公司規定如果客人為6歲以下可以買兒童票，如果18歲以下可以買學生票，其餘則是全票，那麼你可以這麼實作。

```python=
age = int(input("請輸入年齡："))
if age <= 6 :
    print("兒童票!!")
elif age <= 18 :
    print("學生票!!")
else :
    print("全票!!!!")
    

# 請輸入年齡：8
# 學生票!!
```

在`elif`後面加上了`else`來確保不在前面兩個年齡範圍內的客人能夠順利地買到符合身分的票！

![](https://i.imgur.com/krtidSl.png)
不管是`if` `else` `elif`在使用時都必須在行尾加上`:`以及程式碼區塊必須縮排，否則程式會無法運行哦

錯誤示範：
```python=
age = 24
if age < 12 :
print("I'm young!!")
else
print("I'm old !! QAQ")
# 原因：沒有縮排
```
```python=
age = 24
if age < 12 
    print("I'm young!!")
else
    print("I'm old !! QAQ")
# 原因：沒有「:」
```

![](https://i.imgur.com/aCKToZD.png)

