羽毛球比赛预测

  • Post author:
  • Post category:其他


from random import random

def printIntro():

print(”   20信计1班777″)

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 simNGames(n, probA, probB):

winsA, winsB = 0, 0

scoreA_ls=[]

scoreB_ls=[]

for i in range(n):

scoreA, scoreB = simOneGame(probA, probB)

scoreA_ls.append(scoreA)

scoreB_ls.append(scoreB)

if scoreA > scoreB:

winsA += 1

else:

winsB += 1

return winsA, winsB,scoreA_ls,scoreB_ls

def gameOver(a,b):

if(a>=20 or b>=20):

if(abs(a-b)==2 and a<=29 and b<=29):

return True

else:

return a==30 or b==30

else:

return False

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 printSummary(winsA, winsB,scoreA_ls,scoreB_ls):

n = winsA + winsB

print(“竞技分析开始,共模拟{}场比赛”.format(n))

print(“A选手各场次得分比分:”)

print(scoreA_ls)

print(“B选手各场次得分比分:”)

print(scoreB_ls)

print(“选手A获胜{}场比赛,占比{:0.1%}”.format(winsA, winsA/n))

print(“选手B获胜{}场比赛,占比{:0.1%}”.format(winsB, winsB/n))

def main():

printIntro()

probA, probB, n= getInputs()

winsA, winsB,scoreA_ls,scoreB_ls = simNGames(n, probA, probB)

printSummary(winsA, winsB,scoreA_ls,scoreB_ls)

main()



版权声明:本文为YHaoGD原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。