wins (totalshutouts (winsplayer player it is easy to print out the headings for this tablebut the formatting of the lines takes little more care we want to get the columns lined up nicelyand we must avoid division by zero in calculating the shutout percentage for player who didn' get any wins let' write the basic methodbut procrastinate bit and push off the details of formatting the line into another methodprintline the printline method will need the player label ( or )number of wins and shutoutsand the total number of games (for calculation of percentagesdef printreport(self)print nicely formatted report self winsa self winsb print("summary of" "games:\ "print(wins (totalshutouts (wins"print(""self printline(" "self winsaself shutsanself printline(" "self winsbself shutsbnto finish out the classwe implement the printline method this method will make heavy use of string formatting good start is to define template for the information that will appear in each line def printline(selflabelwinsshutsn)template "player { }:{ : ({ : %}{ : ({ })if wins = avoid division by zeroshutstr "elseshutstr "{ : %}format(float(shuts)/winsprint(template format(labelwinsfloat(wins)/nshutsshutstr)notice how the shutout percentage is handled the main template includes it as fifth slotand the if statement takes care of formatting this piece to prevent division by zero implementing rballgame now that we have wrapped up the simstats classwe need to turn our attention to rballgame summarizing what we have decided so farthis class needs constructor that accepts two probabilities as parametersa play method that plays the gameand getscores method that reports the scores what will racquetball game need to knowto actually play the gamewe have to remember the probability for each playerthe score for each playerand which player is serving if you think