python 设计单张扑克牌类Card 设计整副扑克牌类Cards
需求如下:
编写程序,设计单张扑克牌类Card,具有花色,牌面与具体值。 同时设计整副扑克牌类Cards,具有52张牌。 红桃、黑桃、方片、草花 2345678910JQKA ♥♠♦♣ 设计一个发牌的函数,可以任意发出三张牌。 对任意三张牌断定牌的类型。 类型包括: 三条:三张牌value一样 一对:两张value一样 顺子:三张牌挨着 同花:三张牌type一样 同花顺:挨着,类型一样 其余都是散牌
import random class Card: def __init__(self, color, value, real_value): self.color = color self.value = value self.real_value = real_value def __str__(self): return "{0}{1}{2}".format(self.color, self.value, self.real_value) class Cards: def __init__(self): self.all_cards = [] self.three_cards = [] def init_cards(self): # 设计一个生成52张牌的函数 values = list(range(2, 11)) + list("JQKA") for color in "♥♠♦♣": count = 1 for i in values: c = Card(color, i, count) self.all_cards.append(c) count += 1 def fa_pai(self): # 设计一个发牌函数,循环三次,发出任意三张牌 for i in range(3): index = random.randint(0, len(self.all_cards) - 1) card = self.all_cards.pop(index) self.three_cards.append(card) def compare_pai(self): # 比较三张牌 self.three_cards.sort(key=lambda x: x.real_value) c0 = self.three_cards[0] c1 = self.three_cards[1] c2 = self.three_cards[2] if c0.value == c1.value == c2.value: print("三条") elif c0.value == c1.value or c0.value == c2.value or c1.value == c2.value: print("一对") elif c0.real_value+1 == c1.real_value and c0.real_value+2 == c2.real_value: print("顺子") elif c0.color == c1.color == c2.color: print("同花") elif ((c0.color == c1.color == c2.color) and (c0.real_value+1 == c1.real_value and c0.real_value+2 == c2.real_value)): print("同花顺") else: print("散牌") def show_three_pai(self): for c in self.three_cards: print(c) card = Cards() card.init_cards() card.fa_pai() card.compare_pai() card.show_three_pai()
运行结果如下:
同花 ♦65 ♦J10 ♦A13
**
以上
**