
Simulates the tennis game
Program Plan:
- Import the header file.
- Define the “main” method.
- Call the “printIntro ()” method
- Call the “getInputs ()” method.
- Call the “simNMatches ()” method.
- Call the “printSummary ()” method.
- Define the “printIntro()” method.
- Print the intro statements.
- Define the “getInputs()” method.
- Get the player A possible for win from the user.
- Calculate the “probA” and “probB” values.
- Get how many games to simulate from the user.
- Define the “simNMatches()” method.
- Set the values
- Iterate “i” until it reaches “n” value
- Call the methods
- Check “matchA” is greater than “matchB”
- Increment the “winsA” value
- Otherwise, increment the “winsB” value.
- Return the values.
- Define the “simOneMatch ()” method
- Set the values
- Check the condition.
- Call the “simOneGame ()” method.
- Check “setA” is greater than “setB”
- Increment the “matchA” value
- Otherwise, increment the “matchB” value
- Return the results
- Define the “matchOver ()” method
- Check “a” or “b” is greater than 3
- Return true
-
- Otherwise, return false.
-
- Return true
- Check “a” or “b” is greater than 3
- Define the “simOneSet ()” method
- Call the method
- Set the values
- Check the condition.
- Check “scoreA” is greater than “scoreB”
- Increment the “setA” value
- Otherwise, increment the “setB” value
-
- Return the results
-
- Check “scoreA” is greater than “scoreB”
- Define the “setOver ()” method
- Check “a” or “b” is equal to 7
- Return true
-
- Check “a” or “b” is greater than or equal to 6
-
- Check “a-b” is greater than or equal to 2
- Return true
- Otherwise, return false
- Check “a-b” is greater than or equal to 2
- Otherwise, return false.
-
- Return true
- Check “a” or “b” is equal to 7
- Define the “simOneGame ()” method
- Set the values
- Check the condition
- Check “random ()” is less than “probA”
- Increment the “scoreA” value
-
- Otherwise, increment the “scoreB” value
- Return the results.
-
- Increment the “scoreA” value
- Check “random ()” is less than “probA”
- Define the “gameOver ()” method
- Check “a” or “b” is greater than or equal to 4
- Check “a-b” is greater than or equal to 2
- Return true
-
- Otherwise, return false
- Otherwise, return false.
-
- Return true
- Check “a-b” is greater than or equal to 2
- Check “a” or “b” is greater than or equal to 4
- Define the “printSummary ()” method
- Display the results.
- Call the main method.
The program is to simulate a game of tennis.
Explanation of Solution
Program:
#import the header file
from random import random
#definition of main method
def main():
#call the method
printIntro()
#call the method and store it in the variables
probA, probB, n = getInputs()
#call the method and store it in the variables
winsA, winsB = simNMatches(n, probA, probB)
#call the method
printSummary(winsA, winsB, n)
#definition of "printIntro" method
def printIntro():
#display the statements
print("This program simulates a series of tennis matches between player")
print('"A" and player "B". The abilities of each player are')
print("represented by percentage chance of winning a volley. The")
print("percentages add up to 100.")
print()
print("Game")
print("As in real tennis, each game is played through 4 points")
print("(Love, 15, 30, 40, game) where the player must win by two.")
print("Players can score on either serve.")
print()
print("Set")
print("A set is won when a player reaches 6 victorious games, and has a")
print("lead of two. If for example, sets reach 6-5, the players will play")
print("another round. If the score reaches 6-6, there will be a")
print("tiebreaking game.")
print()
print("Match")
print("A Match is won when a player reaches his/her 3rd victorious set.")
print("No winning by two, no tie-breaker, for the purposes of this simulation")
print()
#definition of "getInputs" method
def getInputs():
#get the player A wins a serve
probA = eval(input("What is the percent prob. player A wins a volley? "))
#calculate the values
probA = probA / 100
probB = 1 - probA
#get the input from the user
n = eval(input("How many games to simulate? "))
return probA, probB, n
#definition of "simNMatches" method
def simNMatches(n, probA, probB):
#set the values
winsA = winsB = 0
#iterate until "n" value
for i in range(n):
#call the method and store it in the variables
matchA, matchB = simOneMatch(probA, probB)
#check "matchA" is greater than "matchB"
if matchA > matchB:
#increment the value
winsA = winsA + 1
#otherwise
else:
#increment the value
winsB = winsB + 1
#return the results
return winsA, winsB
#definition of "simOneMatch" method
def simOneMatch(probA, probB):
#set the values
matchA = matchB = 0
#check the condition
while not matchOver(matchA, matchB):
#call the method and store it in the variables
setA, setB = simOneSet(probA, probB)
#check "setA" is greater than "setB"
if setA > setB:
#increment the value
matchA = matchA + 1
#otherwise
else:
#increment the value
matchB = matchB + 1
#return the results
return matchA, matchB
#definition of "matchOver" method
def matchOver(a, b):
#check "a" or "b" is greater than 3
if a > 3 or b > 3:
#return the result
return True
else:
#return the result
return False
#definition of "simOneSet" method
def simOneSet(probA, probB):
#call the method and store it in the variables
scoreA, scoreB = simOneGame(probA, probB)
#set the values
setA = setB = 0
#check the condition
while not setOver(setA, setB):
#check "scoreA" is greater than "scoreB"
if scoreA > scoreB:
#increment the value
setA = setA + 1
else:
#increment the value
setB = setB + 1
#return the results
return setA, setB
#definition of "setOver" method
def setOver(a, b):
#check "a" and "b" is equal to 7
if a == 7 or b == 7:
#return the result
return True
#check "a" or "b" is greater than or equal to 6
elif a >= 6 or b >= 6:
#check "a - b" is greater than or equal to 2
if abs(a-b) >=2:
#return the result
return True
else:
#return the result
return False
else:
#return the result
return False
#definition of "simOneGame" method
def simOneGame(probA, probB):
#set the values
scoreA = scoreB = 0
#check the condition
while not gameOver(scoreA, scoreB):
#check "random()" is less than "probA"
if random() < probA:
#increment the value
scoreA = scoreA + 1
else:
#increment the value
scoreB = scoreB + 1
#return the result
return scoreA, scoreB
#definition of "gameOver" method
def gameOver(a, b):
#check "a" or "b" is greater than or equal to 4
if a >= 4 or b >= 4:
#check "a - b" is greater than or equal to 2
if abs(a-b) >=2:
#return the result
return True
else:
#return the result
return False
else:
#return the result
return False
#definition of "printSummary" method
def printSummary(winsA, winsB, n):
#display the results
print("\nGames simulated: ", n)
print("Wins for A: {0} ({1:0.1%})".format(winsA, winsA/n))
print("Wins for B: {0} ({1:0.1%})".format(winsB, winsB/n))
#call the main method
if __name__ == '__main__': main()
Output:
This program simulates a series of tennis matches between player
"A" and player "B". The abilities of each player are
represented by percentage chance of winning a volley. The
percentages add up to 100.
Game
As in real tennis, each game is played through 4 points
(Love, 15, 30, 40, game) where the player must win by two.
Players can score on either serve.
Set
A set is won when a player reaches 6 victorious games, and has a
lead of two. If for example, sets reach 6-5, the players will play
another round. If the score reaches 6-6, there will be a
tiebreaking game.
Match
A Match is won when a player reaches his/her 3rd victorious set.
No winning by two, no tie-breaker, for the purposes of this simulation
What is the percent prob. player A wins a volley? 50
How many games to simulate? 10
Games simulated: 10
Wins for A: 7 (70.0%)
Wins for B: 3 (30.0%)
Want to see more full solutions like this?
Chapter 9 Solutions
Python Programming: An Introduction to Computer Science
- Don't use chatgpt or any other AIarrow_forwardGiven a relation schema R = (A, B, C, D, E,G) with a set of functional dependencies F {ABCD BC → DE B→ D D→ A}. (a) Show that R is not in BCNF using the functional dependency A → BCD. (b) Show that AG is a superkey for R (c) Compute a canonical cover Fc for the set of functional dependencies F. Show your work. (d) Give a 3NF decomposition of R based on the canonical cover found in (c). Show your work. (e) Give a BCNF decomposition of R using F. Show your work.arrow_forwardThe following entity-relationship (ER) diagram models a database that helps car deal- ers maintain records of customers and cars in their inventory. Construct a relational database schema from the ER diagram. Your set of schemas should include primary-key and foreign-key constraints and you should ensure there are no redundant schemas. has_model model modelID name vehicle has_vehicle VIN dealer_ID brand name has_available_option has_option has_dealer options options_ID specification dealer dealer ID name customer_ID owned_by customer customer ID namearrow_forward
- A relation schema R = (A, B, C, D, E) with a set of functional dependencies F= {D A CAB} is decomposed into R₁ = (A, B, C) and R2 = (C, D, E). (a) Is this a lossless-join decomposition? Why or why not? (b) Is the decomposition dependency preserving? Why or why not?arrow_forwardNo chatgpt pleasearrow_forwardPlease help draw alu diagraarrow_forward
- 1. Level the resources (R) for the following network. Show exactly which activity is being moved at each cycle and how many days it is being moved. Show all cycles required to utilize the free float and the back float. B H 3 3 L 2 0-0-0 A C F G K N P Q T 0 3 2 2 1 2-2-2 7R 8R 4R 6R 4R 2R 5R 4R D 1 2R 2 M 000 4R 2 4R 1 2 3 4 B5 B BE B 5 5 7 D 2003 C NO C MBSCM В H 5 2 F 7 7 8 SH2F80 5 Н Н 6 7 7L3G4+ 6H2G4 J 4 4 14 8 L K 00 36 9 10 11 12 13 14 15 P 2 Z+ N N 4 4 Z t 2334 4 Σ + M M 4 +arrow_forward2. Perform resource allocation for the following project. Resource limits are 6 labors and 2 helpers. Legend: Activity Dur Resources G H 2 3 2L 1H 2L OH A 1 3L 1H + B D F J K 3 4 6 2 4 4L 2H 3L OH 4L 1H 2L 2H 4L 2H C E 2 2 I 1 2L 1H 3L 1H 5L 1Harrow_forwardNeed Java method please. Thank you.arrow_forward
- Need Java method please. Thank you.arrow_forward3. Write two nested loops to generate the following output. (Note: There is one space between each number, and any extra line shown is intentional.) 12 10 8 6 18 15 12 24 20 30 2 3 3 6 48 12 5 10 15 20 6 12 18 24 30arrow_forwardWrite in verilog coding languagearrow_forward
Principles of Information Systems (MindTap Course...Computer ScienceISBN:9781285867168Author:Ralph Stair, George ReynoldsPublisher:Cengage Learning
C++ for Engineers and ScientistsComputer ScienceISBN:9781133187844Author:Bronson, Gary J.Publisher:Course Technology PtrProgramming Logic & Design ComprehensiveComputer ScienceISBN:9781337669405Author:FARRELLPublisher:Cengage
EBK JAVA PROGRAMMINGComputer ScienceISBN:9781337671385Author:FARRELLPublisher:CENGAGE LEARNING - CONSIGNMENT
EBK JAVA PROGRAMMINGComputer ScienceISBN:9781305480537Author:FARRELLPublisher:CENGAGE LEARNING - CONSIGNMENT
Systems ArchitectureComputer ScienceISBN:9781305080195Author:Stephen D. BurdPublisher:Cengage Learning




