类中的 Python 方法

标签 python class methods

我正在尝试开始正确使用对象,我已经构建了一副纸牌,这就是我的对象。我希望能够从中洗牌和发牌。但是,我不知道如何让 shuffle 方法正常工作,或者即使这是最好的方法。

import itertools
import random

class Deck:
    '''Deck of cards to be used in a card game'''
    def __init__(self):
        self.faces = ['A', 'K', 'Q', 'J', 'T', '9', '8', '7', '6', '5', '4','3', '2']
        self.suits = ['c', 'd', 'h', 's']
        self.cards = set(itertools.product(self.faces, self.suits))

    def shuffle(self):
        self.cards = random.shuffle(self.cards)

    def deal(self):
        card = self.cards.pop()
        return card[0] + card[1]

使用;

deck = Deck()
deck.shuffle()
deck.deal()

最佳答案

集合没有排序,您可以使用list()来获取有序的牌组。 此外,random.shuffle(l) 直接作用于列表并返回 None,因此您将用 None 覆盖列表。

import itertools
import random

class Deck:
    '''Deck of cards to be used in a card game'''
    def __init__(self):
        self.faces = ['A', 'K', 'Q', 'J', 'T', '9', '8', '7', '6', '5', '4','3', '2']
        self.suits = ['c', 'd', 'h', 's']
        self.cards = list(itertools.product(self.faces, self.suits))  # ordered deck
        # self.cards = set(itertools.product(self.faces, self.suits))  # unordered deck

    def shuffle(self):
        random.shuffle(self.cards)

    def deal(self):
        card = self.cards.pop()
        return card[0] + card[1]

关于类中的 Python 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55164847/

相关文章:

java - 如何进行轮询并定期检查数据库中的新传入数据

python - 为 Flask 应用程序提供服务是否需要 WSGI 服务器和 HTTP 服务器?

python - 使用正则表达式查找具有条件的子字符串

python - 是否可以在查询中使用切片?

c++ - 如何对类数组进行排序

c++ - 为类创建带参数的复制构造函数

pointers - 即使我使用指向某个类型的指针来更新它,我的对象也不会更新

python - 有没有办法将24小时时间格式转换为一天的四个类别或四个象限?

c++ - 由于类型不匹配,无法将一个指针分配给另一个指针,或者编译器这样说

c# - 您更喜欢哪种方法签名,为什么?