代码如下
import random
#定义扑克牌,也可以用for循环输出
Poker = ['♦3', '♣3', '♥3', '♠3',
'♦4', '♣4', '♥4', '♠4',
'♦5', '♣5', '♥5', '♠5',
'♦6', '♣6', '♥6', '♠6',
'♦7', '♣7', '♥7', '♠7',
'♦8', '♣8', '♥8', '♠8',
'♦9', '♣9', '♥9', '♠9',
'♦10', '♣10', '♥10', '♠10',
'♦J', '♣J', '♥J', '♠J',
'♦Q', '♣Q', '♥Q', '♠Q',
'♦K', '♣K', '♥K', '♠K',
'♦A', '♣A', '♥A', '♠A',
'♦2', '♣2', '♥2', '♠2',
'BlackJoker','RedJoker']
pai = []
#从大到小排列
for i in range(0,54):
pai.append(Poker[53-i])
class doudizhu():#定义doudizhu类
def __init__(self):#定义a,b,c,分别为玩家1,2,3的手牌
self.a = []
self.b = []
self.c = []
def fapai(self):#定义发牌函数,三个人随机取17张,剩下的Poker中为三张底牌
for i in range(0,17):
t = random.randint(0,53-i)
self.a.append(Poker[t])
Poker.pop(t)
for i in range(0, 17):
t = random.randint(0, 36 - i)
self.b.append(Poker[t])
Poker.pop(t)
for i in range(0, 17):
t = random.randint(0, 19 - i)
self.c.append(Poker[t])
Poker.pop(t)
def choosedizhu(self):#定义选地主类,随机一位玩家为地主
dizhu = random.randint(1,3)
if dizhu == 1:
player1 = "地主"
else:player1 = "农民"
if dizhu == 2:
player2 = "地主"
else:player2 = "农民"
if dizhu == 3:
player3 = "地主"
else:player3 = "农民"
# 要调用到其他函数中
#类里面的方法想调用另外一个方法,需要在方法体中用self.方法名的方式来调用
#同样,类里面的方法想调用类的属性,需要用self.属性名的方式
start.player1 = player1
start.player2 = player2
start.player3 = player3
def givedizhupai(self):#定义发三张底牌给地主的函数
self.choosedizhu()
'''
print(Poker)
print(self.player1)
print(self.player2)
print(self.player3)
'''
dizhupai = [Poker[0],Poker[1],Poker[2]]
if self.player1 == "地主":
for i in dizhupai:
self.a.append(i)
if self.player2 == "地主":
for i in dizhupai:
self.b.append(i)
if self.player3 == "地主":
for i in dizhupai:
self.c.append(i)
'''
print(self.a)
print(self.b)
print(self.c)
'''
def sortpai(self):#定义给牌排序的函数
self.givedizhupai()
# 用列表推导式,在pai中选出a/b/c中有的牌
#如果在pai列表中for循环删除,会出现有漏删的情况
A = [i for i in pai if i in self.a]
B = [i for i in pai if i in self.b]
C = [i for i in pai if i in self.c]
print('玩家1:', self.player1, A)
print('玩家2:', self.player2, B)
print('玩家3:', self.player3, C)
if __name__ == '__main__':#作为脚本直接运行
start = doudizhu()#便于实例化
start.fapai()
start.sortpai()
print('底牌是:{} {} {}'.format(Poker[0],Poker[1],Poker[2]))