""" 启动后输入玩家数量和扑克牌副数,创建牌->洗牌->发牌->整理牌 """ import random puke = ['3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A', '2'] pukeType = ['♠', '♥', '♣', '♦'] class Puke: def __init__(self, player: int, count: int): self.player = player self.count = count self.puke = [] self.player_pk = [] self.create_puke() self.xi_pai() self.fa_pai() self.sorted_pk() # 生成牌 def create_puke(self): print('-------------------------------开始生成扑克----------------------------') for i in range(0, self.count): print('正在生成第%d副扑克' % (i + 1)) for j in range(0, len(pukeType)): for k in range(0, len(puke)): self.puke.append(str(j) + str(k)) print('生成扑克完成,共%d' % len(self.puke)) self.print_pk('生成的扑克:', self.puke) # 洗牌 def xi_pai(self): random.shuffle(self.puke) self.print_pk('洗牌后的扑克:', self.puke) # 发牌 def fa_pai(self): # 创建玩家位置 for i in range(0, self.player): self.player_pk.append([]) print('开始发牌') for index, pk in enumerate(self.puke): self.player_pk[index % self.player].append(pk) for i in range(0, self.player): self.print_pk("第%d手上的牌" % (i + 1), self.player_pk[i]) print("第%d手上的有%d张牌" % (i + 1, len(self.player_pk[i]))) print('--------------------------------发牌结束-------------------------------') # 整理玩家手上的牌 def sorted_pk(self): print('--------------------------------开始整理玩家手上的牌-------------------------------') for i in range(0, self.player): self.print_pk("整理前第%d手上的牌" % (i + 1), self.player_pk[i]) self.player_pk[i].sort(key=lambda elem: int(elem[1:])) self.print_pk("整理后第%d手上的牌" % (i + 1), self.player_pk[i]) print('--------------------------------整理牌完成-------------------------------') # 打印类 def print_pk(self, hint: str, lists: list): print('-------------------------------------------------------------') print(hint) for index, value in enumerate(lists): # 使用类似java的三目运算 true的结果 if 条件 else false结果 print(str(pukeType[int(value[0: 1])]) + str(puke[int(value[1:])]), end=('' if index != len(lists) - 1 else '\r\n'))
测试调用代码
from Puke import Puke if __name__ == '__main__': print('---------------------Welcome!!---------------------') try: player = int(input('请输入玩家数:')) count = int(input('请输入使用几副扑克:')) except ValueError: print('---------------------自动退出,请输入正确的数字!!!----------------------') exit() # print('player:' + player + "" + count) print('欢迎%d位玩家,共%d副扑克。' % (player, count)) puke = Puke(player, count)
输出结果:
---------------------Welcome!!---------------------
请输入玩家数:4
请输入使用几副扑克:1
欢迎4位玩家,共1副扑克。
-------------------------------开始生成扑克----------------------------
正在生成第1副扑克
生成扑克完成,共52
-------------------------------------------------------------
生成的扑克:
♠3♠4♠5♠6♠7♠8♠9♠10♠J♠Q♠K♠A♠2♥3♥4♥5♥6♥7♥8♥9♥10♥J♥Q♥K♥A♥2♣3♣4♣5♣6♣7♣8♣9♣10♣J♣Q♣K♣A♣2♦3♦4♦5♦6♦7♦8♦9♦10♦J♦Q♦K♦A♦2
-------------------------------------------------------------
洗牌后的扑克:
♦10♣J♥9♣4♠5♣5♥Q♠A♥A♣10♠7♠4♦A♠8♠Q♣Q♥8♦7♣3♣9♠2♦K♥2♦2♦6♠3♠K♠10♣8♠9♥10♣K♥4♦3♠6♥5♥K♦4♦9♣A♦J♣6♥6♣2♥J♣7♥3♦8♠J♦Q♦5♥7
开始发牌
-------------------------------------------------------------
第1手上的牌
♦10♠5♥A♦A♥8♠2♦6♣8♥4♥K♦J♥J♠J
第1手上的有13张牌
-------------------------------------------------------------
第2手上的牌
♣J♣5♣10♠8♦7♦K♠3♠9♦3♦4♣6♣7♦Q
第2手上的有13张牌
-------------------------------------------------------------
第3手上的牌
♥9♥Q♠7♠Q♣3♥2♠K♥10♠6♦9♥6♥3♦5
第3手上的有13张牌
-------------------------------------------------------------
第4手上的牌
♣4♠A♠4♣Q♣9♦2♠10♣K♥5♣A♣2♦8♥7
第4手上的有13张牌
--------------------------------发牌结束-------------------------------
--------------------------------开始整理玩家手上的牌-------------------------------
-------------------------------------------------------------
整理前第1手上的牌
♦10♠5♥A♦A♥8♠2♦6♣8♥4♥K♦J♥J♠J
-------------------------------------------------------------
整理后第1手上的牌
♥4♠5♦6♥8♣8♦10♦J♥J♠J♥K♥A♦A♠2
-------------------------------------------------------------
整理前第2手上的牌
♣J♣5♣10♠8♦7♦K♠3♠9♦3♦4♣6♣7♦Q
-------------------------------------------------------------
整理后第2手上的牌
♠3♦3♦4♣5♣6♦7♣7♠8♠9♣10♣J♦Q♦K
-------------------------------------------------------------
整理前第3手上的牌
♥9♥Q♠7♠Q♣3♥2♠K♥10♠6♦9♥6♥3♦5
-------------------------------------------------------------
整理后第3手上的牌
♣3♥3♦5♠6♥6♠7♥9♦9♥10♥Q♠Q♠K♥2
-------------------------------------------------------------
整理前第4手上的牌
♣4♠A♠4♣Q♣9♦2♠10♣K♥5♣A♣2♦8♥7
-------------------------------------------------------------
整理后第4手上的牌
♣4♠4♥5♥7♦8♣9♠10♣Q♣K♠A♣A♦2♣2
--------------------------------整理牌完成-------------------------------
Process finished with exit code 0