文、意如
while 迴圈:
負責控制「大流程要重複執行幾次」,通常是因為「不知道使用者什麼時候才想結束」。
for 迴圈:
負責處理「裡面固定數量的事物」,例如依序檢查清單中的每一項資料、或是跑固定的次數。
範例一:老師批改多位學生的成績(最常見的組合)
- 大邏輯(while):只要老師不輸入結束,系統就一直維持開啟狀態(重複輸入新班級)。
- 內邏輯(for):每進入一個新班級,裡面固定有 3 位學生,用
for迴圈依序輸入這 3 人的成績。
while True:
print("\n---啟動班級成績輸入系統 ---")
# 內迴圈:固定跑 3 次(處理 3 個學生的成績)
total_score = 0
for i in range(1, 4):
score = int(input(f"請輸入第 {i} 位學生的成績: "))
total_score += score
print(f"這個班級的總分是: {total_score} 分")
# 外迴圈控制:詢問是否還要繼續處理下一個班級
again = input("還要輸入下一個班級嗎?(y/n): ")
if again.lower() == 'n':
print("系統關閉,謝謝使用!")
break # 跳出 while 迴圈
範例二:自動販賣機商品補貨(結合隨機與清單)
剛才我們學了隨機數字,這個範例把隨機也加進來。
- 大邏輯(while):販賣機一直運作,每次顧客買完,就檢查有沒有商品賣光。
- 內邏輯(for):用
for迴圈依序檢查架上的每一種飲料(可樂、綠茶、牛奶),只要庫存是 0 就自動補貨。
import random
# 初始庫存
drinks = ["可樂", "綠茶", "牛奶"]
while True:
print("\n販賣機正在營業中...")
input("請按 Enter 鍵模擬顧客購買商品...")
# 內迴圈:用 for 依序檢查每一種飲料
for item in drinks:
# 隨機決定要不要讓這項商品賣光 (0代表賣光,1代表還有)
status = random.randint(0, 1)
if status == 0:
print(f"警報:【{item}】賣光了!自動補貨 10 瓶!")
else:
print(f"檢查:【{item}】庫存充足。")
# 外迴圈控制:決定販賣機要不要關機
shutdown = input("\n要關閉販賣機電源嗎?(y/n): ")
if shutdown.lower() == 'y':
print("電源已關閉。")
break
Yiru@Studio - 關於我 - 意如