Python Projects|Poker (2) – 隨機產生 5 張不重複的撲克牌

by KC
0 comment

在這篇文章中,我們將學習如何使用 Python 來開發一個隨機撲克牌產生器,這個產生器會生成 5 張不重複的撲克牌。透過這個過程,我們可以掌握 Python 程式設計的核心概念,並練習使用 random 模組來處理隨機性問題。讀著若是第一次接觸,也可以考慮參考前一篇文章 – 「Python Projects|Poker (1) – 隨機產生 1 張撲克牌」。而這些專案都架構在 Python for Beginners 系列文章中,歡迎有興趣的讀者參考。

1. 學習目標

  1. 掌握使用 Python 的 random 模組生成隨機數據。
  2. 理解如何在 Python 中處理串列和 while 迴圈。
  3. 學習如何確保產生的撲克牌不會有重複

2. 運算思維

  1. 分解:將選擇 5 張不重複撲克牌的問題,分解為選擇一張牌並檢查是否重複的多個步驟。
  2. 抽象:將撲克牌生成過程抽象化,不考慮具體實現細節。
  3. 模式識別:識別避免重複牌的需求,並實施在選牌過程中。
  4. 演算法設計:建立一個循環過程,直到選出 5 張不重複的撲克牌。

3. 步驟說明

Step 1. 導入 random 模組

首先,我們需要使用Python的random模組來實現隨機性,這是生成隨機撲克牌的關鍵。

import random

Step 2. 定義撲克牌花色和數字

定義兩個串列(List):suitsnums,它們分別代表撲克牌的四種花色和十三種數字。

suits = ['♠', '♥', '♦', '♣']  # 花色
nums = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']  # 數字

Step 3. 建立「產生撲克牌函式」(5張)

我們需要一個函式 generate_poker_hands 來產生五張不重複的撲克牌。在這個函式中,使用一個 while 迴圈持續產生撲克牌,直到我們得到五張不同的牌為止。

def generate_poker_hands():
    cards = []
    while len(cards) < 5:
        my_suit = random.choice(suits)  # 隨機選擇花色
        my_num = random.choice(nums)    # 隨機選擇數字
        card = my_suit + my_num         # 組合成一張牌
        if card not in cards:           # 檢查是否重複
            cards.append(card)          # 添加到牌組中
    return cards

Step 4. 呼叫「產生撲克牌函式」並列印撲克牌

用剛才定義的函式來生成五張撲克牌,然後列印出來查看結果。

card = generate_poker_hands()

print(f"隨機產生的 5 張撲克牌:{card}")

Step 5. 整合所有步驟及程式碼

將上述步驟程式碼整合後,並且試著執行數次,看看是否符合專案目標。你將完成隨機產生 5 張撲克牌的專案。

# 導入 random 模組
import random

# 定義撲克牌花色和數字
suits = ['♠', '♥', '♦', '♣']  # 花色
nums = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']  # 數字

# 建立「產生撲克牌函式」(5張)
def generate_poker_hands():
    cards = []
    while len(cards) < 5:
        my_suit = random.choice(suits)  # 隨機選擇花色
        my_num = random.choice(nums)    # 隨機選擇數字
        card = my_suit + my_num         # 組合成一張牌
        if card not in cards:           # 檢查是否重複
            cards.append(card)          # 添加到牌組中
    return cards

# 呼叫「產生撲克牌函式」
card = generate_poker_hands()           # 隨機產生 5 張牌

# 列印撲克牌
print(f"隨機產生的 5 張撲克牌:{card}")   # 列印產生的撲克牌

執行結果:

隨機產生的 5 張撲克牌:['♦6', '♣10', '♦9', '♣4', '♠J']

4. 心得與結論

透過這個專案,初學者將學到如何使用 Python 產生隨機數據並處理獨特性的問題。這不僅提高了程式設計技巧,也加深了對概率和隨機性在軟體開發中應用的理解。對於希望強化 Python 能力和解決實際問題的學習者來說,這是一個不錯的實務體會。

讀者若想要多了解 Python 的一些基礎知識,可以參考 Python for Beginners 系列文章,當中完整介紹 Python 基礎知識,並運用大量範例及 Quiz 來協助讀者學習。如果讀者也想知道其他重要的科技知識,例如人工智慧、機器學習、深度學習及神經網路相關基礎知識,則可以參考這一本書【從 AI 到 生成式 AI:40 個零程式的實作體驗,培養新世代人工智慧素養】,它將帶領讀者不會程式、不會數學也OK!的情況下,建立最完整的 AI 入門知識。

如果你喜歡這篇文章歡迎訂閱、分享(請載名出處)追蹤,並持續關注最新文章。同時 FB 及 IG 也會不定期提供國內外教育與科技新知。

Related Posts

Leave a Comment

error: Content is protected !!