首页 > 其他 > 详细

预测羽毛球赛成绩学习笔记

时间:2020-05-20 23:32:25      阅读:80      评论:0      收藏:0      [点我收藏+]

任务要求:  

编写程序,模拟体育竞技分析

羽毛球比赛规则

>21分制,3局2胜为佳

>每球得分制

>每回合中,取胜的一方加1分

>当双方均为20分时,领先对方2分的一方赢得该局比赛

>当双方均为29分时,先取得30分的一方赢得该局比赛

>一局比赛的获胜方在下一局率先发球

详情参考http://www.vxixi.com/

技术分享图片
from random import random
def main():
    printIntro()#打印程序的介绍信息
    probA, probB, n = getInputs()#通过getInput输入a,b,n
    winsA, winsB = simNGames(n, probA, probB)#通过simNGames()求得2个球员在n次比赛中获胜的次数
    printSummary(winsA, winsB)#通过printSummary()来输出比赛的结果信息

#第二阶段

def printIntroduce():
    print(这个程序模拟两个选手A和B的羽毛球竞技比赛)
    print(程序运行需要A和B的能力值)

    

def getInputs():
    a=eval(input(请输入选手A的能力值(0~1):))
    b=eval(input(请输入选手B的能力值(0~1):))
    n=eval(input(比赛胜利达到多少局获胜:))
    return a,b,n

def simulateNGames(n,probabilityA,probabilityB):
    ‘‘‘定义球员A,B赢得比赛的次数,初始值为0,
        通过for循环来模拟n次比赛
        用simulateOneGame()来模拟一场比赛‘‘‘

    winsA,winsB=0,0
    while not judge(n,winsA,winsB):

        ‘‘‘返回本场比赛2个球员的得分,根据得分来确定本场比赛的胜负‘‘‘

        scoreA,scoreB=simulateOneGame(probabilityA,probabilityB)
        if scoreA>scoreB:
            winsA+=1
        else:
            winsB+=1
    return winsA,winsB

def printSummary(winsA,winsB):

    n=winsA+winsB

    print(\n比赛开始,共模拟%d场比赛%n)

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

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

#第三阶段
def simulateOneGame(probabilityA,probabilityB):
    ‘‘‘每场比赛,2个球员的得分初始为0,设定每场比赛总是A先发球,
        用random函数生成一个随机小数,范围在【0,1)内‘‘‘

    scoreA,scoreB=0,0
    starting=A
    while not gameOver(scoreA,scoreB):
        if starting==A:
            if random()<probabilityA:
                scoreA+=1
            else:
                scoreB+=1
                starting=B
        else:
            if random()<probabilityB:                
                scoreB+=1
            else:
                scoreB+=1
                starting=A
    return scoreA,scoreB
 
def gameOver(a,b):
    ‘‘‘任意一方达到20分就结束比赛‘‘‘
    if a>29 or b>29:
        return True
    elif a>20 or b>20:
        if abs(a-b)>1:
            return True
        else:
            return False

def judge(n,winsA,winsB):
    if winsA==n or winsB==n:
        return True
    else:
        return False

main()
进行代码

 

预测羽毛球赛成绩学习笔记

原文:https://www.cnblogs.com/yeluozhiqiumax/p/12927090.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!