python 【体育竞技游戏】


1 #体育竞技 2 from random import random 3 4 def printInfo(): 5 print("这个程序模拟两个选手A和B的某种竞技比赛") 6 print("程序需要两个选手的能力值0-1") 7 8 9 def getInput(): 10 a = eval(input("请输入选手A的能力值(0-1):")) 11 12 b = eval(input("请输入选手B的能力值(0-1):")) 13 14 n = eval(input("模拟比赛的场次:")) 15 16 return a,b,n 17 18 19 def printSummary(winsA,winsB): 20 21 n = winsA + winsB 22 23 print("竞技分析开始,共模拟{}场比赛".format(n)) 24 25 print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA,winsA/n)) 26 27 print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB,winsB/n)) 28 29 30 def simNGames(n,probA,probB): 31 32 winsA,winsB = 0,0 33 34 for i in range(n): 35 36 scoreA,scoreB = simOneGame(probA,probB) 37 38 if scoreA > scoreB: 39 40 winsA += 1 41 42 else: 43 winsB += 1 44 45 return winsA,winsB 46 47 48 def simOneGame(probA,probB): 49 50 scoreA,scoreB = 0,0 51 52 serving = "A" 53 54 while not gameOver(scoreA,scoreB): 55 56 if serving == "A": 57 58 if random() < probA: 59 60 scoreA += 1 61 else: 62 serving = "B" 63 else: 64 if random() < probB: 65 scoreB += 1 66 else: 67 serving = "A" 68 return scoreA,scoreB 69 70 def gameOver(a,b): 71 return a ==15 or b ==15 72 73 74 def main(): 75 printInfo() 76 probA,probB,n = getInput() 77 winsA,winsB = simNGames(n,probA,probB) 78 printSummary(winsA,winsB) 79 80 81 main()
一个二次元的生物

浙公网安备 33010602011771号