iT邦幫忙

1

【Python】5.拒絕重複複製貼上!讓 for / while 迴圈幫你做苦工

  • 分享至 

  • xImage
  •  

今天,我們要來解鎖電腦-不知疲倦的超強體力。

Python 兩種常用的迴圈幫手:for 迴圈與 while 迴圈

想像一下,如果老闆今天叫你印出 Hello 這句話 100 次,老實的做法是複製貼上 100 行 print("Hello"),那如果要印一萬次呢?手可能會先廢掉。

這時候就是 「迴圈(Loop)」 登場的絕佳時機!迴圈的本質就是:「只要你開出條件,電腦就能在 0.1 秒內幫你重複做完幾萬次苦工,而且絕對不喊累。」

📦 幫手一:for 迴圈——工廠的自動傳送帶

for 迴圈最適合用在「你已經明確知道要重複執行幾次」的情況。

🏭傳送帶的生活小譬喻

請把 for 迴圈想像成工廠的「產品傳送帶」。
傳送帶上排著一列盒子,for 迴圈的工作就是:把盒子一個一個拿下來,處理完,再拿下一盒,直到傳送帶空了就下班。
在 Python 裡,我們常搭配 range() 這個指令來製造傳送帶。
例如,我們想讓電腦數到 5:

for i in range(1, 6):
    print("現在數到:", i)

執行後,終端機會印出:

現在數到: 1
現在數到: 2
現在數到: 3
現在數到: 4
現在數到: 5

⚠️ 新手村必踩地雷:range() 的「含頭不含尾」陷阱!

仔細看上面的程式碼,我寫的是 range(1, 6),但電腦卻只印到 5?這不是 Bug,這是 Python 的設計哲學!
range(起點, 終點) 的邏輯是:包含起點,但不包含終點(顧前不顧後)。

• range(1, 6) 代表的是:1, 2, 3, 4, 5(不包含 6)。
• 如果你只寫一個數字,例如 range(5),代表起點預設從 0 開始,總共要 5 個數,所以是:0, 1, 2, 3, 4。

💡 新手記法:range(5) 括號裡寫幾,內部的程式碼就乖乖執行幾次!

🏃 幫手二:while 迴圈——只要不停電,我就跑到死

與 for 迴圈不同,while 迴圈適合用在「不知道要重複幾次,只知道當某個條件滿足時,就要一直做」的情況。

🏃 跑步機的生活小譬喻

請把 while 迴圈想像成「健身房的跑步機」。
只要「跑步機有電(條件為 True)」,你就要一直在上面跑;只有當「按下停止鈕(條件變成 False)」,你才能走下來。
我們來看一個數到 3 的例子:

count = 1
while count <= 3:
    print("現在計數:", count)
    count = count + 1  # ⚠️ 這行是關鍵!把便利貼往後貼

執行結果:

現在計數: 1
現在計數: 2
現在計數: 3

🚨 驚悚危機:無窮迴圈(Infinite Loop)

請注意上面程式碼的最後一行 count = count + 1(利用 Day 3 學的便利貼哲學,每次把數字加 1)。
如果我們忘記寫這行,會發生什麼恐怖的事?

  1. 第一次檢查:count 是 1,小於等於 3,印出數字。
  2. 第二次檢查:因為沒有加 1,count 還是 1,小於等於 3,繼續印……
  3. 第三次、第四次……第十萬次,count 永遠是 1,永遠小於等於 3。
  4. 電腦就會陷入瘋狂大當機,螢幕上的數字開始無限瘋狂飆升!這就是傳說中的**「無窮迴圈」**

🛠️ 當機自救指南:
如果你在執行 while 迴圈時發現終端機停不下來,請立刻在鍵盤上按下 Ctrl + C,這是不按牌理出牌的「緊急斷電鈕」,可以強制終止瘋狂的電腦!

⚖️ 快速總結:我到底該用哪一個?
• 用 for 迴圈的時機:你想讓程式罰站 10 次、想把購物清單裡的 5 個物品依序印出來(明確知道數量)。
• 用 while 迴圈的時機:玩遊戲時,只要玩家還沒死(血量 > 0),遊戲就要一直進行;或者猜數字遊戲,只要玩家沒猜對,就要一直讓玩家輸入(不確定玩家會猜幾次)。

一樣別忘了,迴圈底下要執行的內容,必須乖乖使用 「縮排」 喔!

今日結語:你解鎖超能力了嗎?

今天我們學會了用 for 與 while 操控重複發生的事情。到了今天,你已經掌握了變數、判斷式與迴圈,這已經是寫程式 80% 的內功基礎了!
接下來我們該如何把一堆亂七八糟的變數打包收納,認識程式世界裡的超強收納術——「容器型態(List/Dict)」!

🧑💻 今日小作業

試著用 for 迴圈與 range(),讓電腦自動幫你計算出 1 加到 10 的總和是多少(提示:要在迴圈外面先準備一個 total = 0 的變數來幫忙累積喔!)。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言