Skip to main content
Engineering LibreTexts

9.4: Decks

  • Page ID
    15470
  • Now that we have Cards, the next step is to define Decks. Since a deck is made up of cards, it is natural for each Deck to contain a list of cards as an attribute.

    The following is a class definition for Deck. The init method creates the attribute cards and generates the standard set of fifty-two cards:

    class Deck(object):
    
        def __init__(self):
            self.cards = []
            for suit in range(4):
                for rank in range(1, 14):
                    card = Card(suit, rank)
                    self.cards.append(card)
    

    The easiest way to populate the deck is with a nested loop. The outer loop enumerates the suits from 0 to 3. The inner loop enumerates the ranks from 1 to 13. Each iteration creates a new Card with the current suit and rank, and appends it to self.cards.