Question: # 5.33 # In this exercise you'll modify Chapter 4's script that simulates the dice game craps by using the techniques # you learned in
# 5.33 # In this exercise you'll modify Chapter 4's script that simulates the dice game craps by using the techniques # you learned in Section 5.17.2. # The script should receive a command-line argument indicating the number of games of craps to execute and use # two lists to track the total number of games won and lost on the first roll, second roll, third roll, etc. # Summarize as follows: # a) Display a horizontal bar plot indicating how many games are won and how many are lost # on the first roll, second roll, third roll, etc. # Since the game could continue indefinitely, you might track wins and losses through the first dozen rolls (of a pair of # dice), then maintain two counters that keep track of the wins and losses after 12 rolls- no matter how long the game gets. # Create separate bars for wins and losses. # b) What are the chances of winning at craps? # [Note: You should discover that craps is one of the fairest casino games. What do you suppose this means?] # c) What is the mean for the length of the game of craps? # The median? # The mode? # d) Do chances of winning improve with the length of the game?
# Chapter 4 code reference is as follows:
# fig04_02.py Example """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')
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
