首先牌数为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笔记做了总结和学习顺序,点击即可进入相关博客。希望可以便于你们阅读)