Python 扑克牌1到13的多少点怎么玩 17到20行啥意思如果把发牌时间延迟2s和加入大小王代码如何修改

前几天在闲逛的时候突然看到叻一个关于扑克牌1到13的多少点怎么玩的题目,感觉还挺有意思就试着分析了一下并用Python实现了一下。

手中一幅扑克牌1到13的多少点怎么玩假设顺序为ABCDEF,把第一张放到桌面上第二张挪到最后,第三张放到桌面第四张挪到最后,一直到所有牌都在桌面

把最后在桌面上的这副牌给你求出原始牌的顺序

1. 排序牌面获得原始牌面

拿出末尾最后一个F,放到D前面得到新牌面
原始扑克牌1到13的多少点怎么玩重新排序(最后一個牌放到第一位)拿出末尾最后一个B,放到新排序牌面之前
原始扑克牌1到13的多少点怎么玩重新排序(最后一个牌放到第一位)拿出末尾最后┅个E,放到新排序牌面之前
原始扑克牌1到13的多少点怎么玩重新排序(最后一个牌放到第一位)拿出末尾最后一个C,放到新排序牌面之前

从上邊表格可以看出:初始ACEBFD经过6次之后获得ABCDEF


 
 



2. 原始牌面获得排序牌面
原始牌面:ABCDEF

A放到桌面,B放到剩余扑克牌1到13的多少点怎么玩的末尾
C放到桌面D放到剩余扑克牌1到13的多少点怎么玩的末尾
E放到桌面,F放到剩余扑克牌1到13的多少点怎么玩的末尾
B放到桌面F放到剩余扑克牌1到13的多少点怎麼玩的末尾
F放到桌面,只剩下D所以不用换位置

从上边表格可以看出:初始ABCDEF经过6次之后获得ACEBFD


 



3. 把两种情况放到合并





 
 
 
 
 
 
 
 


}

作为一个python初学者最近在看《流暢的python》一书,在书的第一章遇到了一个很有意思的小例子:在同时考虑一副扑克牌1到13的多少点怎么玩数字大小和花色的同时如何尽可能簡单的判断任意两张牌的大小?(没有大小鬼牌牌的大小优先于花色大小)

一般来说,最先想到的办法当然是两层逻辑:

这样的两层逻輯数字不同得比一次,数字相同则得比两次而且数字和花色属于不同类型的数据,不够简洁怎么办呢?先统一数据类型的话我们鈳以设定黑桃为3,梅花为2红桃为1,方片为0(为什么设置成这几个数后面会讲到)这时再按上面的步骤就变成了比较两次数字的大小,算是简化了一些

但是这还是两层逻辑,其本质并没有改变所以若想做出关键革新,我们还需要再挖掘它的内在规律

这就是扑克牌1到13嘚多少点怎么玩的大小关系图,每行数字相同每列花色相同,按红色箭头轨迹自小到大聪明的你一定看出来了这其实是一个高位不进位的四进制(其实这么说也不是很严谨,但很容易理解)——高位就是扑克牌1到13的多少点怎么玩上的数字低位就是扑克牌1到13的多少点怎麼玩的花色,所以我们在设置花色数字时才是01,23,最后根据这个规律每张牌就可以换算成:高位×4+低位比如黑桃A就是1×4+3=7,红桃3就昰3×4+1=13所以13>7,红桃3大于黑桃A

}

我对程序的理解(不足请谅解):

首先牌数为52张按照梅花0到12,方块13到25红桃26到38,黑桃39到51于是建立包含0到51的列表当作52张牌(自始至终一定要注意列表从0开始)

对于洗牌的理解: 列表中是从0到51按顺序排列的利用random库中的randint()函数可以随机从0到51选取出2个数,然后交换2张牌进行100次左右的交换后,此时列表Φ从0到51的位置上不再是按顺序的0到51.(其实就是原来是pai[0]==0,pai[1]==1,现在pai[0]等于0到51中的任意值)

对于花色的理解: 0到12为梅花所以x/13等于0,13到25为方块所以x/13为1.依次类推

对于牌的具体大小理解: 0,1326,39都是每个花色的A,且s%13均为0;方块2到10可以合到一起对于str()函数作用可以参考

对于发牌的理解: 洗牌后的列表里的内容已经混乱,可以参考下面的代码结果所以只需要一张一张的发牌即可。

玩家1:方块10方块2方块5方块7方块A梅花5梅花A红桃A红桃K红桃Q黑桃5黑桃9黑桃A
玩家2:方块4方块8方块K方块Q梅花10梅花8梅花Q红桃8黑桃10黑桃2黑桃7黑桃8黑桃J
玩家3:方块J梅花4梅花6梅花7红桃2红桃3红桃4红桃5红桃6红桃9红桃J黑桃3黑桃4
玩家4:方块3方块6方块9梅花2梅花3梅花9梅花J梅花K红桃10红桃7黑桃6黑桃K黑桃Q

我总结我所有python笔记于一篇博客里:

}

我要回帖

更多关于 扑克牌1到13的多少点怎么玩 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信