【實作】用 Python 寫終極密碼猜數字遊戲

終極密碼猜數字(Guess the Number)

這篇 Python 實作教學要把第一階段學到的東西全部用上:變數、運算子、字串 f-string、input 輸入、if else 判斷、while 迴圈。我們要做的是經典的「終極密碼」遊戲——電腦隨機選一個 1 到 100 的數字,玩家在不斷縮小的範圍內猜中它。

遊戲規則:

規則說明
答案範圍程式啟動時從 1~100 隨機選一個整數
玩家猜測每回合顯示目前範圍,玩家輸入一個數字
範圍縮小猜太大或太小時,提示並更新範圍
遊戲結束猜中時顯示總共猜了幾次

完整程式碼

建立 guess_number.py

import random

# 初始設定
answer = random.randint(1, 100)   # 隨機產生 1~100 的答案
low = 1                           # 目前範圍下限
high = 100                        # 目前範圍上限
count = 0                         # 猜測次數

print("=== 終極密碼 ===")

while True:
    guess = int(input(f"請猜 {low}~{high} 之間的數字:"))

    # 檢查輸入是否在範圍內
    if guess < low or guess > high:
        print(f"超出範圍,請輸入 {low}~{high} 之間的數字")
        continue

    count = count + 1

    if guess == answer:
        print(f"恭喜猜中!答案是 {answer},總共猜了 {count} 次")
        break
    elif guess < answer:
        low = guess + 1
        print("太小了!")
    else:
        high = guess - 1
        print("太大了!")

執行範例(假設答案是 66):

=== 終極密碼 ===
請猜 1~100 之間的數字:50
太小了!
請猜 51~100 之間的數字:75
太大了!
請猜 51~74 之間的數字:66
恭喜猜中!答案是 66,總共猜了 3 次

程式逐段解說

1. 產生隨機答案

import random
answer = random.randint(1, 100)

random 是 Python 內建的隨機數模組,randint(1, 100) 回傳 1~100 之間的隨機整數(含兩端,這點和 range 不同)。import 的細節會在第 23 篇模組與套件詳細介紹,目前先會用即可。

2. 遊戲主迴圈

while True:
    guess = int(input(f"請猜 {low}~{high} 之間的數字:"))

猜數字「不知道要猜幾次」,所以用 while True 無限迴圈,猜中時用 break 結束。input() 回傳字串,記得用 int() 轉成整數才能比較大小。

3. 範圍檢查與 continue

if guess < low or guess > high:
    print(f"超出範圍,請輸入 {low}~{high} 之間的數字")
    continue

輸入超出目前範圍時,continue 跳過本輪剩下的程式碼直接重新輸入,而且不計入猜測次數(count 還沒加)。

4. 判斷與縮小範圍

if guess == answer:
    ...
    break
elif guess < answer:
    low = guess + 1
else:
    high = guess - 1

三種情況:猜中(break 結束)、太小(下限變成猜的數字 +1)、太大(上限變成猜的數字 -1)。範圍會越縮越小,這就是「終極密碼」的玩法。

挑戰練習

學會基本版後,試著自己加上這些功能:

  1. 限制次數:最多猜 7 次,沒猜中就公布答案(提示:把 while True 改成 while count < 7,迴圈結束後判斷是否猜中)
  2. 防呆輸入:玩家輸入英文字會讓 int() 報 ValueError 直接當掉,等第 25 篇學了 try except 就能優雅處理
  3. 再玩一局:猜中後詢問是否重新開始

總結

這個小遊戲用到了第一階段的所有核心語法:random.randint() 產生答案、while True + break 控制流程、int(input()) 取得數字輸入、if / elif / else 判斷並縮小範圍、f-string 顯示動態訊息。能獨立寫出(或看懂並修改)這支程式,第一階段就過關了。下一階段我們進入 Python 的資料結構,從最重要的 List 開始。

延伸閱讀