❤️Python发牌--非面向对象❤️

该博客展示了三种使用Python实现扑克牌发牌的方法。首先,通过创建扑克牌列表并随机分配给玩家;其次,通过洗牌后再平均分配给玩家;最后,采用列表推导式进行发牌操作。所有方法都确保每位玩家获得相同数量的牌。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 方法一:

import random  as r

numberOfCard=52
numberOfPeople=4
types=['♥','♠','♦','♣']
symbols=['A','2','3','4','5','6','7','8','9','10','J','Q','K']


#生成1副扑克
pokers= {}
for i in range(numberOfCard):
    pokers[i]=[types[i//13],symbols[i % 13]]
#pokers[numberOfCard +1] = ['小', '王']
#pokers[numberOfCard +2] = ['大', '王']

#准备numberOfPeople人数的玩家
players= {}
for i in range(numberOfPeople):
    players[i]=[]

#发牌 给卡片编号,并从这些卡号随机抽取出来发给玩家
card=[i for i in range(numberOfCard)]
for i in range(numberOfCard):
    c=r.choice(card)
    card.remove(c)
    players[i % numberOfPeople].append(pokers[c])

#显示玩家手中的牌
for i in range(numberOfPeople):
    print('第',i+1,'位牌手:',players[i])

方法二:

import random  as r

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

#洗牌
pokers=[i+j for i in types for j in symbols]
r.shuffle(pokers)

#准备numberOfPeople人数的玩家
players= {}
for i in range(numberOfPeople):
    players[i]=[]

#发牌
for i in range(len(pokers)):
    players[i % numberOfPeople].append(pokers[i])

#显示各位玩家的牌
for i in range(numberOfPeople):
    print('第',i+1,'位牌手:',players[i])

方法三:

import random  as r

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

#洗牌
pokers=[]
'''
for i in types:
    for j in symbols:
        pokers.append([i,j])
'''
pokers=[[t,s]for t in types for s in symbols]
r.shuffle(pokers)

#发牌
'''
players=[]
pokerOfEachPeople=len(pokers)//numberOfPeople
for i in range(numberOfPeople):
    players.append(pokers[pokerOfEachPeople*i:pokerOfEachPeople*(i+1)])
    print('牌手',i+1,':',players[i])
'''

pokerOfEachPeople=len(pokers)//numberOfPeople
players=[pokers[pokerOfEachPeople*i:pokerOfEachPeople*(i+1)]for i in range(numberOfPeople)]

#显示各位玩家的牌
for i in range(numberOfPeople):
    print('牌手',i+1,':',players[i])

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值