The Playing Cards Program 1.0

This is an example from:

Chapter 9: Python Programming for the Absolute Beginner, Third Edition - Michael Dawson.

It is a simple program that demonstrates combining objects.

You will find two simple classes Card and Hand.

The Card class represents a playing card.

The Hand class represents a player's hand of cards.

The key point of this program is that the Hand class internally manages a list of cards that are in the player's hand.

Copy the following into main.py.

# Playing Cards 1.0
# Demonstrates combining objects
class Card(object):
  """ A playing card. """
  RANKS = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]
  SUITS = ["c", "d", "h", "s"]

  def __init__(self, rank, suit):
    self.rank = rank
    self.suit = suit

  def __str__(self):
    rep = self.rank + self.suit
    return rep


class Hand(object):
  """ A hand of playing cards. """

  def __init__(self):
    self.cards = []

  def __str__(self):
    if self.cards:
      rep = ""
      for card in self.cards:
        rep += str(card) + "\t"
    else:
      rep = "<empty>"

    return rep

  def clear(self):
    self.cards = []

  def add(self, card):
    self.cards.append(card)

  def give(self, card, other_hand):
    self.cards.remove(card)
    other_hand.add(card)


def main():
  card1 = Card(rank = "A", suit = "c")
  print("Printing a Card object:")
  print(card1)
  card2 = Card(rank = "2", suit = "c")
  card3 = Card(rank = "3", suit = "c")
  card4 = Card(rank = "4", suit = "c")
  card5 = Card(rank = "5", suit = "c")
  print("\nPrinting the rest of the objects individually:")
  print(card2)
  print(card3)
  print(card4)
  print(card5)

  my_hand = Hand()
  print("\nPrinting my hand before I add any cards:")
  print(my_hand)
  my_hand.add(card1)
  my_hand.add(card2)
  my_hand.add(card3)
  my_hand.add(card4)
  my_hand.add(card5)
  print("\nPrinting my hand after adding 5 cards:")
  print(my_hand)

  your_hand = Hand()
  my_hand.give(card1, your_hand)
  my_hand.give(card2, your_hand)
  print("\nGave the first two cards from my hand to your hand.")
  print("Your hand:")
  print(your_hand)
  print("My hand:")
  print(my_hand)

  my_hand.clear()
  print("\nMy hand after clearing it:")
  print(my_hand)
  input("\n\nPress the enter key to exit.")


if __name__ == "__main__":
  main()