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()    

 

posted @ 2018-07-16 22:39  Justice-V  阅读(272)  评论(0)    收藏  举报