python:學習自頂向下程序設計:競技體育模擬
阿新 • • 發佈:2019-03-02
運行 學習過程 函數的調用 過程 學習 import mon inpu mat
學習過程記錄:
一,需求及框架:
二:程序代碼:
1 #sports.py 2 from random import random 3 4 def main(): #熟悉函數的調用 5 printInfo() 6 probA,probB,n = getInputs() 7 winsA,winsB = simNGames(n,probA,probB) 8 printSummary(winsA,winsB) 9 10 def printInfo(): 11 print("本程序是競技體育模擬分析系統") 12 print("需要輸入選手雙方的能力值(0到1之間的小數)") 13 14 def getInputs(): 15 a = eval(input("輸入選手A的能力值(0到1的小數):")) 16 b = eval(input("輸入選手B的能力值(0到1的小數):")) 17 n = eval(input("輸入比賽場次:")) 18 return a,b,n 19 20 def gameover(scoreA,scoreB): #任意一方比分達到15球,結束本局比賽 21 returnscoreA == 15 or scoreB == 15 22 23 def simOneGame(probA,probB): #模擬單局比賽,15球一局,輸球則換發 24 scoreA,scoreB = 0,0 25 serving = "A" #這裏是賦值,不是等於(提醒自己) 26 while not gameover(scoreA,scoreB): 27 if serving == "A": 28 if random() < probA: 29 scoreA += 1 30else: 31 serving = "B" 32 else: 33 if random() < probB: 34 scoreB += 1 35 else: 36 serving = "A" 37 return scoreA,scoreB 38 39 def simNGames(n,probA,probB): #模擬n場比賽,返回選手雙方輸贏場次 40 winsA,winsB = 0,0 41 for i in range(n): 42 a,b = simOneGame(probA,probB)#模擬每一場比賽,都要調用這個單場的 43 if a > b: #函數計算隨機結果 44 winsA += 1 45 else: 46 winsB += 1 47 return winsA,winsB 48 def printSummary(winsA,winsB): 49 summ = winsA + winsB 50 print("模擬{}場比賽".format(summ)) 51 print("選手A勝{}場,勝率為{:0.1%}".format(winsA,winsA/summ)) 52 print("選手B勝{}場,勝率為{:0.1%}".format(winsB,winsB/summ)) 53 main()
程序運行結果如下:
python:學習自頂向下程序設計:競技體育模擬