# 10/18 複習選擇結構、講解重複結構
---
## 複習`if-else`
題目:三人成虎
```python=
# 輸入一數字
n = int( input() )
#以下進行判斷
if ...:
```
---
題目:瓜甜?理下!
```python=
# 輸入一數字
w = int( input() )
if ...:
??
elif ...:
??
```
---
## 重複結構的`for` 迴圈
### 開始`for`之前的`range()`觀念
`range()` 會產生一串數列,並可以設定數列的產生方法:
* 括號內可以有三個參數,依序為(起值,終值,間隔)
* 終值不可觸碰,假設給`(1,5,1)`則會有`1,2,3,4`沒有`5`
* `range()`參數可以省略:
* 2參數,`(起,終)`省略間隔(預設+1)
* 1參數,`(終)`省略間隔、起值(預設0)
* 間值可為負值,擔必須 起>終
### `for`基本
```python=
for i in range(10):
print(i)
```
其中`i`為迭代變數,意即「依序從`range(10)`產生的數列取值」。
此`range(10)`產生`[0,1,2,3,4,5,6,7,8,9]`數列,依序取出0,1,2...代入`i` 。
### 補充:補數的概念
以雞兔同籠為例,我們做些觀察:
若已知總數有10隻,但不知道雞、兔的分別數量,我們可以猜測可能的組合有:
| 總數 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 |
| ---- | ---- | --- | --- | --- | --- | --- | --- | --- | ---- | --- | --- |
| 雞 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
|兔|10|9|8|7|6|5|4|3|2|1|0|
假設有`3`隻雞時,因為總數是`10`,可知兔的數量必定是`10-3=7`。
當有`10`隻雞時,可知兔的數量必定是`0`。
那麼我們擴展一下上面的到的概念,假設:
**找人來問問吧**
* 總數量是`n`
* 當有0隻雞時,兔的數量是
* 當有1隻雞時,兔的數量是
* 當有2隻雞時,兔的數量是
* 當有`i`隻雞時,兔的數量是
解析:總數量是`n`,而假設有`i`隻雞時,兔的數量為`n-i`,這就是我們說所謂的「補數」。
```
(i) + (n-i) = n
```
---
### `for`小小習題
練習一:輸入正整數n,印出1~n(含)
```python=
# 輸入數字 n
n = int(input())
for ...
```
練習二:輸入正整數n,印出0,2,4,6...n(不含)
```python=
# 輸入數字 n
n = int(input())
for ...
```
練習三:輸入數字n,印出n,n-1,n-2...1(含)
**[注意] 此題不可以修改range(參數)**
```python=
# 輸入數字 n
n = int(input())
for i in range(n): #此行不可以改
...
```
---
### 綜合挑戰
挑戰一:使用for迴圈計算總分,輸入段考5科成績,輸出總分。
```python=
# 提示:需要自己設定一個變數來記錄總分
```
挑戰二:使用for重複輸入5筆降雨資料,當輸入與量大於200mm時,輸出「大雨警報」,否則輸出「--」
```python=
# 提示:輸入要放在for內還是外?
```
挑戰三:使用for迴圈找出最大值,題目請參考[這裡](https://jmj.cmgsh.tp.edu.tw/ShowProblem?problemid=a101)
```python=
# 提示:需要自己設定一個變數;以及if來做比較
```