Python Programming: An Introduction to Computer Science, 3rd Ed.
Python Programming: An Introduction to Computer Science, 3rd Ed.
3rd Edition
ISBN: 9781590282755
Author: John Zelle
Publisher: Franklin, Beedle & Associates
Question
Book Icon
Chapter 9, Problem 1PE
Program Plan Intro

Program plan:

  • Import random.
  • Define “main()” function.
    • Call the function “printIntro()”.
    • Get input using “getInputs()” function.
    • Call function “simNMatches()” to find the matches.
    • Call function “printSummary()”.
    • Define a function “printIntro()”.
      • Print the statements.
    • Define a function “getInputs()”.
    • Get the value for simulation parameter “a” from the user.
    • Get the value for simulation parameter “b” from the user.
    • Get the value for simulation parameter “n” from the user.
    • Returns the three simulation parameters.
    • Define a function “simNMatches()”.
      • Initialize values.
      • Iterate a for loop up to “n”.
        • Call the function “simOneMatch()”.
        • If condition.
        • Increment the value of “matchA” by 1.
        • Else.
        • Increment the value of “matchB” by 1.
        • Return the value of “matchA” and “matchB”.
    • Define a function “simOneMatch()”.
      • Initialize the values “wisnA” and “WinsB” as 0.
      • Accumulate number of games.
      • Iterate a while loop.
        • Call a function “simOneGame()”.
        • If condition.
          • Increment the value of “winA” by 1.
          • Increment the value of “x” by 1.
        • Else condition.
          • Increment the value of “winsB” by 1.
          • Increment the value of “x” by 1.
          • Return the value of “winsA” and “winsB”.
    • Define a function “simOneGame()”.
      • Call a function “findService()” to a value “serving”.
      • Initialize values.
      • Iterate a while loop.
        • If condition “serving == "A"”.
          • If condition “random() < probA”.
            • Increment the value of “scoreA” by 1.
          • If not the condition.
            • Assign a value “B” to a variable “serving”.
          • Else if condition.
            • If condition “random() < probB” increment the value of “scoreB” by 1.
            • Increment the value of “scoreB” by 1.
          • If not the condition.
            • assign a value “A” to a variable “serving”
              • Return “scoreA”, “scoreB”..
    • Define a function “findService()”.
      • If condition “x % 2 == 0”.
        • Return “A”.
              • If not the condition.
                • Return “B”.
    • Define a function “gameOver()”.
      • If the condition satisfies.
        • Return the value of “b”.
                • Else if condition “b == 0 and a == 7”.
                  • Return the value of “a”.
                • Else if condition “abs(a-b) >= 2”.
                  • Return “True”.
                • If not the condition
                  • Return a value “False”.
    • Define a function “printSummary()”.
      • Add the value of “matchA” and “matchB” and store in a variable “n”.
      • Print the value of “n”.
      • Print the value of “matchA”.
      • Print the value of “matchB”.
  • main for function call

Expert Solution & Answer
Check Mark
Program Description Answer

This is a revision of the racquetball simulation. The problem has two major changes:

The program has to calculate results for best of n games.

First service is alternated between A and B. The odd numbered games of the match are served first by A and even numbered games are first served by B.

Explanation of Solution

Program:

#import random

from random import random

#define main() function

def main():

    #call the function printIntro()

    printIntro()

  #get input using getInputs() function

    probA, probB, n = getInputs()

  #calling function simNMatches() to find the matches

    matchA, matchB = simNMatches(n, probA, probB)

  #call function printSummary()

    printSummary(matchA, matchB)

  #define a function printIntro()

def printIntro():

    print("This program simulates a game of racquetball between two")

    print('players called "A" and "B". The abilities of each player is')

    print("indicated by a probability (a number between 0 and 1) that")

    print("reflects the likelihood of a player winning the serve.")

    print("Player A has the first serve.")

#define a function getInputs()

def getInputs():

    #get the value for simulation parameter ‘a’ from the user

    a = eval(input("What is the prob. player A wins a serve? "))

    #get the value for simulation parameter ‘b’ from the user

    b = eval(input("What is the prob. player B wins a serve? "))

    #get the value for simulation parameter ‘n’ from the user

    n = eval(input("How many games to simulate? "))

    #Returns the three simulation parameters

    return a, b, n

#define a function simNMatches()

def simNMatches(n, probA, probB):

    #initialize values

    matchA = matchB = 0

    #iterate a for loop up to n

    for i in range(n):

        #call the function simOneMatch()

        winsA, winsB = simOneMatch(probA, probB)

        #if condition

        if winsA > winsB:

            #increment the value of matchA by 1

            matchA = matchA + 1

        #else

        else:

            #increment the value of matchB by 1

            matchB = matchB + 1

    #return the value of matchA and matchB

    return matchA, matchB

#define a function simOneMatch()

def simOneMatch(probA, probB):

    #initialize the values wisnA and WinsB as 0

    winsA = winsB = 0

    #accumulate number of games

    x = 1

    #iterate a while loop

    while winsA !=2 and winsB !=2:

        #calling a function simOneGame()

        scoreA, scoreB = simOneGame(probA, probB, x)

        #if condition

        if scoreA > scoreB:

            #increment the value of winA by 1

            winsA = winsA + 1

            #increment the value of x by 1

            x = x+1

        #else condition

        else:

            #increment the value of winsB by 1

            winsB = winsB + 1

            #increment the value of x by 1.

            x = x+1

    #return the value of winsA and winsB

    return winsA, winsB

#define a function simOneGame()

def simOneGame(probA, probB, x):

    #call a function findService() to a value “serving”

    serving = findService(x)

    #initialize values

    scoreA = 0

    scoreB = 0

    #iterate a while loop.

    while not gameOver(scoreA, scoreB):

        #if condition

        if serving == "A":

            #if condition

            if random() < probA:

                #increment the value of scoreA by 1

                scoreA = scoreA + 1

            #if not the condition

            else:

                #assign a value “B” to a variable “serving”

                serving = "B"

        #else if condition

        elif serving == "B":

            #if condition

            if random() < probB:

                #increment the value of scoreB by 1

                scoreB = scoreB + 1

            #if not the condition

            else:

                #assign a value “A” to a variable “serving”

                serving = "A"

    #return

    return scoreA, scoreB

#define a function findService()

def findService(x):

    #if condition

    if x % 2 == 0:

        #return “A”

        return "A"

    #if not the condition

    else:

        #return “B”

        return "B"

#define a function gameOver()

def gameOver(a, b):

    #if the condition satisfies

    if a == 0 and b == 7:

        #return the value of “b”

        return b == 7

    #else if condition

    elif b == 0 and a == 7:

        #return the value of a

        return a == 7

    #else if condition

    elif abs(a-b) >= 2:

        #return “True”

        return True

    #if not the condition

    else:

        #return a value “False”

        return False

#define a function printSummary()

# Prints a summary of wins for each players

def printSummary(matchA, matchB):

    #add the value of matchA and matchB and store in a variable n.

    n = matchA + matchB

    #print the value of n

    print("\nGames simulated: ", n)

    #print the value of matchA

    print("Wins for A: {0} ({1:0.1%})".format(matchA, matchA/n))

    #print the value of matchB

    print("Wins for B: {0} ({1:0.1%})".format(matchB, matchB/n))

# main for function call

if __name__ == '__main__': main()

Sample Output

Output:

This program simulates a game of racquetball between two

players called "A" and "B". The abilities of each player is

indicated by a probability (a number between 0 and 1) that

reflects the likelihood of a player winning the serve.

Player A has the first serve.

What is the prob. player A wins a serve? 0.5

What is the prob. player B wins a serve? 0.7

How many games to simulate? 2

Games simulated:  2

Wins for A: 1 (50.0%)

Wins for B: 1 (50.0%)

Want to see more full solutions like this?

Subscribe now to access step-by-step solutions to millions of textbook problems written by subject matter experts!
Students have asked these similar questions
Imagine there are N teams competing in a tournament, and that each team plays each of the other teams once. If a tournament were to take place, it should be demonstrated (using an example) that every team would lose to at least one other team in the tournament.
Mastermind is a code-breaking game for two players. In the original real-world game, one player A selects 4 pegs out of 6 colors and puts them in a certain fixed order; multiples of colors are possible (for example, red-green red-green). His opponent B does not know the colors or order but has to find out the secret code. To do so, B makes a series of guesses, each evaluated by the first player. A guess consists of an ordered set of colors which B believes is the code. The first player A evaluates the guess and feeds back to B how many positions and colors are correct. A position is correct ("black") if the guess and the secret code have the same color. Additional colors are correct ("white"), if they are in the guess and the code, but not at the same location. For example1 2 3 4secret: red-green red greenguess: red blue green purpleresults in one correct position ("black = 1") for the red peg at position one and one additional correct color ("white=1") for the green peg in the guess.…
Mastermind is a code-breaking game for two players. In the original real-world game, one player A selects 4 pegs out of 6 colors and puts them in a certain fixed order; multiples of colors are possible (for example, red-green red-green). His opponent B does not know the colors or order but has to find out the secret code. To do so, B makes a series of guesses, each evaluated by the first player. A guess consists of an ordered set of colors which B believes is the code. The first player A evaluates the guess and feeds back to B how many positions and colors are correct. A position is correct ("black") if the guess and the secret code have the same color. Additional colors are correct ("white"), if they are in the guess and the code, but not at the same location. For example1 2 3 4secret: red-green red greenguess: red blue green purpleresults in one correct position ("black = 1") for the red peg at position one and one additional correct color ("white=1") for the green peg in the guess.…
Knowledge Booster
Background pattern image
Similar questions
SEE MORE QUESTIONS
Recommended textbooks for you
Text book image
Database System Concepts
Computer Science
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:McGraw-Hill Education
Text book image
Starting Out with Python (4th Edition)
Computer Science
ISBN:9780134444321
Author:Tony Gaddis
Publisher:PEARSON
Text book image
Digital Fundamentals (11th Edition)
Computer Science
ISBN:9780132737968
Author:Thomas L. Floyd
Publisher:PEARSON
Text book image
C How to Program (8th Edition)
Computer Science
ISBN:9780133976892
Author:Paul J. Deitel, Harvey Deitel
Publisher:PEARSON
Text book image
Database Systems: Design, Implementation, & Manag...
Computer Science
ISBN:9781337627900
Author:Carlos Coronel, Steven Morris
Publisher:Cengage Learning
Text book image
Programmable Logic Controllers
Computer Science
ISBN:9780073373843
Author:Frank D. Petruzella
Publisher:McGraw-Hill Education