比赛规则:

1.在一局比赛中,先得11分的一方为胜方;10平后,先多得2分的一方为胜方

2.在一场比赛中,单打的淘汰赛采用七局四胜制,双打淘汰赛和团体赛采用五局三胜制

3.注意:团体赛由四局单打,一局双打组成,顺序:一,二,四,五为单打,第三局为双打

代码实现如下:

from random import random
def bsxx():
    string1="模拟体育竞技分析 模拟人:huangcanhua"
    string2="模拟乒乓球竞技分析"
    string3="乒乓球比赛规则如下:"
    string4="一局比赛:"
    string5="先得11分的一方为胜方;10平后,先多得2分的一方为胜方。"
    string6="一场比赛:"
    string7="单打的淘汰赛采用七局四胜制,双打淘汰赛和团体赛采用五局三胜制。"
    string8="注意:团体赛由四局单打,一局双打组成"
    string9="顺序:一,二,四,五为单打,第三局为双打"
    print(string1)
    print()     
    print(string2)  
    print(string3)
    print(string4) 
    print(string5)
    print(string6)
    print(string7)
    print(string8)
    print(string9) 
    print() 
def getinputs1(): 
    print()
    print("您选择的比赛类型是:单打淘汰赛")
    print("为了更好的模拟比赛数据,请输入两位运动员的能力值(0-1之间)")
    athlete1=eval(input("请输入第一位运动员能力值:"))
    athlete2=eval(input("请输入第二位运动员能力值:"))
    n=eval(input("请输入模拟的场次:"))
    return athlete1,athlete2,n
 
def getinputs2():
    print()
    print("您选择的比赛类型是:双打淘汰赛")
    print("为了更好的模拟比赛数据,请输入四位运动员的能力值(0-1之间)")
    print("请输入团队A的运动员能力值")
    athlete1=eval(input("请输入第一位运动员能力值:"))
    athlete2=eval(input("请输入第二位运动员能力值:"))
    print("请输入团队B的运动员能力值")
    athlete3=eval(input("请输入第三位运动员能力值:"))
    athlete4=eval(input("请输入第四位运动员能力值:"))
    n=eval(input("请输入模拟的场次:"))
    aver1=(athlete1+athlete2)/2
    aver2=(athlete3+athlete4)/2
    return aver1,aver2,n
 
def getinputs3():
    print()
    print("您选择的比赛类型是:团体赛")
    print("为了更好的模拟比赛数据,请输入五局运动员的能力值(0-1之间)")
    print("请按照出场顺序,分别输出运动员的能力值") 
    print("请输入团队A的运动员能力值") 
    athlete1=eval(input("请输入第一局运动员能力值:")) 
    athlete2=eval(input("请输入第二局运动员能力值:")) 
    athlete3=eval(input("请输入第三局运动员能力值:")) 
    athlete4=eval(input("请输入第四局运动员能力值:")) 
    athlete5=eval(input("请输入第五局运动员能力值:")) 
    print("请输入团队B的运动员能力值") 
    athlete6=eval(input("请输入第一局运动员能力值:")) 
    athlete7=eval(input("请输入第二局运动员能力值:")) 
    athlete8=eval(input("请输入第三局运动员能力值:")) 
    athlete9=eval(input("请输入第四局运动员能力值:")) 
    athlete10=eval(input("请输入第五局运动员能力值:")) 
    n=eval(input("请输入模拟的场次:")) 
    return athlete1,athlete2,athlete3,athlete4,athlete5,athlete6,athlete7,athlete8,athlete9,athlete10,n


 

def oneGame(N,ablity1,ablity2): 
    score1,score2=0,0 
    i=0 
    while not gameover(score1,score2): 
        if i==0: 
            for k in range(2): 
                if random()>ablity1: 
                    score2+=1 
                else: 
                    score1+=1 
            i+=1 
        if i==1: 
            for k in range(2): 
                if random()>ablity2: 
                    score1+=1 
                else: 
                    score2+=1 
            i-=1 
    return score1,score2  
def allGame(ablity1,ablity2): 
    N=1 
    win1,win2=0,0 
    for i in range(7): 
        score1,score2=oneGame(N,ablity1,ablity2) 
        if score1>score2: 
            win1+=1 
        else: 
            win2+=1 
        N+=1 
        if win1==4 or win2==4: 
            break 
    return win1,win2 def Allgame(n,ablity1,ablity2): 
    wins1,wins2=0,0
    for i in range(n):
        score1,score2=allGame(ablity1,ablity2) 
        if score1>score2: 
            wins1+=1 
        else: 
            wins2+=1 
    return wins1,wins2 
def TTgame(n,A1,A2,A3,A4,A5,B1,B2,B3,B4,B5): 
    teamA,teamB=0,0 
    A,B=0,0 
    for i in range(n): 
        a1,b1=Allgame(1000,A1,B1) 
        if a1>b1: 
            A+=1 
        else: 
            B+=1 
        a2,b2=Allgame(1000,A2,B2) 
        if a2>b2: 
            A+=1 
        else: 
            B+=1 
        a3,b3=Allgame(1000,A3,B3) 
        if a3>b3: 
            A+=1 
        else: 
            B+=1 
        if A>=3: 
            teamA+=1 
            A,B=0,0 
        elif B>=3: 
            teamB+=1 
            A,B=0,0 
        else: 
            a4,b4=Allgame(1000,A4,B4) 
            if a4>b4: 
                A+=1 
            else: 
                B+=1 
            if A>=3: 
                teamA+=1 
                A,B=0,0 
            elif B>=3: 
                teamB+=1 
                A,B=0,0 
            else: 
                a5,b5=Allgame(1000,A5,B5) 
                if a5>b5: 
                    A+=1 
                else: 
                    B+=1 
                if A>=3: 
                    teamA+=1 
                    A,B=0,0 
                elif B>=3: 
                    teamB+=1 
                    A,B=0,0 
    return teamA,teamB def gameover(a,b): 
    if a>=11 and (a-b)>=2: 
        return a 
    if b>=11 and (b-a)>=2: 
        return b def alysis(n,win1,win2): 
    print("模拟竞赛分析开始,共模拟{}场比赛".format(n)) 
    print("athlete1单打获得{}场胜利,共占比{:.2f}%".format(win1,win1/n*100)) 
    print("athlete2单打获得{}场胜利,共占比{:.2f}%".format(win2,win2/n*100)) 
    print("分析完毕") def alysis2(n,win1,win2): 
    print("模拟竞赛分析开始,共模拟{}场比赛".format(n)) 
    print("团队A双打获得{}场胜利,共占比{:.2f}%".format(win1,win1/n*100)) 
    print("团队B双打获得{}场胜利,共占比{:.2f}%".format(win2,win2/n*100)) 
    print("分析完毕") def alysis1(n,teamA,teamB): 
    print("模拟竞赛分析开始,共模拟{}场比赛".format(n)) 
    print("团队A获得{}场胜利,共占比{:.2f}%".format(teamA,teamA/n*100)) 
    print("团队B获得{}场胜利,共占比{:.2f}%".format(teamB,teamB/n*100)) 
    print("分析完毕") def danda(): 
    ablity1,ablity2,n=getinputs1() 
    win1,win2=Allgame(n,ablity1,ablity2) 
    print("模拟单打:") 
    alysis(n,win1,win2) def shuangda(): 
    averablity1,averablity2,n=getinputs2() 
    win1,win2=Allgame(n,averablity1,averablity2) 
    print("模拟双打:") 
    alysis2(n,win1,win2) def tuanti(): 
    A1,A2,A3,A4,A5,B1,B2,B3,B4,B5,n=getinputs3() 
    teamA,teamB=TTgame(n,A1,A2,A3,A4,A5,B1,B2,B3,B4,B5) 
    alysis1(n,teamA,teamB)def mian(): 
    bsxx() 
    x=1 
    while x==1: 
        print("请选择模拟比赛类型") 
        print("一、单打淘汰赛") 
        print("二、双打淘汰赛") 
        print("三、团体赛") 
        print("四,结束模拟分析") 
        choice1=eval(input("请输入对应比赛类型的阿拉伯数字编号:")) 
        if choice1==1: 
            danda() 
            print() 
        elif choice1==2: 
            shuangda() 
            print() 
        elif choice1==3: 
            tuanti() 
            print() 
        elif choice1==4:
            print("模拟程序结束") 
            break 
        else:
            print("输入错误,请重新输入") 
            print()
mian()

 

 界面如图所示:

乒乓球 unity 乒乓球比赛_乒乓球 unity

 

 

 进行输入后,结果如图所示:

乒乓球 unity 乒乓球比赛_乒乓球 unity_02