模拟体育竞技分析—乒乓球比赛

代码如下:

print("乒乓球比赛,学号2020310143041")
from random import random

def printInfo():
print('这个程序模拟两个选手A和B的某种竞技比赛')
print('程序运行需要A和B的能力值(以0到1之间的小数表示)')

def getInputs():
a = eval(input('请输入选手A的能力值(0-1):'))
b = eval(input('请输入选手B的能力值(0-1):'))
n = eval(input('模拟比赛场次:'))
return a, b, n

def simOneGame(probA, probB):
scoreA, scoreB = 0, 0
serving = 'A'
while not gameOver(scoreA, scoreB):
if serving == 'A':
if random() < probA:
scoreA += 1
else:
serving = 'B'
else:
if random() < probB:
scoreB += 1
else:
serving = 'A'
return scoreA, scoreB

def simNGames(n, probA, probB):
winsA, winsB = 0, 0
for i in range(n):
scoreA, scoreB = simOneGame(probA, probB)
if scoreA > scoreB:
winsA += 1
else:
winsB += 1
return winsA, winsB

def gameOver(c, d):
return c==15 or d==15

def printSummary(n ,winA, winB):
print('竞技分析开始,共模拟{}场比赛'.format(n))
print('选手A获胜{}场比赛,占比{:.2f}%'.format(winA, winA/n*100))
print('选手B获胜{}场比赛,占比{:.2f}%'.format(winB, winB / n * 100))
def main():
printInfo()
probA, probB, n =getInputs()
winsA, winsB = simNGames(n, probA, probB)
printSummary(n, winsA, winsB)

main()

运行结果如下:

 

 昵称:Binnie

学号:2020310143041

posted @ 2021-11-13 20:57  Binnie  阅读(95)  评论(0)    收藏  举报