python 排球比赛模拟
2021-01-16 07:13
                         标签:com   sim   val   能力   else   alt   http   def   port    代码如下: from random import random def simNGames(n,probA,probB): def gameOver(c,d): def printSummary(n,winA,winB): 运行结果:   python 排球比赛模拟 标签:com   sim   val   能力   else   alt   http   def   port    原文地址:https://www.cnblogs.com/xieyuhua/p/12928176.html
def printIntro():    # 打印程序介绍信息
    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:
                scoreB += 1
                serving=‘B‘
            else:
                scoreA += 1
        else:
            if random()>probB:
                scoreA += 1
                serving = ‘A‘
            else:
                scoreB += 1
        return scoreA,scoreB
def simfirstgame(probA,probB):
    scoreA,scoreB=0,0
    for i in range(4):
        s1,s2=0,0
        while not gameover(s1,s2):
            if random()
            elif random()
        if s1>s2:
            scoreA += 1
        else:
            scoreB += 1
    return scoreA,scoreB
    winsA,winsB=0,0
    for i in range(n):
        k,l=simfirstgame(probA,probB)
        if k==1:
            winsB += 1
            continue
        elif k==3:
            winsA += 1
            continue
        scoreA,scoreB=simOneGame(probA,probB)
        if scoreA>scoreB:
            winsA += 1
        else:
            winsB += 1
    return winsA,winsB
    return(c>=15 and c-d>=2) or (d>=15 and d-c>=2)
def ameover(scoreA,scoreB):
    return (scoreA>=25 and scoreA-scoreB>=2) or (scoreB>=25 and scoreB-scoreA>=2)
    print(‘竞技分析开始,共模拟{}场比赛‘.format(n))
    print(‘队伍A获胜{}场比赛,占比{:.2f}%‘.format(winA, winA/n*100))
    print(‘队伍B获胜{}场比赛,占比{:.2f}%‘.format(winB, winB / n * 100))            
def main(): 
    printIntro()
    probA, probB, n =getInputs()
    winsA, winsB = simNGames(n, probA, probB)
    printSummary(n,winsA,winsB)
main()