Python小程序之4名牌手洗牌发牌问题

编写程序, 4名牌手打牌,计算机随机将52张牌(不含大小鬼)发给4名牌手,在屏幕上显示每位牌手的牌。创建函数gen_pocker()交换牌的顺序,函数getColor()获取牌的花色,函数getValue()获取牌的牌面大小,函数getPuk()获取花色和牌面大小的组合

运行效果

[51, 45, 31, 4, 48, 26, 11, 2, 24, 44, 22, 21, 16, 41, 50, 47, 13, 25, 17, 29, 42, 27, 19, 33, 5, 40, 1, 8, 30, 18, 10, 9, 0, 3, 14, 46, 36, 35, 12, 15, 20, 34, 38, 39, 43, 37, 32, 7, 28, 23, 49, 6]

牌手1:方块4 方块8 方块A 方块Q 红桃3 红桃5 红桃J 草花6 草花A 黑桃10 黑桃4 黑桃5 黑桃K

牌手2:方块6 方块J 方块K 红桃10 红桃2 红桃9 红桃A 红桃Q 草花4 黑桃2 黑桃3 黑桃6 黑桃7

牌手3:方块10 方块2 方块5 方块7 红桃6 红桃7 红桃K 草花2 草花J 草花K 草花Q 黑桃J 黑桃Q

牌手4:方块3 方块9 红桃4 红桃8 草花10 草花3 草花5 草花7 草花8 草花9 黑桃8 黑桃9 黑桃A

import random
def gen_pocker(n):
    random.shuffle(n)
    return n
#产生牌的花色
def getColor(n):
    if(n>=0 and n<=12):
        return "梅花"
    elif(n>=13 and n<=25):
        return "方块"
    elif(n>=26 and n<=38):
        return "红桃"
    elif(n>=39 and n<=51):
        return "黑桃"
def getValue(n):
    if n==0 or n==13 or n==26 or n==39:
        return 'A'
    elif n==12 or n==38 or n==25 or n==51:
        return 'K'
    elif n==11 or n==37 or n==24 or n==50:
        return 'Q'
    elif n==10 or n==36 or n==23 or n==49:
        return 'J'
    else:
        return n%13
def getPuk():
    List=[]        #代表一副牌,现在表示还没有牌,只是一个牌盒
    for i in range(0,52):
        List.append(i)    #按顺序往牌盒中放入52张牌
    List=gen_pocker(List)    #将牌盒中的牌打乱顺序
    List1=[]              #定义4个牌手
    List2=[]        
    List3=[]
    List4=[]
    for i in range(0,52):  #实现发牌
        if i<13:        #打乱后的前13张牌发给牌手1,实现牌手1手牌中如何含有花色和数字
            List1.append(getColor(List[i])+str(getValue(List[i])))
        elif i<26:
            List2.append(getColor(List[i])+str(getValue(List[i])))
        elif i<39:
            List3.append(getColor(List[i])+str(getValue(List[i])))
        else:
            List4.append(getColor(List[i])+str(getValue(List[i])))
    print(List)
    print("牌手1",List1)
    print("牌手2",List2)
    print("牌手3",List3)
    print("牌手4",List4)
getPuk()
    
            
                         
    

 

 

 

猜你喜欢

转载自blog.csdn.net/fbvukn/article/details/86090805