The one thing people told me when i started learning python was that python
has this lovely structure called dictionaries. Your particular problem is
very easy to solve using dictionaries in about 12 lines (i coded it myself
just to see ;-)).

For instance you could define the various values as a dictionary :
values = {1:'rock', 2:'paper', 3:'scissors'}

and the outcome of possible combinations (cchoice, hchoice) as :
combinations = {(1,1):'Tie game!', (1,2):'You win!', (1,3):'You lost!',
(2,1):'You lost!', (2,2):'Tie game!', (2,3):'You win!',
                          (3,1):'You win!', (3,2):'You lost!', (3,3):'Tie
game!'}

That way it's very easy to take a random value for computer , get input for
human player and print the result in a single print like so :
print "AI chose %s, you chose %s. %s", %(values.get(cchoice),values.get
(hchoice),combinations.get((cchoice,hchoice)))

Probably this is not unlike Alan suggest, but i got confused when i read
about tables. Unless he means dictionaries instead.

HTH - Geoframer

On 2/15/07, Rikard Bosnjakovic <[EMAIL PROTECTED]> wrote:

On 2/15/07, Nathan Pinno <[EMAIL PROTECTED]> wrote:

> and that was a suggestion. (Thanks!) But can anyone explain why I can
> shorten the code? I looked at it a long while yesterday, and came up
with
> nothing. The only thing I decided was to try to get it to the GUI stage.

If you take a look at your if-cases, you see that a lot of strings in
there are the same. The code is therefore redundant, and this is what
can be trimmed down.

Consider this code:

if var1 = 1 and var2 = 0:
  print "Var1 is 1, var2 is 0"
if var1 = 0 and var2 = 0:
  print "Var1 is 0, var2 is 0"
if var1 = 1 and var2 = 1:
  print "Var1 is 1, var2 is 1"
if var1 = 0 and var2 = 1:
  print "Var1 is 0, var2 is 1"

This scope is redundant in a lot of ways and can be trimmed down to
one if and one print:

if (var1 in [0,1]) and (var2 in [0,1]):
  print "Var1 is %d, var2 is %d" % (var1, var2)

Your code is similiar to the above. It takes time to learn how to trim
down redundant code. Vast knowledge of a language itself is not
required, but a pretty solid knowledge about the basics is probably
required. If you are entirely new to programming, it might be
cumbersome though.

Give it a try, and don't hesitate to ask again.

--
- Rikard.
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to