[Edu-sig] casino math (unit three)

kirby urner kirby.urner at gmail.com
Tue Sep 1 07:23:55 CEST 2009

This might be from a 3rd hour in our "casino math" segment.

There's no "deep math" here, just getting familiar with dot notation,
methods disguised as attributes (properties):

import random

class Deck:

    def __init__(self):
        self.deck = [
                    (suit + str(rank))
                     for suit in ['H','D','C','S']
                     for rank in range(1,14)
                     ] + ['joker']*2

    def deal_off_top(self):
        if len(self.deck) > 0:
            return self.deck.pop(0)

    def deal_off_bottom(self):
        if len(self.deck) > 0:
            return self.deck.pop(-1)

    def shuffle(self):

    def howmany(self):
            return len(self.deck)

Interactively... (inserting some blank lines for readability):

>>> from casino_math import *
>>> thedeck = Deck()

>>> thedeck.shuffle()
>>> thedeck.deck
['S10', 'joker', 'S1', 'C11', 'C1', 'C8', 'C3', 'D1', 'S6', 'S3',
'D12', 'D5', 'D10', 'S12', 'C2', 'D6', 'S2', 'D2', 'C9', 'H3',
'C13', 'D8', 'C7', 'D4', 'H6', 'H11', 'H2', 'D13', 'S11',
'H1', 'H8', 'H7', 'S8', 'H12', 'S4', 'D9', 'S9', 'C12', 'H9',
'D7', 'S5', 'S7', 'C5', 'C10', 'H5', 'D11', 'C4', 'joker',
'C6', 'S13', 'H4', 'H13', 'H10', 'D3']

>>> thedeck.deal_off_top()
>>> thedeck.deal_off_top()

>>> thedeck.deal_off_bottom()
>>> thedeck.deal_off_bottom()

>>> thedeck.howmany

http://www.flickr.com/photos/17157315@N00/3876500673/sizes/o/  (akbar font)

Of course this is a rather primitive deck without explicit
aces or royalty, just 1-13 in each suit plus two jokers.

The next step would be for students to write a Hand
class i.e. that which receives from the deck.

Before ya know it, we're playin' poker or twenty-one or
whatever well-known game of skill 'n chance.

On break, we encourage playing with Pysol maybe...



More information about the Edu-sig mailing list