import random import itertools def Poker_Deal(a = 4, b = 13): # a:游戲人數,b:每人手牌數量 Flower = ['黑桃', '紅桃', '方塊', '草花'] Number = ['A', 'K', 'Q', 'J', '10', '9', '8', '7', '6', '5', '4', '3', '2'] Poker_Cards = [(x,y) for x,y in itertools.product(Flower, Number)] # 一副52張的撲克牌按花色及大小排序 Rest_Cards = Poker_Cards # 沒發出的牌 Player = [] for i in range(a): Player.append(random.sample(Rest_Cards, b)) # 隨機Player[i]的手牌 Player[i].sort(key = lambda x:Poker_Cards.index(x)) # Player[i]的手牌排序 Rest_Cards = [x for x in Rest_Cards if x not in Player[i]] # 更新沒發出的牌 print('Player', i+1, ':') for j in Flower: print(j, ':', end = ' ') for k in Player[i]: if k[0]==j: print(k[1], end = ' ') # 同一花色的手牌按大小輸出 print() # 不同花色的手牌換行輸出 print() # 不同玩家的手牌間空行 if len(Rest_Cards) < b: print('牌發完了') break # 防止輸入a*b>52報錯
測試1:
Poker_Deal() # 橋牌發牌(默認)
測試結果1:
Player 1 :
黑桃 : J 4 2
紅桃 : K J 7 6
方塊 : Q 7
草花 : J 9 8 7
Player 2 :
黑桃 : K Q 10 8 7 6
紅桃 : A 5
方塊 : K 10 8 4
草花 : 3
Player 3 :
黑桃 : A 9 3
紅桃 : Q 8 3 2
方塊 : 2
草花 : K 10 6 4 2
Player 4 :
黑桃 : 5
紅桃 : 10 9 4
方塊 : A J 9 6 5 3
草花 : A Q 5
牌發完了
測試2:
Poker_Deal(6,2) # 6人場德州撲克發牌
測試結果2:
Player 1 :
黑桃 : 5
紅桃 :
方塊 : A
草花 :
Player 2 :
黑桃 :
紅桃 :
方塊 : K 8
草花 :
Player 3 :
黑桃 : 9
紅桃 : 4
方塊 :
草花 :
Player 4 :
黑桃 :
紅桃 : Q
方塊 :
草花 : 3
Player 5 :
黑桃 : 10 2
紅桃 :
方塊 :
草花 :
Player 6 :
黑桃 :
紅桃 : 6
方塊 :
草花 : 9