###### tags: `chapter 5` `Python`
# 5-3 巢狀結構 #
假設今天給定一個問題:成績排名在第一名的同學,如果他的總平均超過90分,那頒發20000元獎學金,否則只有15000元。
這個問題需要比對每一個同學的成績,可以拆成兩個地方來看,分別是`這位同學是不是第一名`以及`他的總平均有沒有超過90分`。
你會怎麼實作呢??
```python=3.7
score, rank = 91, 1
if score >= 90 and rank == 1 :
print("獲得20000元!")
else :
print("獲得15000元!")
```
這樣子寫對嗎?
如果實際設計測資去跑這段程式碼,你會發現,除了第一名以外的所有同學都可以拿到15000元哦~ ~~(yeah!!)~~。
為甚麼會這樣是因為在同時判斷分數大於90分以及排名等於1的時候會無法過濾掉根本就沒有領獎資格的學生(第2名之後的),因此我們要用到接下來要介紹的==巢狀結構==。
`巢狀結構`指的是`if`裡面再包入一個`if`,~~其實不是一個多重要的名稱~~,但可以幫助我們解決更多的問題,有了巢狀結構的概念,我們可以這樣解決上述的問題。
```python=3.7
if rank == 1 :
if score >= 90 :
print("獲得20000元!")
else :
print("獲得15000元!")
else:
print("沒有獎學金可以拿QAQ!")
```
轉換為流程圖的話是這個樣子:

`巢狀結構`的寫法讓我們在第一個`if`就過濾掉了第1名以外的所有學生,因此不用怕其他學生有辦法拿到獎學金。