模拟体育竞赛分析
1)乒乓球
1 from random import random 2 def printIntro(): 3 print("学号02 \n这个程序是模拟两个选手A和B的某种竞技比赛") 4 print("程序运行需要A和B的能力值(0-1)") 5 def getTnputs(): 6 a=eval(input("请输入选手A的能力值(0-1):")) 7 b=eval(input("请输入选手B的能力值(0-1):")) 8 n=eval(input("模拟比赛的场次:")) 9 return a,b,n 10 def simNGames(n, probA, probB): 11 winsA, winsB = 0,0 12 for i in range(n): 13 scoreA, scoreB=simOneGame(probA, probB) 14 if scoreA>scoreB: 15 winsA += 1 16 else: 17 winsB += 1 18 return winsA,winsB 19 def gameOver(a, b): 20 return a==15 or b==15 21 def simOneGame(probA, probB): 22 scoreA, scoreB = 0,0 23 serving = "A" 24 while not gameOver(scoreA, scoreB): 25 if serving == "A": 26 if random() < probA: 27 scoreA += 1 28 else: 29 serving="B" 30 else: 31 if random() < probB: 32 scoreB += 1 33 else: 34 serving="A" 35 return scoreA, scoreB 36 def printSummary(winsA, winsB): 37 n=winsA+winsB 38 print("竞技分析开始,共模拟{}场比赛".format(n)) 39 print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA,winsA/n)) 40 print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB,winsB/n)) 41 def main(): 42 printIntro() 43 probA, probB, n = getTnputs() 44 winsA, winsB = simNGames(n, probA, probB) 45 printSummary(winsA, winsB) 46 main()
结果:
运用pyinstaller打包可以执行的文件:
2)采用篮球或者足球规则模拟比赛,分析体育竞技规则,模拟比赛。