几个人用一副扑克牌玩游戏,游戏过程通常有洗牌、发牌、理牌等动作,编写程序模拟游戏过程。新牌花色顺序为♠、♥、♣、♦,花色相同时按2、3、4、5、6、7、8、9、10、J、Q、K、A,最后是小王和大王,

本文介绍了如何使用Python编写函数对多人手中的扑克牌进行升序排序,包括花色和点数的规则,以及洗牌和发牌的过程。
摘要由CSDN通过智能技术生成
import random


def sort_cards(person, m):
    """对m个人手上的牌进行升序排序,花色按黑红梅方,牌面按点数,大王最大,小王第二大"""
    ########## Begin ##########
    desighs = {'♠': 1, '♥': 2, '♣': 3, '♦': 4, 'j': 5, 'J': 6}  
    nums = {'2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '10': 10, 'J': 11, 'Q': 12, 'K': 13,
            'A': 14, 'okers': 15, 'OKERS': 16}
    list = []
    for i in person:
        result_list = sorted(i, key=lambda x: (desighs[x[0]], nums[x[1:]]))
        list.append(result_list)
    return list

    ########## End ##########

def start():
    """初始顺序,返回元素为字符串的列表"""
    cards_start = [i + j for i in desigh for j in num] + ghost
    return cards_start


def shuffle_cards(cards_start):
    """打乱顺序,返回元素为字符串的列表"""
    random.shuffle(cards_start)
    return cards_start


def traver(cards_shuffle, m):
    """发牌给m个人,返回二维列表"""
    person = []
    for i in range(m):
        person.append(cards_shuffle[i::m])
    return person




if __name__ == '__main__':
    desigh = ['♠', '♥', '♣', '♦']  # 表示黑桃、红桃、梅花、方块
    num = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
    ghost = ['jokers', 'JOKERS']
    n = int(input())  # 输入参与游戏的人数
    s = int(input())
    random.seed(s)
    print(f'参与游戏的人数:{n}')
    cards = start()
    cards_after = shuffle_cards(cards)
    cards_n = traver(cards_after, n)
    cards_sort = sort_cards(cards_n, n)
    print('每个人手上排序的牌')
    for i in range(n):
        print(*cards_sort[i]) 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值