Python基础篇:面向对象【案例实操】_python面向对象的实例练习 csdn(1)

for suite in Suite:
    print(f'{suite}: {suite.value}')

  • 接下来我们可以定义牌类。
class Card:
    """牌"""

    def __init__(self, suite, face):
        self.suite = suite
        self.face = face

    def __repr__(self):
        suites = '♠♥♣♦'
        faces = ['', 'A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K']
        # 根据牌的花色和点数取到对应的字符
        return f'{suites[self.suite.value]}{faces[self.face]}'

  • 可以通过下面的代码来测试下Card类。
card1 = Card(Suite.SPADE, 5)
card2 = Card(Suite.HEART, 13)
print(card1, card2)    # ♠5 ♥K

  • 接下来我们定义扑克类。
import random


class Poker:
    """扑克"""

    def \_\_init\_\_(self):
        # 通过列表的生成式语法创建一个装52张牌的列表
        self.cards = [Card(suite, face) for suite in Suite
                      for face in range(1, 14)]
        # current属性表示发牌的位置
        self.current = 0

    def shuffle(self):
        """洗牌"""
        self.current = 0
        # 通过random模块的shuffle函数实现列表的随机乱序
        random.shuffle(self.cards)

    def deal(self):
        """发牌"""
        card = self.cards[self.current]
        self.current += 1
        return card

    @property
    def has\_next(self):
        """还有没有牌可以发"""
        return self.current < len(self.cards)

你可能感兴趣的:(程序员,python,开发语言)