title: craps in python
body: <p>I'm trying to simulate n games of craps.  The code seems to make sense to me but I never get the right result.  For example, if I put in n = 5 i.e. fives games the wins and losses sum to something greater than 5.  </p>
  
  <p>Here's how it's supposed to work:  if initial roll is 2, 3, or 12, the player loses.  If the roll is 7 or 11, the player wins.  Any other initial roll causes the player to roll again.  He keeps rolling until either he rolls a 7 or the value of the initial roll.  If he re-rolls the initial value before rolling a 7, it's a win.  Rolling a 7 first is a loss.</p>
  
  <pre><code>from random import randrange
  
      def roll():
          dice = randrange(1,7) + randrange (1,7)
          return dice
  
      def sim_games(n):
          wins = losses = 0
          for i in range(n):
              if game():
                  wins = wins + 1
              if not game():
                  losses = losses + 1
          return wins, losses
  
      #simulate one game
  
      def game():
  
              dice = roll()
              if dice == 2 or dice == 3 or dice == 12:
                  return False
              elif dice == 7 or dice == 11:
                  return True
              else:
                  dice1 = roll()
                  while dice1 != 7 or dice1 != dice:
                      if dice1 == 7:
                          return False
                      elif dice1 == dice:
                          return True
                      else:
                          dice1 = roll()
  
      def main():
  
          n = eval(input("How many games of craps would you like to play? "))
          w, l = sim_games(n)
  
          print("wins:", w,"losses:", l)
  </code></pre>