# PyJack

Paul Rubin http
Thu Aug 12 01:54:11 CEST 2004

```jumpthewall at gmail.com (Chris Patton) writes:
> import whrandom, os

Use random rather than whrandom.  whrandom is obsolete and deprecated.
If you're imagining a situation where players will bet real money on
the hands dealt by this program, you have to get even more serious

> def scorer(score,playerdeck):...
>                         while d < len(playerdeck):
>                                 if score > 10 and 'A' in playerdeck:
> typevalues['A'] = 1

This is pretty ugly, changing the contents of what's conceptually a
fixed table, depending on the player score.  I think it's better to
just score the hand with A=1, then count the aces and adjust the score
accordingly.

>         while decksize < 52:
>                 a = whrandom.randint(0,12)
>                 if left[a] > 0:
>                         left[a] = left[a] - 1
>                         deck.append(types[a])
>                         decksize = decksize + 1
>                 elif left[a] == 0: pass

This is a horrendous method of shuffling the cards.  When there's only
one card left to deal, it will take several tries to find it.  See
the random.shuffle function for a direct way to shuffle.

>         humandeck = []
>         while c <= 1:
>                 humandeck.append(deck[0])
>                 del deck[0]
>                 c = c + 1

>         compdeck = []
>         c = 0
>         while c <= 1:
>                 compdeck.append(deck[0])
>                 del deck[0]
>                 c = c + 1

Move these to a function that deals one hand, and call it for
the player and the computer.

>         score = 0
>         compscore = 0
>         stay = 0
>         over = 0
>         compstay = 0
>         compover = 0

Maybe you want to think of using fewer variables, e.g. create class
instances for the two players.  Right now you only handle a two-player
game (the human and the computer).  What if you want to handle n players?

```