Tusety 2022-01-20 00:30 采纳率: 66.7%
浏览 85
已结题

请问如何将扑克牌的牌按数字大小从左到右排序

问题遇到的现象和发生背景

['♣7', '♠7', '♣6', '♦5', '♣Q', '♥10', '♥A', '♣5', '♣9', '♣K', '♦4', '♦8', '♦Q']
['♦J', '♠8', '♣6', '♥3', '♥7', '♣5', '♣2', '♣6', '♣10', '♦A', '♦5', '♦9', '♠7']
['♣6', '♣2', '♦J', '♥4', '♥8', '♥Q', '♦A', '♣7', '♣J', '♦2', '♦6', '♦10', '♥4']
['♠7', '♠10', '♣Q', '♥5', '♦4', '♦8', '♣4', '♣8', '♣Q', '♦10', '♦7', '♦J']

4个列表分别如上

问题相关代码,请勿粘贴截图
import random
import numpy as np

rn=np.random.randint(1,55,54)

list_number=['3','4','5','6','7','8','9','10','J','Q','K','A','2',]
list_spade_label=['♠']*13
list_heart_label=['♥']*13
list_clubs_label=['♣']*13
list_diamonds_label=['♦']*13

def poker(label):
    n=0
    list1=[]
    for i in label:
        if n==13:
            n=0
        else:
            list1.append(i+list_number[n])
            n+=1

    return list1
list_all_label=list_spade_label+list_heart_label+list_clubs_label+list_diamonds_label

list_all=poker(list_all_label)
if __name__ == '__main__':
    hand=0
    n=1
    p1=[]
    p2=[]
    p3=[]
    p4=[]
    dict_all=dict(zip(rn,list_all))
    for i in rn:
        if n==4*hand+1 and dict_all.get(i)!=None:
            n+=1
            p1.append(dict_all.get(i))
        elif n==4*hand+2 and dict_all.get(i)!=None:
            n+=1
            p2.append(dict_all.get(i))
        elif n==4*hand+3 and dict_all.get(i)!=None:
            n+=1
            p3.append(dict_all.get(i))
        elif n==4*hand+4 and dict_all.get(i)!=None:
            n+=1
            p4.append(dict_all.get(i))
            hand+=1
    print(p1)
    print(p2)
    print(p3)
    print(p4)

我想要达到的结果

按平时打牌的习惯从小到大排序

  • 写回答

3条回答 默认 最新

  • 於黾 2022-01-20 08:51
    关注

    不要纠结扑克牌的字符串,那些应该作为代替image的东西,你可以想象它就是image
    想要对扑克牌排序,那么扑克牌本身就应该有个id
    也就是说,每张牌应该至少有2个属性,id和显示字符串
    当然这远远不够,这样定义牌,只能用来变魔术,你想实现打牌的话,那么牌的大小、花色这些都应该是属性
    你不要把这些拼接到字符串里面去,然后又重新从字符串里取出来再判断
    它一开始就应该是个单独的属性
    而相反牌面显示的内容应该是只读的,是通过其它属性拼接而成的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月28日
  • 已采纳回答 1月20日
  • 创建了问题 1月20日

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址