资讯专栏INFORMATION COLUMN

趣味Python题目10月8日

Mertens / 3381人阅读

摘要:最近在自学,无意看到群友一道比较有趣的问题,故尝试给出答案。目前给出的版本是最简单的情况,没有考虑比较牌大小中出现数字或者字母重复的情况,以后有时间或许会给出更精细的版本。编写程序,进行扑克牌大小比较。

最近在自学Python,无意看到群友一道比较有趣的问题,故尝试给出答案。目前给出的版本是最简单的情况,没有考虑比较牌大小中出现数字或者字母重复的情况,以后有时间或许会给出更精细的版本。

编写程序,进行扑克牌大小比较。利用函数方法,生成52张四色(梅花,方块,黑桃,红桃)扑克牌,玩家的人数由用户输入,根据玩家的人数进行发牌,然后比较大小。1. 牌的生成、发牌、大小比较,必须为函数2. 程序要有终止条件3. 用户不选择程序终止,那么继续发牌、出牌,进行大小比较提示:可以使用以下列表表示信息```pythonnum = ["3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"]color = ["红桃", "梅花", "方块", "黑桃"]playerName = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸", "子", "丑", "寅", "卯", "巳", "午", "未", "申", "酉", "戌", "亥"]```
# 需要用到的信息列表num = ["3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"]color = ["红桃", "梅花", "方块", "黑桃"]playername = ["甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸",              "子", "丑", "寅", "卯", "巳", "午", "未", "申", "酉", "戌", "亥"]
# 需要定义的函数def generate_porker():    """    产生随机的52张牌,允许重复    """    gp = []    import random    color_gp = random.choices(color, k = 52)    num_gp = random.choices(num, k =52)    for i in range(52):        gp.append(color_gp[i] + num_gp[i])    return gpdef deal_porker(n, gp):    """    从52张牌中给每个玩家按照顺序发牌    """    players = playername[0: n]    n_porker = int(52 / n)    deal = []    import random    for i in range(n):        temp = []        temp.append(playername[i])        temp.append(gp[i * (n_porker) : (i + 1) * n_porker])        deal.append(temp)    return dealdef discard_porker(n, deal):    """    随机让每个玩家抽一张牌出来    """    discard = []    import random    for i in range(n):        temp = []        temp.append(deal[i][0])        temp.append(random.choice(deal[i][1]))        discard.append(temp)    return discarddef compare(n, discard):    """    比较出来赢家(不考虑数字和花色重复的情况)    """    temp = 0    for i in range(n):        if len(discard[temp][1]) == 4:            a = discard[temp][1][-2:]        else:            a = discard[temp][1][-1:]        if len(discard[i][1]) == 4:            b = discard[i][1][-2:]        else:            b = discard[i][1][-1:]        if num.index(a) < num.index(b):            temp = i    return discard[temp][0]
flag = 1while flag:    n = eval(input("请输入玩家的人数(可以被52整数的正整数,不大于22):"))    if n < 0 or n > 22 or 52 % n > 0:        print("请重新输入玩家的人数!")        continue    else:        gp = generate_porker()        deal = deal_porker(n, gp)        for i in range(n):            print("{}的牌为:{}".format(deal[i][0],deal[i][1]))        discard = discard_porker(n, deal)        for i in range(n):            print("{}出的牌为:{}".format(discard[i][0], discard[i][1]))        winner = compare(n, discard)        print("{}赢".format(winner))    temp = eval(input("请选择你要执行的操作(1.继续 2.退出):"))    if temp == 2:        flag = 0

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/122016.html

相关文章

  • Python猫荐书系列:文也深度学习,理也深度学习

    摘要:本期猫荐书栏目系列之六,就以此为话题,推荐给大家两本书它们都叫深度学习,但是内容很不一样。事实上,第一本书被很多人誉为深度学习的圣经,知名度极高,有一个昵称叫作花书。 最近出了两件大新闻,相信大家可能有所耳闻。 我来当个播报员,给大家转述一下: 1、中国队在第 11 界罗马尼亚数学大师赛(RMM)中无缘金牌。该项赛事是三大国际赛事之一,被誉为中学奥数的最高难度。其中一道题,令中国队全军...

    LuDongWei 评论0 收藏0

发表评论

0条评论

Mertens

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<