"""
运用类完成一个扑克牌类(无大小王)的小游戏:
用户需要输入用户名,以下为用户可选选项:
        1. 洗牌
        2. 随机抽取一张
        3. 指定抽取一张
        4. 从小到大排序
        5. 退出
1。洗牌:每次执行的结果顺序随机
2. 随机抽取一张:显示结果为:XXX您随机抽取的牌为:黑桃A
3. 指定抽取一张:
    用户输入序号(1~52)
    比如输入5,显示结果为:XXX您抽取的第5张牌为:黑桃A
4. 将此牌从小到大显示出来。 A -> 2 -> 3 .......->k
"""
import random
class User:
    #初始化用户
    def __init__(self, name):
        self.name = name
        #抽取后的牌组
        self.p = []

    #导入牌组对象
    def e_poker(self, poker):
        self.poker = poker

    #随机抽取牌
    def random_sampling(self):
        p = random.choice(self.poker.pokers)
        print(f'{self.name}您随机抽取的牌为:{p}')
        self.poker.pokers.remove(p)
        self.p.append(p)

    #对指定数抽取牌
    def specified_extraction(self, num):
        if num >= 1 and num <= len(self.poker.pokers):
            p = self.poker.pokers[num-1]
            print(f'{self.name}您抽取{num}张的牌为:{p}')
            self.poker.pokers.remove(p)
            self.p.append(p)
        else:
            print('输入越界')

    #对抽取后的牌的大小排序
    def sort_zhipai(self):
        list1 = []
        list2 = []
        list3 = []
        for i in self.p:
            list1.append(i[2:])
        list1.sort()
        for j in list1:
            if j == '10':
                list3.append(j)
            elif j >= '2' and j <= '9':
                list2.append(j)
            else:
                list3.append(j)
        list2.sort()
        list3.sort()
        list4 = list2 + list3
        for k in list4:
            print(k, end='-->')


class Poker:
    #生成牌组
    def __init__(self):
        self.num = [str(i) for i in range(2, 11)] + ['A', 'J', 'Q', 'K']
        self.color = ['黑桃', '红杏', '黑梅', '红方']
        self.pokers = []
        for i in self.color:
            for j in self.num:
                self.pokers.append(f'{i}{j}')
        #生成牌组后洗牌
        random.shuffle(self.pokers)


    #洗牌
    def shuffle(self):
        self.__init__()
        print('洗牌成功')

def run():
    user = input('请输入用户名:')
    if user == "":
        raise Exception('用户名输入为空!')
    else:
        u = User(user)
        p = Poker()
        u.e_poker(p)
    while 1:
        print('1.洗牌')
        print('2. 随机抽取一张')
        print('3. 指定抽取一张')
        print('4. 从小到大排序')
        print('5. 退出')
        main_in = input('请输入选项:')
        main_in = int(main_in)
        if main_in == 1:
            u.poker.shuffle()
        elif main_in == 2:
            u.random_sampling()
        elif main_in == 3:
            #对于牌组剩余的牌组抽取
            num = input(f'请输入1~{len(u.poker.pokers)}的数据:')
            num = int(num)
            u.specified_extraction(num)
        elif main_in == 4:
            u.sort_zhipai()
        elif main_in == 5:
            break
        else:
            print('输入错误请重新输入!')

run()