# Python : 迴圈 ###### tags: `python` `九年級` > 流程控制結構,用來重複執行多次某些指令 ## 一、 For迴圈 > For迴圈的特色為可以配合特定的變數( i, j, k )來控制迴圈的執行方式。 ### 1. Range函數 + 內建函數之一,可以返回一組整數數值。 + 常用於For迴圈 + 該函數回傳的資料類型為**串列** |不同參數傳入|說明|表示範圍| |:------|:------|:------| |range( 10 )|表示為 `0` 至 `傳入整數-1` 的整數範圍|[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]| |range( 1, 10)|表示為 `第一個傳入整數` 至 `第二個傳入整數-1` 的整數範圍|[1, 2, 3, 4, 5, 6, 7, 8, 9]| |range( 1, 10, 3)|表示 `1`開始,每次間隔`+3`並且大小低於`10`的整數|[1, 4, 7]| ### 2. For迴圈基本結構 + 以下透過範例說明迴圈結構 #### 範例1-1 ```python= for i in range(10): print(i) ``` 輸出: >0 >1 >2 >3 >4 >5 >6 >7 >8 >9 #### 範例1-1說明 ```python= for i in range(10): ``` + 使用`for`時需要宣告變數,一般我們習慣用`i`, `j`, `k`來命名 + 變數後方需要設定此迴圈的範圍來依序重複執行,透過 `in` 與 `range()`來設定該變數`i`的範圍 + `range(10)` 表示 `[0,1,2,3,4,5,6,7,8,9]` + 所以此迴圈會執行==10==次,每次`i`的值依序為 ==0,1,2,3,4,5,6,7,8,9== ```python= for i in range(10): print(i) ``` + **冒號下方開始的==縮排==區塊,為For迴圈重複執行的區塊** + 只有一行`print(i)`,表示每次執行迴圈時,將`i`透過`print()`函數印出來 + 歷次執行過程如下表 :::info ```python= for i in range(10): #range(10)=[0,1,2,3,4,5,6,7,8,9] print(i) ``` + 第1次: + 程式到第1行, i被設定為 `0` + 程式來到第2行,執行 `print(i)` ,把 `0` 印出來 + 第2次: + 程式到第1行, i被設定為 `1` + 程式來到第2行,執行 `print(i)` ,把 `1` 印出來 + 第3次: + 程式到第1行, i被設定為 `2` + 程式來到第2行,執行 `print(i)` ,把 `2` 印出來 ... + 第8次: + 程式到第1行, i被設定為 `7` + 程式來到第2行,執行 `print(i)` ,把 `7` 印出來 + 第9次: + 程式到第1行, i被設定為 `8` + 程式來到第2行,執行 `print(i)` ,把 `8` 印出來 + 第10次: + 程式到第1行, i被設定為 `9` + 程式來到第2行,執行 `print(i)` ,把 `9` 印出來 ::: ___ #### 範例1-2 + 請觀察下列範例輸出結果,研究該程式的執行順序 + 觀察i的值在迴圈結束後,迴圈外的輸出結果為何 ```python= for i in range(3): #range()=[0,1,2] print("迴圈內",i) print("迴圈內",i) print("->到迴圈外了",i) ``` >輸出結果: >迴圈內 0 迴圈內 0 迴圈內 1 迴圈內 1 迴圈內 2 迴圈內 2 ->到迴圈外了 2 ___ ## 二、break + 當我們執行到一半突然想終止迴圈時,可以透過`break`指令來中止迴圈 + 通常是配合條件式使用 #### 範例2-1 : 直接用break + 觀察以下範例,直接使用break後,迴圈會在執行到break時直接中止。 ```python= for i in [0,1,2,3,4]: break print(i) print(i) ``` >輸出結果: >0 + 迴圈在第一次 i設定為0時,執行到break便中止該迴圈,所以print(i)會印出0 #### 範例2-2 : 找出23與15的第100個倍數 + 一般來說是配合條件分支使用,才能展現出其功能 ```python= #設定變數count來數第幾個公倍數 count=0 #設定一個較大的範圍讓迴圈能確認到第100個公倍數 for i in range(1,100001): #如果i能被15與23整除,則是公倍數,所以count加一次 if(i%15==0 and i%23==0): count+=1 #加到第100次停止迴圈 if(count>=100): break #跳出到迴圈外後,印出i,便是第100個公倍數 print(i) ``` >輸出結果: >34500 ### 三、continue + 直接進行下一次的迴圈 + 配合條件式使用 #### 範例3-1 : 100000內的奇數有幾個? + 透過continue 來幫助我們計算 ```python= #設定變數count來數第幾個奇數 count=0 #計算1~100000的奇數 for i in range(1,100001): #2的倍數就直接進行下次迴圈 if(i%2==0): continue #count數一次 count+=1 #印出count print(count) ```