Python學習筆記-1A2B遊戲

閱讀時間約 6 分鐘


前言

今天想跟大家分享一個用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. 支持我們:如果您願意,您也可以成為我們的贊助者。
為什麼會看到廣告
「Python學習筆記:輕鬆掌握程式設計」是一個豐富的Python學習資源,幫助你從零基礎起步,逐步掌握這個強大的程式語言。這份筆記涵蓋了變數和資料型別、基本運算符、輸入和輸出,並深入探討條件判斷、迴圈和函式等核心主題。此外,你將學習列表、字典和文件操作等常用資料結構,並瞭解物件導向程式設計的概念和遞迴演算法的基礎。
留言0
查看全部
發表第一個留言支持創作者!
Python的random模組是一個非常實用的工具,可以讓我們在程式中生成隨機數或從序列中隨機選擇元素。下面介紹一些常用的random模組函數。 首先,我們需要導入random模組,可以使用以下語句進行導入: 接下來,我們來看看random模組中的一些基本函數: random.random()
在 Python 中,List、Set、Tuple 和 Dictionary 都是常用的資料結構,它們各自具有不同的特性和用途,在本篇學習筆記中,我們將比較這四種資料結構,介紹它們的特點、用法以及適用的場景,幫助你更好地理解它們的差異和選擇適當的資料結構。
你一定有玩過猜拳遊戲,但你知道怎麼用Python寫一個猜拳遊戲嗎?今天我要分享一個簡單又好玩的程式碼,讓你可以和電腦對戰! 首先,我們要導入random模組,這個模組可以讓我們隨機生成一個數字,代表電腦出的拳。 然後,我們要用input函數讓使用者輸入自己出的拳,0代表剪刀,1代表石頭,2代表
大家好,歡迎來到我的Python學習筆記系列,今天我要跟大家介紹一種資料結構,叫做tuple,tuple是一種不可變的序列,也就是說,一旦建立了tuple,就不能對它的元素進行增加、刪除或修改。 tuple的優點是它佔用的記憶體空間比較小,而且可以作為字典的鍵或集合的元素。tuple的缺點是它
在 Python 中,集合(Set)是一種重要的資料結構,它提供了一個無序、不可重複元素的集合容器。Set 具有強大的數學運算功能,並且在處理需要去除重複元素或進行成員檢查的情況下非常有用。
今天我要跟大家分享的是python寫的猜數字遊戲。遊戲的規則很簡單,就是電腦會隨機產生一個1到100之間的整數,然後讓使用者猜這個數字是多少,每次猜完電腦會提示使用者是猜大了還是猜小了,直到猜中為止,遊戲還會記錄使用者猜了幾次,並根據次數給予不同的評價,下面我們來看看程式碼吧!
Python的random模組是一個非常實用的工具,可以讓我們在程式中生成隨機數或從序列中隨機選擇元素。下面介紹一些常用的random模組函數。 首先,我們需要導入random模組,可以使用以下語句進行導入: 接下來,我們來看看random模組中的一些基本函數: random.random()
在 Python 中,List、Set、Tuple 和 Dictionary 都是常用的資料結構,它們各自具有不同的特性和用途,在本篇學習筆記中,我們將比較這四種資料結構,介紹它們的特點、用法以及適用的場景,幫助你更好地理解它們的差異和選擇適當的資料結構。
你一定有玩過猜拳遊戲,但你知道怎麼用Python寫一個猜拳遊戲嗎?今天我要分享一個簡單又好玩的程式碼,讓你可以和電腦對戰! 首先,我們要導入random模組,這個模組可以讓我們隨機生成一個數字,代表電腦出的拳。 然後,我們要用input函數讓使用者輸入自己出的拳,0代表剪刀,1代表石頭,2代表
大家好,歡迎來到我的Python學習筆記系列,今天我要跟大家介紹一種資料結構,叫做tuple,tuple是一種不可變的序列,也就是說,一旦建立了tuple,就不能對它的元素進行增加、刪除或修改。 tuple的優點是它佔用的記憶體空間比較小,而且可以作為字典的鍵或集合的元素。tuple的缺點是它
在 Python 中,集合(Set)是一種重要的資料結構,它提供了一個無序、不可重複元素的集合容器。Set 具有強大的數學運算功能,並且在處理需要去除重複元素或進行成員檢查的情況下非常有用。
今天我要跟大家分享的是python寫的猜數字遊戲。遊戲的規則很簡單,就是電腦會隨機產生一個1到100之間的整數,然後讓使用者猜這個數字是多少,每次猜完電腦會提示使用者是猜大了還是猜小了,直到猜中為止,遊戲還會記錄使用者猜了幾次,並根據次數給予不同的評價,下面我們來看看程式碼吧!
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
去年錄製好的線上課程,今年終於上架了! 非常慚愧,在方格子平台還沒寫幾篇內容,就要先宣傳自己的課程。不過現在67折優惠,宣傳還是有必要的吧,哈!我就維持喜寫論述的習性,介紹一下這門課程,以及我在這個領域──金融商品價格預測──所看見的狀況。 好奇的可以當補充課外知識,有興趣的可以看文末的課程連結。
Thumbnail
前言 在完成ALPHA Camp學期2-3的課程,因為接著上了彭彭老師的WeHelp coding bootcamp,再加上年底工作也較忙,似乎還沒機會好好整理學期2-3的心得,這邊可能至少先欠一篇文章,想先根據這周末學習Falsk session的運作機制做些簡單的紀錄。 何謂Flask
Thumbnail
「品酒」已經不再是有錢人的權利,在這個美酒當道的年代,我們要如何像 Somm 電影的品酒師,一口就能辨別出「口感」、「年份」、「產地」,甚至預測下一季爆款的酒呢? 情境: 這時候,機器學習與深度學習都是相當好的辦法,但我們要成為好的品酒工程師之前,我們必須學會理解「數據來源」、「產業知識」、「演算法
Thumbnail
Python安裝、外部程式包安裝(pip install xxx)、Hello World 【安裝Python】 Visual Studio Code-Download 進入vscode(延伸模組) 安裝中文介面(輸入ch搜尋) 安裝 搜尋命令提示字元 命令提示字元打python 創建檔案
Thumbnail
我希望透過在好學校開設「Python 的 50+ 練習:資料科學學習手冊」,讓學生一步步完成這門課程所有的觀念講解、範例實作以及練習之後,扎實地將 Python 程式設計與資料科學應用納入自己的技能組,成為一位擅長寫程式處理資料的分析師,大幅提升工作掌握度與職涯發展性!
Thumbnail
今天要介紹的是簡單的文本分析,主要內容會包含處理html標籤、jieba斷詞、TF-IDF轉換與Logistic Regression和svm,透過文本探勘預測哪些文本會成為熱門文章。
Thumbnail
幾週前開始線上學習 Python,一路完成了十九關的關卡,也就是十九堂基礎課程。整體來說前面一到十四關都不算難度高,但越到後面其實更需要耗費許多專注心力與邏輯思考,無奈自己時而處理其他日常工作,變成全神貫注學習的完整時間幾乎被打碎。所以到後半段,已經不太能花時間坐在電腦前想清楚一整段的代碼要怎麼布建
Thumbnail
很多文章都說未來是人工智慧的時代,程式語言是必備能力,靠著一時腦熱蒐集了許多資訊,我想說學習不用很厲害才開始,只要有興趣就開始吧,就算用不到也沒關係!
Thumbnail
一天一課的上著網路上的 Python 課程。有朋友問說,為什麼要學 Python ?未來要作工程師嗎? 猶記得當時也是楞了一下,這個問題,有太多個表層與深層的回覆與想法。 充實隔離時光 最簡單的說法,其實就是想充實自己的隔離時間。當時在上海隔離(可以參見這一系列的隔離相關文:https://ma
Thumbnail
資料科學家、數據分析師是近幾年新興,而且熱門的職業,而DataCamp是一個專精於資料科學的程式教學網站。在實務上會用到的各種知識與程式技能,從流程面的網路爬蟲、數據清洗、資料視覺化,到技術面的Python、R語言、SQL,在DataCamp上幾乎都可以找到相關教學。
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
Thumbnail
Faker昨天真的太扯了,中國主播王多多點評的話更是精妙,分享給各位 王多多的點評 「Faker是我們的處境,他是LPL永遠繞不開的一個人和話題,所以我們特別渴望在決賽跟他相遇,去直面我們的處境。 我們曾經稱他為最高的山,最長的河,以為山海就是盡頭,可是Faker用他28歲的年齡...
Thumbnail
去年錄製好的線上課程,今年終於上架了! 非常慚愧,在方格子平台還沒寫幾篇內容,就要先宣傳自己的課程。不過現在67折優惠,宣傳還是有必要的吧,哈!我就維持喜寫論述的習性,介紹一下這門課程,以及我在這個領域──金融商品價格預測──所看見的狀況。 好奇的可以當補充課外知識,有興趣的可以看文末的課程連結。
Thumbnail
前言 在完成ALPHA Camp學期2-3的課程,因為接著上了彭彭老師的WeHelp coding bootcamp,再加上年底工作也較忙,似乎還沒機會好好整理學期2-3的心得,這邊可能至少先欠一篇文章,想先根據這周末學習Falsk session的運作機制做些簡單的紀錄。 何謂Flask
Thumbnail
「品酒」已經不再是有錢人的權利,在這個美酒當道的年代,我們要如何像 Somm 電影的品酒師,一口就能辨別出「口感」、「年份」、「產地」,甚至預測下一季爆款的酒呢? 情境: 這時候,機器學習與深度學習都是相當好的辦法,但我們要成為好的品酒工程師之前,我們必須學會理解「數據來源」、「產業知識」、「演算法
Thumbnail
Python安裝、外部程式包安裝(pip install xxx)、Hello World 【安裝Python】 Visual Studio Code-Download 進入vscode(延伸模組) 安裝中文介面(輸入ch搜尋) 安裝 搜尋命令提示字元 命令提示字元打python 創建檔案
Thumbnail
我希望透過在好學校開設「Python 的 50+ 練習:資料科學學習手冊」,讓學生一步步完成這門課程所有的觀念講解、範例實作以及練習之後,扎實地將 Python 程式設計與資料科學應用納入自己的技能組,成為一位擅長寫程式處理資料的分析師,大幅提升工作掌握度與職涯發展性!
Thumbnail
今天要介紹的是簡單的文本分析,主要內容會包含處理html標籤、jieba斷詞、TF-IDF轉換與Logistic Regression和svm,透過文本探勘預測哪些文本會成為熱門文章。
Thumbnail
幾週前開始線上學習 Python,一路完成了十九關的關卡,也就是十九堂基礎課程。整體來說前面一到十四關都不算難度高,但越到後面其實更需要耗費許多專注心力與邏輯思考,無奈自己時而處理其他日常工作,變成全神貫注學習的完整時間幾乎被打碎。所以到後半段,已經不太能花時間坐在電腦前想清楚一整段的代碼要怎麼布建
Thumbnail
很多文章都說未來是人工智慧的時代,程式語言是必備能力,靠著一時腦熱蒐集了許多資訊,我想說學習不用很厲害才開始,只要有興趣就開始吧,就算用不到也沒關係!
Thumbnail
一天一課的上著網路上的 Python 課程。有朋友問說,為什麼要學 Python ?未來要作工程師嗎? 猶記得當時也是楞了一下,這個問題,有太多個表層與深層的回覆與想法。 充實隔離時光 最簡單的說法,其實就是想充實自己的隔離時間。當時在上海隔離(可以參見這一系列的隔離相關文:https://ma
Thumbnail
資料科學家、數據分析師是近幾年新興,而且熱門的職業,而DataCamp是一個專精於資料科學的程式教學網站。在實務上會用到的各種知識與程式技能,從流程面的網路爬蟲、數據清洗、資料視覺化,到技術面的Python、R語言、SQL,在DataCamp上幾乎都可以找到相關教學。