Метод Python в классе - PullRequest
       5

Метод Python в классе

1 голос
/ 14 марта 2019

Я пытаюсь начать использовать объекты правильно, я собрал колоду карт, которая является моим объектом.Я хочу иметь возможность перетасовать и раздавать карты из него.Однако я не могу понять, как заставить метод 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()

1 Ответ

2 голосов
/ 14 марта 2019

Sets не заказаны, вы можете использовать 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]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...