文章目錄
在這篇文章中,我們將學習如何使用 Python 來開發一個隨機撲克牌產生器,這個產生器會生成 5 張不重複的撲克牌。透過這個過程,我們可以掌握 Python 程式設計的核心概念,並練習使用 random
模組來處理隨機性問題。讀著若是第一次接觸,也可以考慮參考前一篇文章 – 「Python Projects|Poker (1) – 隨機產生 1 張撲克牌」。而這些專案都架構在 Python for Beginners 系列文章中,歡迎有興趣的讀者參考。
- 專案目的:幫助初學者對函數建立、流程控制及串列使用,進行專案實務的整合應用。
- 開發環境:可參考在 Google Colab 或 Jupyter Notebook 開發環境中練習。
- 使用環境:桌機或NB
- 參考資料:本專案使用的 Python 觀念可參考下面文章
(1). Python for Beginners (9)|串列 (List) 資料型態介紹與使用
(2). Python for Beginners (14)|迴圈控制 – while loops
(3). Python for Beginners (16)|函式 (Functions)
(4). Python for Beginners
1. 學習目標
- 掌握使用 Python 的
random
模組生成隨機數據。 - 理解如何在 Python 中處理串列和 while 迴圈。
- 學習如何確保產生的撲克牌不會有重複
2. 運算思維
- 分解:將選擇 5 張不重複撲克牌的問題,分解為選擇一張牌並檢查是否重複的多個步驟。
- 抽象:將撲克牌生成過程抽象化,不考慮具體實現細節。
- 模式識別:識別避免重複牌的需求,並實施在選牌過程中。
- 演算法設計:建立一個循環過程,直到選出 5 張不重複的撲克牌。
3. 步驟說明
Step 1. 導入 random 模組
首先,我們需要使用Python的random
模組來實現隨機性,這是生成隨機撲克牌的關鍵。
import random
Step 2. 定義撲克牌花色和數字
定義兩個串列(List):suits
和 nums
,它們分別代表撲克牌的四種花色和十三種數字。
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 也會不定期提供國內外教育與科技新知。