回文章列表
Python6 分鐘閱讀2026年5月17日

寫完這個猜數字遊戲,你就懂 Python 迴圈跟判斷式了

#Python#迴圈#判斷式#while#新手

文章目錄

與其背語法,不如做一個遊戲

學 while 迴圈跟 if 判斷式的時候,課本範例常常是「印出 1 到 100」這種看完就忘的東西。換個方式——我們用大概十行程式做一個猜數字遊戲,從最陽春的版本開始,一路加功能,寫到最後你會發現迴圈和判斷式已經自然刻進腦子裡了。

規則很簡單:電腦隨機想一個數字,你來猜,程式告訴你「太大」還是「太小」,直到猜中為止。


版本一:先做「判斷猜對沒」——if / elif / else

先不管重複猜,只做一次判斷。電腦用 random 隨機挑一個數字,我們猜一次,讓程式回報結果:

import random

answer = random.randint(1, 100)   # 電腦隨機想一個 1~100 的整數(頭尾都包含)
guess = int(input("猜一個 1~100 的數字:"))

if guess == answer:
    print("猜對了!")
elif guess < answer:
    print("太小了")
else:
    print("太大了")

這裡的重點是判斷式:if 條件成立就做它底下那塊,不成立就往下看 elif(否則如果),全部都不成立才走 else(否則)。三選一,一次只會執行其中一塊。

問題也很明顯——只能猜一次,猜錯就結束了。

版本二:讓它可以一直猜——while 迴圈

要能重複猜,就把「輸入 + 判斷」這段用 while 包起來,猜中才跳出:

import random

answer = random.randint(1, 100)
count = 0

while True:                        # 一直重複,直到遇到 break
    guess = int(input("猜一個 1~100 的數字:"))
    count += 1                      # 每猜一次,次數加一
    if guess == answer:
        print(f"猜對了!你總共猜了 {count} 次")
        break                      # 跳出 while 迴圈,遊戲結束
    elif guess < answer:
        print("太小了")
    else:
        print("太大了")

while True 代表「條件永遠成立、無限重複」,靠 break 這行在猜中時主動跳出迴圈。count += 1 順手記下猜了幾次。到這裡已經是一個能玩的完整遊戲了。

版本三:每次猜完縮小範圍提示

只講「太大/太小」還是有點難猜。我們用兩個變數 low、high 記住「答案目前確定落在哪個區間」,每猜一次就把區間縮小,讓玩家看得到範圍越縮越小:

import random

answer = random.randint(1, 100)
low, high = 1, 100                 # 答案目前確定在這個區間內
count = 0

while True:
    guess = int(input(f"猜一個 {low}~{high} 的數字:"))
    count += 1
    if guess == answer:
        print(f"猜對了!你總共猜了 {count} 次")
        break
    elif guess < answer:
        low = guess + 1            # 太小 → 答案一定比 guess 還大
        print(f"太小了,範圍縮小到 {low}~{high}")
    else:
        high = guess - 1           # 太大 → 答案一定比 guess 還小
        print(f"太大了,範圍縮小到 {low}~{high}")

關鍵是那兩行更新:猜的數字太小,答案就一定在 guess + 1 以上,所以把下限 low 拉上來;太大就反過來把上限 high 壓下去。連 input 的提示文字也用上區間,玩起來清楚很多。

版本四:讓玩家自訂範圍

最後一步,把寫死的 1~100 改成開場讓玩家自己決定。只要把上下限改成 input 進來,再交給 random.randint 就好:

import random

low = int(input("範圍最小值:"))
high = int(input("範圍最大值:"))
answer = random.randint(low, high)
count = 0

while True:
    guess = int(input(f"猜一個 {low}~{high} 的數字:"))
    count += 1
    if guess == answer:
        print(f"猜對了!你總共猜了 {count} 次")
        break
    elif guess < answer:
        low = guess + 1
        print(f"太小了,範圍縮小到 {low}~{high}")
    else:
        high = guess - 1
        print(f"太大了,範圍縮小到 {low}~{high}")

這就是完整版了。玩家自己設範圍,程式隨機出題,每猜一次縮小區間、記錄次數,猜中才結束。整支程式從頭到尾就靠一個 while 迴圈和一組 if / elif / else,你需要的迴圈與判斷式概念全在裡面。


小結

猜數字這題把兩個最核心的流程控制都用上了:迴圈負責「重複做同一件事直到某個條件」,判斷式負責「依情況走不同的路」。這兩個觀念不是靠讀懂的,是靠手敲出來、看它跑起來才會真的內化。

把上面四個版本自己一個一個敲過一遍,遠比看十遍教學有用。想再多練幾題 while 和 if,到 程式練習題庫 挑幾題難度剛好的來寫——挑戰題還可以試著把這個遊戲反過來,讓「電腦來猜、你回答太大太小」,看它幾次能猜中。

相關課程

Python 基礎入門

從零開始學習 Python 程式語言,掌握變數、流程控制、函式與模組化設計,建立扎實的程式設計基礎。

查看課程內容