[Python] while 迴圈和 for 迴圈同時使用

文、意如

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 - 關於我 - 意如