VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > 简明python教程 >
  • 预测球队比赛成绩

本文尝试采用自顶向下的设计方法进行体育竞技分析。自顶向下将一个复杂问题分解成几个问题,再细分成一个个具体的小问题,从而来解决复杂问题。

一、采用乒乓球比赛规则(学号尾号为3必做题)

比赛规则:(1)一局比赛:在一局比赛中,先得11分的一方为胜方:10平后,先多得2分的一方为胜方。

(2)一场比赛:单打的淘汰赛为七局四胜制,双打淘汰赛或团体赛为五局三胜制。

1、将体育竞技分析分解为以下几个小步骤

1.1打印程序的介绍性信息式

1.2获得程序运行参数:probA(A的能力值),probB(B的能力值),n(比赛场次)

1.3利用球员AB的能力值,模拟n场比赛

1.4输出球员AB获胜的场次及概率

1.5用pyinstaller打包可执行文件

 

2、将各个步骤定义成函数来实现

 

2.1 主体函数:

1
2
3
4
5
def main():
    printIntro()
    probA, probB, n = printInputs()
    winsA, winsB = simNGames(n, probA, probB)
    printSummary(winsA, winsB)

2.2 自定义函数:

  

2.3 合并

  

单人赛预测结果如下: 

 

 

 当该比赛是双人赛或者团体赛时,将 自定义函数simNGames(n,proA,proB)  稍作修改,改动如下:

1
2
3
4
5
6
7
8
9
10
11
# 进行N场比赛
def simNGames(n, probA, probB):
    winsA, winsB = 00
    for in range(n):
        for in range(5):           #进行5局3胜的比赛
            scoreA, scoreB = simOneGame(probA, probB)
            if scoreA > scoreB:
                winsA += 1
            else:
                winsB += 1
    return winsA,winsB

结果如下:

2.4 打包可执行文件

在控制台输入  Pyinstaller  -F  xxx(pyw文件路径,我的是 D://我爱学习/python3/作业/moni.py)

可在对应路径下找到exe文件:

 二、采用篮球比赛规则

比赛规则:

(1)篮球比赛由两个队参加,每队出场5名队员。每队目标是在对方球篮得分,并阻止对方队在本方球篮得分。

(2)篮球比赛由裁判员、记录台人员和技术代表(如到场)管理。

(3)被某队进攻的球篮是对方的球篮,由某队防守的球篮是本方的球篮。

(4)在比赛时间结束时得分较多的队,将是比赛的胜者。

 分析步骤基本同上,仅模拟比赛的自定义函数 simNGames(n,proA,proB) ,SimOneGame(proA,proB)和gameOver(a,b) 不同。 改动如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 进行N场比赛
def simNGames(n, probA, probB):
    winsA, winsB = 00
    for in range(n):
        scoreA, scoreB = simOneGame(probA, probB)
        if scoreA > scoreB:
            winsA += 1
        else:
            winsB += 1
    return winsA,winsB
 
 
 #进行一场比赛
def simOneGame(probA, probB):
    scoreA, scoreB = 00           #初始化AB的得分
    serving = "A"                
    while not gameOver(scoreA, scoreB):     #用while循环来执行比赛
        if serving == "A":
            if random() < probA:            ##用随机数生成胜负
                scoreA += 1
            else:
                serving="B"
        else:
            if random() < probB:
                scoreB += 1
            else:
                serving="A"
    return scoreA, scoreB
 
 
#比赛结束
def gameOver(a,b):
    return a>b or b>a

相关教程