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

閱讀時間約 5 分鐘

相信大家小時候都有和朋友或玩伴玩過一個猜數字的小遊戲,一個人先在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()

試玩畫面

raw-image

線上執行 與 試玩

https://www.onlinegdb.com/mXElvaOLw

78會員
413內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
在流程控制中,最常用的就是for loop 或是 while loop 語法了。 最常見的場景就是根據條件判斷式,重複執行特定的指令。 如果要在python寫出類似C/C++ for loop,可以怎麼寫呢? 透過索引去進行迭代 for var in range( start=0, sto
Array可以說是各種語言除了基本型別之外,最常用的資料型別與容器之一了。 Array 這種連續格子狀的資料結構,在Python要怎麼表達呢? 建立一個空的陣列 最簡單也最直接的寫法就是 array = [] # Python list [] 就對應到大家熟知的array 陣列型態的資料結
在流程控制中,最常用的就是for loop 或是 while loop 語法了。 最常見的場景就是根據條件判斷式,重複執行特定的指令。 如果要在python寫出類似C/C++ for loop,可以怎麼寫呢? 透過索引去進行迭代 for var in range( start=0, sto
Array可以說是各種語言除了基本型別之外,最常用的資料型別與容器之一了。 Array 這種連續格子狀的資料結構,在Python要怎麼表達呢? 建立一個空的陣列 最簡單也最直接的寫法就是 array = [] # Python list [] 就對應到大家熟知的array 陣列型態的資料結
你可能也想看
Thumbnail
八十-二十法則提到,在多數生活的現象中,約80%的效果是來自於20%的原因,除了經濟學、學習理論外,這個法則同樣也可以應用在生活中的幸福感上。 我們需要認知到擁有的越多不一定會越快樂,反而有可能會因為無法專注在少數事物上而產生空虛、迷茫的感覺。「極簡」精神最重要的一點在於放下對於「多」的執著,將有
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
分享一個猜數字的遊戲題目,給予提示讓玩家找出正確的四位數密碼。
Thumbnail
透過數學遊戲,孩子可以在快樂中學習數學,增強對數學的興趣和理解。這篇文章將推薦幾款適合孩子的數學遊戲,讓孩子在玩樂中不知不覺地掌握數學知識,提升學習興趣。
Thumbnail
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
Thumbnail
24點數學遊戲是一款適合小朋友與想動動腦的朋友們的小遊戲,遊戲規則簡單易懂,可訓練邏輯能力。遊戲分為單人與多人模式,可以讓玩家自行挑戰高分或是與其他玩家競爭。算式中不同的數學符號會對應不同的加分機制。遊戲網站連結與專案 repo 也都提供在文章中。
在這個充滿挑戰和樂趣的課程中,我們將教導小朋友們如何通過下圍棋來提升他們的穩定性和數理邏輯!
Thumbnail
會有這樣的構想其實源自於我的高中記憶。以前高中的時候,有群可愛的好友喜歡策畫生日。我們很喜歡玩類似密室逃脫或闖關的遊戲。在那個人生日前幾週,一起去買他可能會喜歡的禮物。為那些禮物寫小故事、謎語與短詩,然後偷偷藏在校園的各個角落。
Thumbnail
八十-二十法則提到,在多數生活的現象中,約80%的效果是來自於20%的原因,除了經濟學、學習理論外,這個法則同樣也可以應用在生活中的幸福感上。 我們需要認知到擁有的越多不一定會越快樂,反而有可能會因為無法專注在少數事物上而產生空虛、迷茫的感覺。「極簡」精神最重要的一點在於放下對於「多」的執著,將有
Thumbnail
1.加權指數與櫃買指數 週五的加權指數在非農就業數據開出來後,雖稍微低於預期,但指數仍向上噴出,在美股開盤後於21500形成一個爆量假突破後急轉直下,就一路收至最低。 台股方面走勢需觀察週一在斷頭潮出現後,週二或週三開始有無買單進場支撐,在沒有明確的反轉訊號形成前,小夥伴盡量不要貿然抄底,或是追空
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
分享一個猜數字的遊戲題目,給予提示讓玩家找出正確的四位數密碼。
Thumbnail
透過數學遊戲,孩子可以在快樂中學習數學,增強對數學的興趣和理解。這篇文章將推薦幾款適合孩子的數學遊戲,讓孩子在玩樂中不知不覺地掌握數學知識,提升學習興趣。
Thumbnail
這篇內容,將透過實戰教學,來講解「滑鼠點方塊」的程式碼。包括如何測試遊戲、座標系統、自訂參數和內建參數、if else、and、遊戲的邏輯設計、程式碼解析。
Thumbnail
24點數學遊戲是一款適合小朋友與想動動腦的朋友們的小遊戲,遊戲規則簡單易懂,可訓練邏輯能力。遊戲分為單人與多人模式,可以讓玩家自行挑戰高分或是與其他玩家競爭。算式中不同的數學符號會對應不同的加分機制。遊戲網站連結與專案 repo 也都提供在文章中。
在這個充滿挑戰和樂趣的課程中,我們將教導小朋友們如何通過下圍棋來提升他們的穩定性和數理邏輯!
Thumbnail
會有這樣的構想其實源自於我的高中記憶。以前高中的時候,有群可愛的好友喜歡策畫生日。我們很喜歡玩類似密室逃脫或闖關的遊戲。在那個人生日前幾週,一起去買他可能會喜歡的禮物。為那些禮物寫小故事、謎語與短詩,然後偷偷藏在校園的各個角落。