不間斷 Python 挑戰 Day 11 - while 迴圈

閱讀時間約 7 分鐘
另一種迴圈的形式是while迴圈,和for迴圈常常可以達到相同的功能,差別在於for迴圈是在一定的範圍內迭代,例如從1到100,或是串列裡的每一個元素;而while迴圈是一個條件判斷的迴圈,當滿足這個條件就執行迴圈的內容,不滿足時就跳出迴圈。

while 迴圈

while迴圈的基本語法如下,只要滿足condition1條件,就重覆執行A區塊程式:
while condition1:
Do A
while迴圈和for迴圈常常是可以互相改寫,並沒有一定的寫作準則,例如以下的例子,想要印出從0到9的整數,使用for迴圈和while迴圈都可以達到一樣的目的。
使用for迴圈:
# for loop
for i in range(10):
print(i, end=" ")
使用while迴圈:
# while loop
i = 0
while i < 10:
print(i, end=" ")
i += 1
執行結果:
0 1 2 3 4 5 6 7 8 9
但在一些情況下,例如需要迭代的次數未知,或是某些條件是透過與使用者的互動才會產生,那使用while迴圈會更適合一些。
以下範例展示,假設我們在銀行存入10000元,年利率為1%,至少需要經過多少年才能將本金翻倍,由於「多少年」是未知數,但我們知道條件是「本金翻倍」,因此這裡適合使用while迴圈:
principal = 10000
year = 0
interest_rate = 0.01

while principal < 20000:
principal = principal * (1 + interest_rate)
year += 1

print(year)
執行結果顯示70年才能將本金翻倍。
70
另一個例子簡單展示一個和使用者互動的例子,當使用者輸入「q」時,跳出迴圈:
input_chr = ""
while input_chr != "q":
input_chr = input("輸入q結束:")
執行結果:
輸入q結束:a
輸入q結束:f
輸入q結束:e
輸入q結束:g
輸入q結束:q

巢狀while迴圈 (Nested while loop)

和for迴圈一樣,while迴圈也允許巢狀迴圈,其語法如下:
while condition1:
while condition2:
Do something
引用在進階for迴圈裡九九乘法表的例子,使用while迴圈我們也可以這樣寫:
i = j = 1
while i < 10:
while j < 10:
print("%d*%d=%-4d" % (i, j, i * j), end=" ")
j += 1
i += 1
j = 1
print()

無窮迴圈

無窮迴圈指的就是永遠不會停止的迴圈。使用無窮迴圈通常有其目的,例如程式要隨時監控外界訊號的中斷或使用者的輸入,來決定要做出什麼樣的反應,如果不是,常常是程式寫錯了,設定了一個永遠不會被違背的條件,讓程式永遠停在迴圈內無法往下執行,寫作時必須特別注意。
最簡單的一個無窮迴圈可以這樣寫,但我這邊加上註解,因為一旦真的這樣寫,程式就永遠卡住,必須試試「ctrl + C」或是停止編譯器來終止程式運行。
# while True:
# Do something

break指令

while迴圈和for迴圈一樣,也可搭配break指令來使用,其基本語法如下,表示在while迴圈內,當滿足了condition2的條件後,可以在執行完B區塊程式後直接跳出迴圈:
while condition1:
Do A
if condition2:
Do B
break
Do C
以前面和使用者互動的例子來說,結合無窮迴圈與break指令,我們也可以這樣寫:
input_chr = ""
while True:
input_chr = input("輸入q結束:")
if input_chr == "q":
break

continue指令

while迴圈也可以搭配continue指令來使用,其基本語法如下,表示當滿足了condition2的條件之後,可以在執行完B區塊程式後直接進入下一個迴圈,而不執行C區塊程式:
while condition1:
Do A
if condition2:
Do B
continue
Do C
基本for迴圈的continue指令段落,我們使用for迴圈和continue指令,來印出range()範圍內的奇數,同樣也可以用while迴圈來改寫:
i = 0
odd_list = []
while i < 10:
i += 1
if i % 2 == 0:
continue
odd_list.append(i)
print(odd_list)
執行結果:
[1, 3, 5, 7, 9]

else指令

else指令是使while迴圈在條件不滿足後,執行另一個程式區塊,其基本語法如下,當condition1滿足時,執行A區塊程式,一旦condition1條件不滿足後,就執行B區塊程式,再結束while迴圈:
while condition1:
Do A
else:
Do B
在上面continue指令的例子中,我們可以多加一個else指令,做為while迴圈結束時的提示訊息:
i = 0
odd_list = []
while i < 10:
i += 1
if i % 2 == 0:
continue
odd_list.append(i)
else:
print(f"End of counting odd number to {i-1}")
print(odd_list)
執行結果:
End of counting odd numbers to 9
[1, 3, 5, 7, 9]

程式範例

為什麼會看到廣告
avatar-img
47會員
36內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Wei-Jie Weng的沙龍 的其他內容
目前為止,我們學到了基本的for迴圈,也就是僅對一個可迭代物件進行迭代。當一個迴圈裡面還有另一個迴圈,這時就形成了巢狀迴圈,最基本的例子就是九九乘法表,每個被乘數都對應到9個乘數,當被乘數和9個乘數都計算完了之後,才換下一個被乘數,不斷迴圈直到每個被乘數和乘數都計算過。另個for迴圈的應用是將串列和
綜合前幾天所學的內容,這裡實作了一個專題-密碼產生器。在這個專題中,我們運用了變數、串列、for迴圈、random模組等概念,讓使用者可以從數字、符號、英文字母中指定字元的數目,隨機生成一串密碼。
透過random模組生成的隨機數並非是真正完全隨機的,而是可以被重現的,因此這個特徵也被稱為是偽隨機(pseudo-random),而重現隨機數的方式便是透過設定相同的種子(seed),或是設定隨機數生成器的狀態(state)來達成。
當我們需要在程式中模擬或實作一些隨機發生的事件,例如模擬猜拳、丟骰子的結果,便需要程式可以根據開發者輸入的數值範圍、型態等,隨機產生一個結果,而Python的random()函數便是用於實現這個功能。
當我們需要重複一系列有規則的行為,例如從1加到100,或是取得物件裡面的每一個元素,例如將串列裡面的每個元素印出,重複地撰寫程式碼顯然不切實際,for迴圈便是可以讓程式對可迭代物件(iterable object)執行迭代(iteration)的工具。
前面提到變數為程式儲存資料的地方,一個變數可以儲存一個學生的成績、一個人的身高、或是一個人名等,但如果多人的資料要管理,為每個人設計一個變數顯然就有點不切實際,串列就是用來解決這樣的問題。
目前為止,我們學到了基本的for迴圈,也就是僅對一個可迭代物件進行迭代。當一個迴圈裡面還有另一個迴圈,這時就形成了巢狀迴圈,最基本的例子就是九九乘法表,每個被乘數都對應到9個乘數,當被乘數和9個乘數都計算完了之後,才換下一個被乘數,不斷迴圈直到每個被乘數和乘數都計算過。另個for迴圈的應用是將串列和
綜合前幾天所學的內容,這裡實作了一個專題-密碼產生器。在這個專題中,我們運用了變數、串列、for迴圈、random模組等概念,讓使用者可以從數字、符號、英文字母中指定字元的數目,隨機生成一串密碼。
透過random模組生成的隨機數並非是真正完全隨機的,而是可以被重現的,因此這個特徵也被稱為是偽隨機(pseudo-random),而重現隨機數的方式便是透過設定相同的種子(seed),或是設定隨機數生成器的狀態(state)來達成。
當我們需要在程式中模擬或實作一些隨機發生的事件,例如模擬猜拳、丟骰子的結果,便需要程式可以根據開發者輸入的數值範圍、型態等,隨機產生一個結果,而Python的random()函數便是用於實現這個功能。
當我們需要重複一系列有規則的行為,例如從1加到100,或是取得物件裡面的每一個元素,例如將串列裡面的每個元素印出,重複地撰寫程式碼顯然不切實際,for迴圈便是可以讓程式對可迭代物件(iterable object)執行迭代(iteration)的工具。
前面提到變數為程式儲存資料的地方,一個變數可以儲存一個學生的成績、一個人的身高、或是一個人名等,但如果多人的資料要管理,為每個人設計一個變數顯然就有點不切實際,串列就是用來解決這樣的問題。
你可能也想看
Google News 追蹤
Thumbnail
while 迴圈的運作方式 就是這樣的,它會一直執行程式碼,直到 while 條件變成 False 才會停止。雖然一開始看起來有些奇怪,但這是它的設計特點。讓我進一步解釋這段程式碼的執行邏輯,幫助你理解它為什麼這樣運作。
Thumbnail
本文介紹了 while 迴圈 的基本概念和語法,適用於不確定重複次數的情況。透過設定判斷條件,while 迴圈能夠靈活控制程式碼的執行。範例中展示了如何印出從 1 到 10 的數字,並強調了更新計數器以避免無窮迴圈的重要性。這使得 while 迴圈成為程式設計中一個實用的控制結構。
Thumbnail
在寫程式時,重複執行指令是常見需求。Python 提供了兩種迴圈結構:for-in 迴圈和 while 迴圈。for-in 迴圈適合已知迴圈次數或進行容器迭代;while 迴圈則用於不確定迴圈次數的情境。本文將介紹這兩種迴圈的基本用法及練習範例。
Thumbnail
這篇內容,將會講解什麼是「for迴圈」,以及與「for迴圈」相關的知識。包括for迴圈的簡介、for迴圈、break、continue。
Thumbnail
在流程控制中,最常用的就是for loop 或是 while loop 語法了。 最常見的場景就是根據條件判斷式,重複執行特定的指令。 如果要在python寫出類似C/C++ for loop,可以怎麼寫呢? 透過索引去進行迭代 for var in range( start=0, sto
※ 迴圈控制的兩個指令:break(跳脫)、continue(繼續) break(跳脫):當遇到一個需要強制脫離迴圈的情境,使用break(跳脫)就會直接跳出迴圈。 continue(繼續):用於跳過迴圈目前的迭代,直接開始下一次迭代的執行。 造成無限迴圈的例子: 說明: 當 x 的值
※ 迴圈(for loop)介紹: 迴圈的用途是重複執行程式碼,只要條件滿足,就會執行特定的動作。 for (let i = 0; i < 10; i = i + 1) { console.log(i); } 說明: for:對於。 let:因為迭代器的數值會一直改變所以要用let
Thumbnail
有別於上一篇for迴圈[Python基礎]流程控制for迴圈,while迴圈則常常被說是無限迴圈,若未到達跳脫的條件,是不會停止的。 在日常生活中,我們也常常用到這個概念,例如泡奶粉,要一直攪拌到粉都溶解了為止,其中的一直跟為止就等於while迴圈概念一樣,一直做到某個條件滿足了被觸發才停止。
Thumbnail
for,while,do while語法介紹 for loop for比較偏向固定圈數型的迴圈 語法 for(計數變數初值; 布林運算式 ; 增量運算) { : 一般指令; : }
Thumbnail
while 迴圈的運作方式 就是這樣的,它會一直執行程式碼,直到 while 條件變成 False 才會停止。雖然一開始看起來有些奇怪,但這是它的設計特點。讓我進一步解釋這段程式碼的執行邏輯,幫助你理解它為什麼這樣運作。
Thumbnail
本文介紹了 while 迴圈 的基本概念和語法,適用於不確定重複次數的情況。透過設定判斷條件,while 迴圈能夠靈活控制程式碼的執行。範例中展示了如何印出從 1 到 10 的數字,並強調了更新計數器以避免無窮迴圈的重要性。這使得 while 迴圈成為程式設計中一個實用的控制結構。
Thumbnail
在寫程式時,重複執行指令是常見需求。Python 提供了兩種迴圈結構:for-in 迴圈和 while 迴圈。for-in 迴圈適合已知迴圈次數或進行容器迭代;while 迴圈則用於不確定迴圈次數的情境。本文將介紹這兩種迴圈的基本用法及練習範例。
Thumbnail
這篇內容,將會講解什麼是「for迴圈」,以及與「for迴圈」相關的知識。包括for迴圈的簡介、for迴圈、break、continue。
Thumbnail
在流程控制中,最常用的就是for loop 或是 while loop 語法了。 最常見的場景就是根據條件判斷式,重複執行特定的指令。 如果要在python寫出類似C/C++ for loop,可以怎麼寫呢? 透過索引去進行迭代 for var in range( start=0, sto
※ 迴圈控制的兩個指令:break(跳脫)、continue(繼續) break(跳脫):當遇到一個需要強制脫離迴圈的情境,使用break(跳脫)就會直接跳出迴圈。 continue(繼續):用於跳過迴圈目前的迭代,直接開始下一次迭代的執行。 造成無限迴圈的例子: 說明: 當 x 的值
※ 迴圈(for loop)介紹: 迴圈的用途是重複執行程式碼,只要條件滿足,就會執行特定的動作。 for (let i = 0; i < 10; i = i + 1) { console.log(i); } 說明: for:對於。 let:因為迭代器的數值會一直改變所以要用let
Thumbnail
有別於上一篇for迴圈[Python基礎]流程控制for迴圈,while迴圈則常常被說是無限迴圈,若未到達跳脫的條件,是不會停止的。 在日常生活中,我們也常常用到這個概念,例如泡奶粉,要一直攪拌到粉都溶解了為止,其中的一直跟為止就等於while迴圈概念一樣,一直做到某個條件滿足了被觸發才停止。
Thumbnail
for,while,do while語法介紹 for loop for比較偏向固定圈數型的迴圈 語法 for(計數變數初值; 布林運算式 ; 增量運算) { : 一般指令; : }