4. 迴圈
I. 迴圈的用途
重複地做一樣的事情
用某個條件判斷決定是否結束不斷重複的輪迴
想想看,日常生活中有那些不斷重複做的事情呢?

在Python程式語言當中,迴圈有兩種表示方法:while 和 for
II. while迴圈
while迴圈A. while迴圈的基本架構
while迴圈的基本架構執行步驟:step1 → step2 → step3 → step4 → (step2 → step3 → step4)×n次
注意! 縮排也別忘了唷!
注意! step1 (計圈變數) 通常有各式型態,接下來我們就會陸續見到
while迴圈撰寫時可能會遇到的錯誤情況
【下方為正確撰寫方式】
【例題1】
小蚯很喜歡
~符號 請寫一個程式能夠讀入一個整數 再印出該整數個~符號
【例題2】
家裡最近領養了一頭神牛超會算數學,只要給他一個數字,他就能加總出從1到該數字的總和 輸入說明 讓使用者能夠輸入一個正整數 輸出說明 若輸入值為10,則輸出55
B. 多變的迴圈
有時候,我們不必使用計圈變數來控制迴圈次數,而是直接改變while的判斷條件來讓迴圈停止
通常這種寫法用於不確定迴圈需要進行幾圈的情況下
【例題1】
小奇有一個很特殊的個性,就是非常討厭偶數,只要看到偶數,就會反覆把它除以二,直到這個數字變成奇數為止。若現在給一個正整數,請問這個數字經過小奇的處理之後,會變成多少呢?
【例題2】
嘗試輸入各種血型來觀看今年的運勢(輸入
00可結束此程式)
偶爾,我們會期待迴圈能永遠執行下去,永不停止
【例題3】
請撰寫一個能讓使用者輸入成績進而判斷:及格、可補考、死當
【例題4】
請撰寫一個能夠不斷印出小印地安人的程式
C. 讓迴圈中途停止或跳過迴圈中的某圈
break
break從上方【例題2】中我們可以發現,需要讓迴圈在i值為 '00' 時結束,須於 while 外頭先宣告 i 變數,讓程式碼看起來似乎有那麼一點不完美,這時,若我們能使用break即能夠避免這樣的情形
break:當電腦執行到break時會立即終止該層迴圈
【例題】
上方【例題2】的改寫
continue
continue偶爾,我們會希望當某個條件成立時,不做某件事而直接進行下一輪迴圈,這時,我們就可以使用continue
continue:當電腦執行到continue時會立即跳過該輪迴圈,直接進行下一輪
【例題】
請製作一個倒數器,讓使用者輸入一個正整數後,即從該正整數開始不斷 -1 直至數到 1 為止,但中間過程若數到 5 的倍數,請跳過
想想看,上方的 i -= 1 與 continue 可以互換位置嗎?
由於continue的特性,我們其實能省略else,因此可將上方程式碼改寫如下:
III. for迴圈
for迴圈for迴圈跟while迴圈用法相似,最主要區別是在while迴圈通常會用於不知道要執行多少圈的情況下,而for迴圈通常用在已經知道要執行多少次的情況
例如:
1. 印出100個
Hello2. 算出某個數字的某次方 3. 算出某個數字的階乘
注意! 若不希望計圈變數在每一圈的變化值都相同,使用while會優於用for
A. for迴圈的基本架構
for迴圈的基本架構for迴圈中也必須有一個計圈變數用來計算目前執行了幾圈,只是計圈變數放在for迴圈結構中。 【每輪迴圈完畢後,計算圈數的變數會產生變動】
以下三種為for迴圈常見的架構
B. for 與 while 間的轉換
for 與 while 間的轉換兩者功能相同,也都需要一個計圈變數來記錄總共跑了幾圈。(唯while較簡便使用於無窮迴圈的情況下)
【例題】
C. for 迴圈的計圈變數
for 迴圈的計圈變數for 迴圈中的計圈變數i沒辦法於range範圍中做更動,舉個範例如下
即使想將過程中的i改為1,但在range中實際上它仍是2 3 4 ,因為在執行range時,它就已經將i值存在一個陣列中,無法更動
補充:迴圈搭配 else
elsepython的迴圈有個很特殊的用法,即是能夠搭配else使用,若迴圈沒有在中途結束執行,就會執行else,舉個範例如下
IV. 巢狀迴圈
A. 巢狀迴圈的意義
巢狀迴圈顧名思義就是迴圈中還有迴圈的概念囉~~
相信大家對積木程式都已經不陌生了,先回想看看這題應該如何解?
先利用迴圈走完一個小三角形 
再利用一個迴圈走完12個相同的小三角形
B. 巢狀迴圈的範例
【例題1】
據說變態的人都喜歡打
A設計一個能讓使用者輸入列和行的程式 例如:列為3,行為5時,輸出: AAAAA AAAAA AAAAA
用while改寫
while改寫【例題2】
輸入n,輸出n行星號,第一行有一個 每往下一行,就多一個星號 例如:n為4時,輸出如下 * ** *** ****
思考看看,第二個for迴圈為何上限寫i+1而非i
你也可以這樣改寫
用while改寫
C. 巢狀迴圈中的 continue 與 break
continue 與 breakbreak與continue都僅作用於本身所存在的該層迴圈而已
上方程式碼執行後的結果如下:
III. 學習單
Last updated
Was this helpful?
