2024-08-09|閱讀時間 ‧ 約 6 分鐘

🎲兒時回憶: 用Python寫一個猜數字小遊戲🀄 可線上玩

相信大家小時候都有和朋友或玩伴玩過一個猜數字的小遊戲,一個人先在1~100裡面設定一個隱藏數字,其他的人去猜,看誰是最後一個猜中的就算輸,或者看誰最快猜中就算贏。

今天要示範如何用Python寫一個猜數字遊戲
並且會從上層的思考邏輯開始,一步步構建出這個猜數字的小遊戲。


場景:

電腦設定從1~100隨機挑一個當作隱藏數字,

讓使用者扮演玩家去猜,看使用者花幾回合才猜到電腦設定的隱藏數字。


上層思考邏輯與框架

  1. 先讓電腦隨機從1~100裡面挑一個數字,作為隱藏數字。
  2. 讓使用者去猜數字。
    假如猜錯,電腦提示猜得太大,還是猜得太小。
    假如猜中,輸出成功猜對的訊息。


中層功能元件分析


1.一 ~ 一百的隨機數如何產生?


python 的 random package提供 random 函數

random.random() 會隨機產生小數x, 其中 0 <= x < 1

乘上一百就是 0 <= 100x < 100

再加一就是 1 <= 100x + 1 < 101

最後再轉型成整數,取int(),就是1~100的隨機整數


對應到python的程式碼如下

import random   
number_to_guess = int(random.random() * 100) + 1


2.如何建立循環(相當於程式語言中迴圈的邏輯)?


如果 猜的數字 不等於 電腦的隨機數:

則繼續猜...


對應到python的程式碼,就是while 的迴圈與流程控制

while guess != number_to_guess:

        guess = int(input("\n 請猜一個數字:"))

... 檢查是否有猜中 ...


3.如何接收玩家猜的數字?

python提供內建的input("提示訊息")的標準輸入function,

接收到的預設型別是字串,我們接著轉型為int 整數,儲存到guess這個變數裡。


guess = int(input("\n 請猜一個數字:"))


4.怎麼判斷玩家猜對 還是 猜錯?


如果 使用者猜的數字 等於 電腦的隨機數:

則 輸出 恭喜猜中的提示訊息

否則 提示猜得太大 還是 猜得太小

對應到python的程式碼,就是if ... elif ... else ...的流程控制。



    print("歡迎來到猜數字遊戲!")
    print("電腦已經選了一個1到100之間的數字。")

    while guess != number_to_guess:

        guess = int(input("\n 請猜一個數字:"))

# 統計猜了幾回合,每猜一次,累加1
        attempts += 1

        if guess < number_to_guess:
            print("太小了,再試一次!")

        elif guess > number_to_guess:
            print("太大了,再試一次!")

        else:
            print(f"恭喜你,猜中了!你總共猜了 {attempts} 次。")

5.如何產生提示訊息?


相當直覺,用內建的print()標準輸出function即可。

想印什麼就寫什麼,輸出有變數時記得用f-string 搭配 {變數} 包起來


例如:

print(f"恭喜你,猜中了!你總共猜了 {attempts} 次。")

底層的完整實作: 小遊戲 猜數字

import random

def guess_number_game():

    number_to_guess = int(random.random() * 100) + 1

# 紀錄玩家猜的數字,初始化成-1,代表還沒開始猜
    guess = -1

# 紀錄玩家猜了幾回合​
    attempts = 0

    print("歡迎來到猜數字遊戲!")
    print("電腦已經選了一個1到100之間的數字。")


    while guess != number_to_guess:

        guess = int(input("\n 請猜一個數字:"))

        attempts += 1



        if guess < number_to_guess:
            print("太小了,再試一次!")

        elif guess > number_to_guess:
            print("太大了,再試一次!")

        else:
            print(f"恭喜你,猜中了!你總共猜了 {attempts} 次。")



if __name__ == "__main__":

    guess_number_game()

試玩畫面


線上執行 與 試玩

https://www.onlinegdb.com/mXElvaOLw

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.