(Python)扑克牌发牌程序 超详细的个人解读(学习笔记)

扑克牌发牌程序

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

首先牌数为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,13,26,39,都是每个花色的A,且s%13均为0;方块2到10可以合到一起,对于str()函数作用可以参考
str函数的用法
依次类推即可

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

下面上代码:

import random
n=52
def xipai(n):#多次交换牌的顺序以达到洗牌的顺序
    x=100    #交换次数
    while(x>0):
        x=x-1
        a=random.randint(0,n-1)
        b=random.randint(0,n-1)
        team=pai[a]
        pai[a]=pai[b]
        pai[b]=team
    return pai
def color(x):#计算牌的花色
    color=["梅花","方块","红桃","黑桃"]
    c=int(x/13)
    return color[c]
def count(x):#计算牌的具体大小
    count=x%13
    if count==0:
        return "A"
    elif count>=1 and count<=9:
        return str(count+1)
    elif count==10:
        return "J"
    elif count==11:
        return 'Q'
    elif count==12:
        return 'K'
def cbn(x):#把花色和大小组合在一起成为一张完整的牌
    return color(x)+count(x)
a=[]
b=[]
c=[]
d=[]#分别储存四个人的牌
pai=[i for i in range(n)]#形成一个0到51共52张牌
pai=xipai(n)#洗牌
print(pai)
for x in range(13): #依次发牌,每人13张牌,13个轮回
    m=x*4 #四张一个轮回
    a.append(cbn(pai[m]))
    b.append(cbn(pai[m+1]))
    c.append(cbn(pai[m+2]))
    d.append(cbn(pai[m+3]))
a.sort()
b.sort()
c.sort()
d.sort()
print("玩家1",end=":")
for x in a:
    print(x,end="")
print("\n玩家2",end=":")
for x in b:
    print(x,end="")
print("\n玩家3",end=":")
for x in c:
    print(x,end="")
print("\n玩家4",end=":")
for x in d:
    print(x,end="")

代码结果为:

[17, 16, 3, 35, 22, 7, 6, 10, 19, 9, 29, 21, 38, 48, 5, 32, 0, 25, 23, 8, 37, 11, 30, 1, 26, 20, 36, 15, 43, 49, 41, 44, 14, 33, 27, 18, 39, 45, 31, 2, 13, 40, 34, 51, 4, 24, 42, 50, 47, 46, 28, 12]
玩家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笔记于一篇博客里:
点击即可进入Python学习笔记大总结(我把我所有python笔记做了总结和学习顺序,点击即可进入相关博客。希望可以便于你们阅读)

  • 12
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃辣的IT男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值