[Edu-sig] Cards n stuff...

Kirby Urner pdx4d@teleport.com
Tue, 13 Mar 2001 11:04:51 -0800


Hi Jeff --

Here's a slightly modified version of your code, including
some ideas about shuffling:

import random

class Card:
  
  def __init__(self, suite, rank):
    self.suite = suite
    self.rank = rank

  def __repr__(self):
    return self.rank + ' of ' + self.suite

class Deck:

  suites = ['Hearts','Diamonds','Spades','Clubs']
  ranks  =  ['Ace']+map(str,range(2,11))+['Jack','Queen','King']
    
  def __init__(self):
    self.cards = []
    for suite in Deck.suites:
      for rank in Deck.ranks:
        newCard = Card(suite, rank)
        self.cards.append(newCard)

  def shuffle(self):
      newdeck = []
      while len(newdeck)<52:
          randomcard = random.choice(self.cards)
          newdeck.append(randomcard)
          self.cards.remove(randomcard)
      self.cards = newdeck
      


Note:  I manually truncated/edited the list of cards to save
space.

>>> mydeck = cards.Deck()
>>> mydeck.cards
[Ace of Hearts, 2 of Hearts, 3 of Hearts, 4 of Hearts, 5 of Hearts, 
6 of Hearts, 7 of Hearts, 8 of Hearts, 9 of Hearts, 10 of Hearts, 
Jack of Hearts, Queen of Hearts, King of Hearts, Ace of Diamonds...]

>>> mydeck.shuffle()
>>> mydeck.cards
[Ace of Spades, 9 of Hearts, 7 of Spades, Queen of Diamonds, 3 of Hearts, 
Jack of Spades, 10 of Clubs, 4 of Spades, 10 of Hearts, Queen of Spades, 
7 of Diamonds, Ace of Hearts, Queen of Hearts, Queen of Clubs, 6 of Spades, 
King of Hearts...]
>>> len(mydeck.cards)
52