在程式設計中,迴圈(loop)是另一個非常重要的控制流程結構。迴圈允許我們不斷地重複執行某段程式碼,直到滿足特定條件為止。有了它,我們就能將大量重複性的任務交給程式去處理,實在是太香啦!
本文將介紹迭代的概念,以及兩種主要的迴圈結構:for 迴圈和 while 迴圈。我們將以經典動作射擊遊戲《越南大戰》為例,來理解這些概念。
在了解迴圈之前,我們需要先認識「迭代」這個概念。迭代是迴圈的核心,它是重複執行某個過程的行為。
想像你正在玩《越南大戰》,我們可以將過程拆分為以下行為:
在這個例子中,每一次完整的「推進、遭遇、擊殺」我們稱作一次迭代。你會不斷重複這個動作組合(迭代),直到達成目標條件(過關或遊戲結束)。
For 迴圈用於可預期迭代次數的情況,當滿足特定迭代次數後就會結束。
想像一下《越南大戰》中遊戲的關卡設計,一個章節共有五個關卡,所以我們需要經歷五次迭代,完成五次上述的過程「推進、遭遇、擊殺」,即可通關:
關卡數量 = 5
for 關卡進度 in range(關卡數量):
print(關卡進度)
print("恭喜闖關成功!")
While 迴圈用於不確定需要迭代多少次,而是設定條件,當條件符合時,就會執行 while 迴圈內的程式碼。
就像是《越南大戰》的遊戲機制,根據生命值的狀態來判斷遊戲是否持續進行,遭到攻擊時,生命值減一,只要還有生命值,遊戲就會繼續。如果生命值歸零則遊戲結束:
生命值 = 5
# 遭到攻擊時,需要判定是否能夠繼續遊戲
while 生命值 > 0:
生命值 = 生命值 - 1
print("復活角色,遊戲繼續!")
print("遊戲結束,請投幣!")
讓我們接續上述的遊戲機制,新增額外條件來增加遊戲複雜度,讓你們理解 break, continue 是怎樣的概念。
用於滿足特定條件時,結束整個迴圈。
我們給《越南大戰》加入新的遊戲機制,最終關卡大魔王的攻擊具有一擊必殺的效果,當玩家遭受大魔王攻擊時,無論多少生命值,都會直接遊戲結束:
生命值 = 5
# 遭到攻擊時,需要判定是否能夠繼續遊戲
while 生命值 > 0:
if 敵人 == "大魔王":
print("遭到一擊必殺!")
break # 結束 while 迴圈
生命值 = 生命值 - 1
print("復活角色,遊戲繼續!")
print("遊戲結束,請投幣!")
用於滿足特定條件時,結束本次迭代,繼續下一個迭代。
《越南大戰》本身有一個遊戲機制,當遭到木乃伊的毒氣攻擊時,會變身為行動緩慢的木乃伊繼續進行遊戲,而不是生命值減一:
生命值 = 5
# 遭到攻擊時,需要判定是否能夠繼續遊戲
while 生命值 > 0:
if 敵人 == "木乃伊":
print("變身木乃伊!")
continue # 結束本次迭代
生命值 = 生命值 - 1
print("復活角色,遊戲繼續!")
print("遊戲結束,請投幣!")
透過《越南大戰》這款經典遊戲,我們認識了程式語言中的迴圈和迭代概念,從 for 迴圈到 while 迴圈,再到 break 和 continue 這些控制語句。接著,讓我們想像一下如何在不能出門的颱風天裡,將這些概念應用到日常生活中。
使用 for 迴圈來檢查家中窗戶是否關緊:
rooms = ["客廳", "臥室", "客房", "廚房", "浴室"]
for room in rooms:
print(f"檢查{room}的窗戶是否關緊")
print("所有窗戶都檢查完畢,安心了!")