from random import random
def printIntro():
print('模拟两个选手体育比赛')
print('需要输入A和B的能力值(介于0-1)')
def getInputs():
a = eval(input('输入A选手能力:'))
b = eval(input('输入B选手能力:'))
n = eval(input('输入比赛场数:'))
return a,b,n
def gameOver(a,b):
return a == 15 or b ==15
def OneGame(proA,proB):
scoreA,scoreB = 0,0
serving = 'A'
while not gameOver(scoreA,scoreB):
if serving == 'A':
if random()<proA:
scoreA += 1
else:
serving = 'B'
else:
if random()<proB:
scoreB += 1
else:
serving = 'A'
return scoreA,scoreB
def simNGames(n,proA,proB):
winsA,winsB = 0,0
for i in range(n):
scoreA,scoreB = OneGame(proA,proB)
if scoreA>scoreB:
winsA += 1
else:
winsB += 1
return winsA,winsB
def printSummary(winsA,winsB):
n = winsA+winsB
print('一共模拟{}场次比赛'.format(n))
print('选手A获胜{}场比赛,占比{:0.3%}'.format(winsA,winsA/n))
print('选手B获胜{}场比赛,占比{:0.3%}'.format(winsB,winsB/n))
def main():
printIntro();
proA,proB,n = getInputs();
winsA,winsB = simNGames(n,proA,proB)
printSummary(winsA,winsB)
main()
模拟两个选手体育竞技输赢情况
最新推荐文章于 2024-07-20 17:12:48 发布