2023-07-05|閱讀時間 ‧ 約 7 分鐘

Python學習筆記-1A2B遊戲

前言
今天想跟大家分享一個用python做的小遊戲,叫做1A2B,這個遊戲的規則很簡單,就是電腦會隨機產生一個四位數的數字,然後玩家要猜這個數字是什麼,每次猜完,電腦會給出幾A幾B的提示,A表示位置和數字都對,B表示數字對但位置不對;例如,如果電腦產生的數字是1234,玩家猜5678,那麼電腦會回答0A0B;如果玩家猜1324,那麼電腦會回答2A2B。
我之所以想用python做這個遊戲,是因為我覺得python它有很多內建的函式和模組,可以讓我們很方便地實現各種功能,而且python的語法很簡潔和易讀,不需要像其他語言那樣寫很多冗長和複雜的代碼,我也覺得1A2B是一個很有趣和挑戰性的遊戲,它可以訓練我們的邏輯思考。
接下來,介紹一下我用python寫的1A2B遊戲的程式碼,首先,要導入random模組,這個模組可以讓我們使用隨機相關的函式,然後,我定義了一個函式叫做generate_number,這個函式的作用是產生一個四位數的數字,並且確保每一位數都不重複。
這個函式的邏輯是這樣的:先創建一個空列表,然後用一個while迴圈不斷地從0到9中隨機選擇一個數字,如果這個數字沒有在列表中出現過,就把它加入列表中;如果列表的長度達到4,就跳出迴圈。
最後,把列表中的數字轉換成字串並連接起來,返回這個字串作為答案。
import random

def generate_number():
    numbers = []
    while len(numbers) < 4:
        digit = random.randint(0, 9)
        if digit not in numbers:
            numbers.append(digit)
    answer = ''.join(map(str, numbers))
    return answer

print("歡迎來到1A2B遊戲!")
print("請猜一個四位數字,其中每個位數都不重複。")

answer = generate_number()
win = False

while not win:
    guess = input("請輸入您的猜測:")

    if len(guess) != 4 or len(set(guess)) != 4:
        print("無效的輸入。請輸入一個四位數字,其中每個位數都不重複。")
        continue

    A = 0
    B = 0

    for i in range(4):
        if guess[i] == answer[i]:
            A += 1
        elif guess[i] in answer:
            B += 1

    print("{}A{}B".format(A, B))

    if A == 4:
        print("恭喜您猜對了!")
        win = True
    else:
        print("再試一次!")

print("感謝您的遊玩!")


整理
  1. import random: 導入Python的random模組,用於生成隨機數。
  2. def generate_number(): 定義了一個函數generate_number(),用於生成一個四位數字的答案,該函數使用random.randint()生成隨機數字,並確保每個位數都不重複,最後,它將生成的數字轉換為字串形式並返回。
  3. print("歡迎來到1A2B遊戲!")print("請猜一個四位數字,其中每個位數都不重複。"):歡迎信息和遊戲說明,向使用者介紹遊戲規則。
  4. answer = generate_number(): 呼叫generate_number()函數生成一個四位數字的答案,並將它存儲在變數answer中。
  5. win = False: 創建一個布林值win,用於標記是否贏得遊戲。
  6. while not win:: 進入一個無限循環,直到winTrue(表示贏得遊戲)時才結束。
  7. guess = input("請輸入您的猜測:"): 提示使用者輸入他們的猜測,並將輸入存儲在變數guess中。
  8. if len(guess) != 4 or len(set(guess)) != 4:: 檢查使用者輸入的猜測是否為四位數字且每個位數都不重複,如果條件不滿足,打印無效輸入的錯誤信息並繼續下一輪循環。
  9. A = 0B = 0: 創建兩個變量AB,分別用於記錄猜測中數字位置正確(A)和數字正確但位置不正確(B)的個數。
  10. for i in range(4):: 進入一個循環,遍歷猜測的每個位數。
  11. if guess[i] == answer[i]:: 如果猜測的某個位數和答案的相應位數相等,則A加1。
  12. elif guess[i] in answer:: 如果猜測的某個位數在答案中但位置不正確,則B加1。
  13. print("{}A{}B".format(A, B)): 打印猜測的結果。
  14. if A == 4:: 如果A的值為4,表示所有位數都正確,則猜測正確,贏得遊戲,打印贏得遊戲的信息並將win設置為True,從而跳出無限迴圈。
  15. else:: 如果猜測不正確,打印再試一次的提示信息。
  16. print("感謝您的遊玩!"): 打印遊戲結束的感謝信息。

感謝您閱讀本篇文章!我們很高興您能從中獲得一些有用的資訊。如果您喜歡這篇文章,請不要吝嗇您的支持,您可以:
  1. 按下愛心:這樣我們就知道您對這篇文章的喜愛程度,也可以讓更多人看到它。
  2. 分享文章:如果您認為這篇文章也能幫助其他人,請把它分享出去。
  3. 追蹤我們:如果您想持續收到更多類似的內容,請點擊追蹤按鈕。
  4. 支持我們:如果您願意,您也可以成為我們的贊助者。

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