You roll two six-sided dice, each with faces containing one, two, three, four, five and six spots, respectively. When the dice come to rest, the sum of the spots on the two upward faces is calculated.
- If the sum is 7 or 11 on the first roll, you win.
- If the sum is 2, 3 or 12 on the first roll (called “craps”), you lose (i.e., the “house” wins).
- If the sum is 4, 5, 6, 8, 9 or 10 on the first roll, that sum becomes your “point.”
- To win, you must continue rolling the dice until you “make your point” (i.e., roll that same point value).
- You lose by rolling a 7 before making your point.
# fig04_02.py
"""Simulating the dice game Craps."""
import random
def roll_dice():
"""Roll two dice and return their face values as a tuple."""
die1 = random.randrange(1, 7)
die2 = random.randrange(1, 7)
return (die1, die2) # pack die face values into a tuple
def display_dice(dice):
"""Display one roll of the two dice."""
die1, die2 = dice # unpack the tuple into variables die1 and die2
print(f'Player rolled {die1} + {die2} = {sum(dice)}')
die_values = roll_dice() # first roll
display_dice(die_values)
# determine game status and point, based on first roll
sum_of_dice = sum(die_values)
if sum_of_dice in (7, 11): # win
game_status = 'WON'
elif sum_of_dice in (2, 3, 12): # lose
game_status = 'LOST'
else: # remember point
game_status = 'CONTINUE'
my_point = sum_of_dice
print('Point is', my_point)
# continue rolling until player wins or loses
while game_status == 'CONTINUE':
die_values = roll_dice()
display_dice(die_values)
sum_of_dice = sum(die_values)
if sum_of_dice == my_point: # win by making point
game_status = 'WON'
elif sum_of_dice == 7: # lose by rolling 7
game_status = 'LOST'
# display "wins" or "loses" message
if game_status == 'WON':
print('Player wins')
else:
print('Player loses')
run fig04_02.py
run fig04_02.py
run fig04_02.py
run fig04_02.py
roll_dice—Returning Multiple Values Via a Tuple¶roll_dice, which returns both die values as a tuple—an immutable sequences of values. display_dice¶= must match the number of elements in the tuple; otherwise, a ValueError occurs.game_status keeps track of the win/loss status.in operator in the following expression tests whether the tuple (7, 11) contains sum_of_dice’s valuesum_of_dice in (7, 11)
(sum_of_dice == 7) or (sum_of_dice == 11)
©1992–2020 by Pearson Education, Inc. All Rights Reserved. This content is based on Chapter 4 of the book Intro to Python for Computer Science and Data Science: Learning to Program with AI, Big Data and the Cloud.
DISCLAIMER: The authors and publisher of this book have used their best efforts in preparing the book. These efforts include the development, research, and testing of the theories and programs to determine their effectiveness. The authors and publisher make no warranty of any kind, expressed or implied, with regard to these programs or to the documentation contained in these books. The authors and publisher shall not be liable in any event for incidental or consequential damages in connection with, or arising out of, the furnishing, performance, or use of these programs.