快捷搜索: 王者荣耀 脱发

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

**

以上

**

经验分享 程序员 微信小程序 职场和发展