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, 3rd Ed.
- Discuss with appropriate examples the types of relationships in a database. Give one reference with your answer.arrow_forwardDetermine the velocity error constant (k,) for the system shown. + R(s)- K G(s) where: K=1.6 A(s+B) G(s) = as²+bs C(s) where: A 14, B =3, a =6. and b =10arrow_forward• Solve the problem (pls refer to the inserted image)arrow_forward
- Write .php file that saves car booking and displays feedback. There are 2 buttons, which are <Book it> <Select a date>. <Select a date> button gets an input from the user, start date and an end date. Book it button can be pressed only if the start date and ending date are chosen by the user. If successful, it books cars for specific dates, with bookings saved. Booking should be in the .json file which contains all the bookings, and have the following information: Start Date. End Date. User Email. Car ID. If the car is already booked for the selected period, a failure message should be displayed, along with a button to return to the homepage. In the booking.json file, if the Car ID and start date and end date matches, it fails Use AJAX: Save bookings and display feedback without page refresh, using a custom modal (not alert).arrow_forwardWrite .php file with the html that saves car booking and displays feedback. Booking should be in the .json file which contains all the bookings, and have the following information: Start Date. End Date. User Email. Car ID. There are 2 buttons, which are <Book it> <Select a date> Book it button can be pressed only if the start date and ending date are chosen by the user. If successful, book cars for specific dates, with bookings saved. If the car is already booked for the selected period, a failure message should be displayed, along with a button to return to the homepage. Use AJAX: Save bookings and display feedback without page refresh, using a custom modal (not alert). And then add an additional feature that only free dates are selectable (e.g., calendar view).arrow_forward• Solve the problem (pls refer to the inserted image) and create line graph.arrow_forward
- who started the world wide webarrow_forwardQuestion No 1: (Topic: Systems for collaboration and social business The information systems function in business) How does Porter's competitive forces model help companies develop competitive strategies using information systems? • List and describe four competitive strategies enabled by information systems that firms can pursue. • Describe how information systems can support each of these competitive strategies and give examples.arrow_forwardData communıcatıon digital data is transmitted via analog ASK and PSK are used together to increase the number of bits transmitted a)For m=8,suggest a solution and define signal elements , and then draw signals for the following sent data data = 0 1 0 1 1 0 0 0 1 0 1 1arrow_forward
- DatacommunicationData = 1 1 0 0 1 0 0 1 0 1 1 1 1 0 0a) how many bıts can be detected and corrected by this coding why prove?b)what wıll be the decision of the reciever if it recieve the following codewords why?arrow_forwardpattern recognitionPCA algor'thmarrow_forwardConsider the following program: LOAD AC, IMMEDIATE(30) ADD AC, REGISTER(R1) STORE AC, MEMORY(20) Given that the value of R1 is 50, determine the value stored at memory address 20 after the program is executed. Provide an explanation to support your answer.arrow_forward
- Principles of Information Systems (MindTap Course...Computer ScienceISBN:9781285867168Author:Ralph Stair, George ReynoldsPublisher:Cengage Learning