importrandomimportitertoolsdef 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 inrange(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 inFlower:print(j, ':', end = ' ')for k inPlayer[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