依序修煉了:變數的便利貼哲學、資料型態的妖精鏡、if-else 的大腦判斷、for/while 的無盡迴圈,以及 List/Dict 的收納大法。
如果這時候心裡就想說:「學了這麼多,到底能拿來幹嘛?」
那麼今天就是檢驗成果的時候了!今天我們不學任何新的語法,我們要用之前學過的所有內功,手把手打造一個經典的互動遊戲——「自動猜數字機」!
🎯 遊戲規則與功能設計
我們要做的遊戲規格很簡單:
🛠️ 第一步:請出外包工程師——引入 random 模組
電腦要怎麼「偷偷想一個數字」?我們需要讓電腦能產生隨機變數。
Python 內建有一個專門產生隨機數的寶庫叫 random。我們在程式的最開頭寫下這行:
import random
這行指令叫 import(匯入),就像是我們打電話請一個專門處理隨機數字的「外包工程師」來辦公室幫忙。
接著,我們請他幫我們決定一個 1 到 100 的答案,並用便利貼 answer 貼上去:
answer = random.randint(1, 100)
🛠️ 第二步:搭建遊戲的主架構
因為不知道玩家會猜幾次才中,我們要用 while 迴圈。只要玩家還沒猜對,就要一直讓他猜。
同時,我們需要一個變數 count 來記錄玩家猜了幾次。
我們先用一個最直白的寫法——while True(無窮迴圈),代表「只要不停電,遊戲就一直跑」,直到猜對了,我們再用 break(破壞迴圈)來強制跳出。
count = 0 # 紀錄猜測次數
while True:
# 讓玩家輸入數字
guess = input("請輸入 1 到 100 之間的數字:")
⚠️ 超級大陷阱(請拿出照妖鏡觀念!):
透過 input() 讓玩家在螢幕輸入的任何東西,電腦都會預設它是「字串(str)」!
如果你輸入 50,電腦拿到的是 "50"。如果直接拿字串去跟數字比大小,電腦會直接崩潰給你看。所以,我們必須用 int() 強制把它轉換成整數:
guess = int(guess) # 把字串 "50" 轉成整數 50
count = count + 1 # 猜測次數加 1
🛠️ 第三步:裝上大腦(if-else 條件判斷)
接下來,我們要用 Day 4 學到的 if-elif-else 來幫驗票員裝大腦,比較玩家猜的 guess 與正確答案 answer 的關係:
if guess > answer:
print("太大了!再試一次。")
elif guess < answer:
print("太小了!再試一次。")
else:
print(f"🎉 恭喜你答對了!正確答案就是 {answer}!")
print(f"你總共猜了 {count} 次。")
break # 終極關鍵:猜對了,按下斷電鈕,跳出 while 迴圈!
(註:f"..." 是 Python 的字串格式化超能力,可以直接把變數塞進大括號 {} 裡印出來,非常方便!)
📝 完整 20 行程式碼大公開
把上面的碎片拼起來,就是一個完整的專案了!請在 VS Code 裡建立一個 guess_game.py,把以下程式碼完整複製進去並按下執行(▶):
import random
#1. 電腦隨機決定一個 1~100 的答案
answer = random.randint(1, 100)
count = 0
print("=== 歡迎來到自動猜數字機 ===")
#2. 開啟遊戲無盡迴圈
while True:
guess = input("請輸入 1 到 100 之間的數字:")
guess = int(guess) # 記得轉成整數!
count = count + 1 # 紀錄次數
#3. 判斷大小
if guess > answer:
print("❌ 太大了!再試一次。")
elif guess < answer:
print("❌ 太小了!再試一次。")
else:
print("\n===============================")
print(f"🎉 恭喜你答對了!正確答案就是 {answer}!")
print(f"📊 你總共猜了 {count} 次。")
print("===============================")
break # 猜對了,結束遊戲
快去執行看看,自己玩一把吧!
看著黑底白字的視窗隨著你的輸入跳出「太大了」、「太小了」,最後跳出恭喜畫面。這一刻,你不再只是個抄程式碼的機器,而是用邏輯創造出一個虛擬世界的創作者!
這七天來,從零開始一磚一瓦蓋出了這個小遊戲。雖然它看起來很陽春,但裡面涵蓋的邏輯拆解、型態轉換、迴圈控制,跟矽谷大廠工程師每天在寫的架構,本質上完全是一模一樣的。
下一次,我們要跳出新手村的舒適圈,去探索更進階的 Python 密技,包括如何把程式碼打包成「自訂函式(Function)」、處理惱人的閃退錯誤(try-except),甚至是開始抓取網路資料(爬蟲)!
🧑💻 新手村大挑戰
如果你覺得這個遊戲太簡單,試著動手改改看程式碼:
• 限制玩家「只能猜 5 次」,如果 5 次沒猜中,電腦就判定 Game Over 並公布答案(提示:可以用一個變數紀錄次數,或者把 while 改成 for 迴圈唷!)。