On 2011-10-09 08:25, col speed wrote:
Thanks for your prompt reply! Here's the whole thing:

import random

message = """Welcome to craps!!!! Place your bet
              and roll the dice.
              7 or 11 wins.
              2, 3 or 12 loses.
              Others are "point"."""
player = "Your"
dice = range(1, 7)
stake = 100
bet = 5
winmsg = "You have won!You have ${0} left.".format(stake)
losemsg = "You have lost! You have ${0} left.".format(stake)
players = ["Your", "My"]

def win(num):
     if num in [7,11]:
         return "win"
     elif num in [2,3,12]:
         return "lose"
     else:
         return "point"

def changePlayer(player):
     if player == "Your":
         return "My"
     else:
         return "Your"

def point(num):
     while True:
         raw_input("Roll")
         uno, dos = random.choice(dice), random.choice(dice)
         three = uno+dos
         print "{0} + {1} = {2}".format(uno, dos, three)
         print "Point is {0}. You scored {1}.".format(num, three)
         if three == num:
             return "win"
         if three == 7:
             return "lose"
         else:
             print "Try again."

print message
while stake:
     print "{0} throw! You have ${1}. How much do you bet?".format(player,
stake)
     bet = int(raw_input("$"))
     stake -= bet
     one, two = random.choice(dice), random.choice(dice)
     print "{0} + {1} = {2}".format(one, two, one+two)
     if win(one+two) == "win":
         stake += bet*2
         print winmsg
     elif win(one+two) == "lose":

         print losemsg
     else:
         if point(one+two) == "win":

Here you go into the function "point" the first time. Inside the function you are in an infinite while-loop where you only exit if the sum is either 7 ("lose") or equal the given parameter ("win"). Then you compare the return value. In the case of "lose" you continue to the next elif-statement:

             stake += bet*2
             print winmsg
         elif  point(one+two) == "lose":

Now you go into the function "point" a *second* time, in other words you have to throw another 7 to leave the function with the return value "lose". But just now you will print out the message for loosing the game:

             print losemsg
             player = changePlayer(player)

What you probably want is to go into "point" only once, save the result value and check if it's "win" or "lose".

HTH,
Andreas


_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to