# 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來做比較 ```