今天我们用python进行体育竞技分析,预测球队成绩

一. 体育竞技分析的IPO模式 :

输入I(input):两个球员的能力值,模拟比赛的次数(其中,运动员的能力值,可以通过发球方赢得本回合的概率来表示,

一个能力值为0.8的球员,在他发球时,有80%的可能性赢得1分)

处理P(process):模拟比赛过程

输出O(output):两个球员获胜的概率

该体育竞技程序,我们采用自顶向下的设计方法。

自顶向下的设计是一种解决复杂问题的行之有效的方法。其步骤如下

自顶向下设计的基本思想,如下图:

二.我们首先采用兵乓球的比赛规则

一局比赛中,先得11分的一方为胜方,如果10平后,则比对方多得两分为胜方

一场比赛中,采用7局四胜的方式

代码如下:

# -*- coding: utf-8 -*-

"""

Created on Wed May 15 12:49:17 2019

@author: moyulin

"""

from random import random

def printIntro():

print("BY 2018310143103")

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

winsA, winsB = 0, 0

for i in range(1,n+1):

scoreA, scoreB = simOneGame(probA, probB)

if scoreA > scoreB:

winsA += 1

else:

winsB += 1

if i%7==0:

if winsA>winsB:

WinsA+=1

print("单打第{}场胜利的为A".format(int(i/7)))

else:

WinsB+=1

print("单打第{}场胜利的为B".format(int(i/7)))

winsA,winsB=0,0

return WinsA, WinsB

def gameOver(a,b):

if a>=10 and b>=10:

if abs(a-b)==2:

return True

if a<10 or b<10:

if a==11 or b==11:

return True

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:

scoreB +=1

serving="B"

else:

if random() < probB:

scoreB += 1

else:

scoreA += 1

serving="A"

return scoreA, scoreB

def printSummary(winsA, winsB):

n = winsA + winsB

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

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

printSummary(WinsA, WinsB)

main()

运行结果如下:

三.运用pyinstaller打包应用程序,使之可运行

win+cmd打开命令行

1.安装pyinstaller库

pip install pyinstaller

安装完成后就可以使用了,下面介绍pyinstaller的部分使用方法

-F, –onefile 打包一个单个文件,如果你的代码都写在一个.py文件的话,可以用这个,如果是多个.py文件就别用

-D, –onedir 打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,我个人比较推荐这样,代码易于维护

-K, –tk 在部署时包含 TCL/TK

-a, –ascii 不包含编码.在支持Unicode的python版本上默认包含所有的编码.

-d, –debug 产生debug版本的可执行文件

-w,–windowed,–noconsole 使用Windows子系统执行.当程序启动的时候不会打开命令行(只对Windows有效)

-c,–nowindowed,–console

2.打开命令行使用

输入

pyinstaller -F C:\#py文件地址

图例

最后回到根目录上会看到dist文件夹,里面有个exe文件,直接运行即可,如图

四.模拟体育竞技分析之篮球

假设谁先获得100分谁胜利

代码如下

from random import random

def printIntro():

print("by 2018310143103")

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

for i in range(n):

scoreA, scoreB = simOneGame(probA, probB)

if scoreA > scoreB:

winsA += 1

else:

winsB += 1

return winsA, winsB

def gameOver(a,b):

return a==100 or b==100

def simOneGame(probA, probB):

scoreA, scoreB = 0, 0

serving = "A"

while not gameOver(scoreA, scoreB):

if serving == "A":

if random() < probA:

scoreA += 1

else:

scoreB += 1

else:

if random() < probB:

scoreB += 1

else:

scoreA += 1

return scoreA, scoreB

def printSummary(winsA, winsB):

n = winsA + winsB

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

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

printSummary(winsA, winsB)

main()

运行结果如下

总结

以上所述是小编给大家介绍的使用Python进行体育竞技分析(预测球队成绩),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对找一找教程网网站的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

python 比赛成绩预测_使用Python进行体育竞技分析(预测球队成绩)相关推荐

  1. python体育竞技分析代码200行_使用Python进行体育竞技分析(预测球队成绩)

    使用Python进行体育竞技分析(预测球队成绩) 发布时间:2020-09-18 06:38:27 来源:脚本之家 阅读:69 今天我们用python进行体育竞技分析,预测球队成绩 一. 体育竞技分析 ...

  2. python选手的最后得分_用Python进行体育竞技分析(预测球队成绩)!身家都下注了!...

    今天我们用python进行体育竞技分析,预测球队成绩 一. 体育竞技分析的IPO模式 : 输入I(input):两个球员的能力值,模拟比赛的次数(其中,运动员的能力值,可以通过发球方赢得本回合的概率来 ...

  3. python乒乓球比赛甲乙_用python进行对乒乓球的比赛分析,并且将该程序进行封装...

    2.单打的淘汰赛采用七局四胜制,双打淘汰赛和团体赛采用五局三胜制. 重点: 思维方式:自顶向下即将一个复杂问题分解成几个问题,再细分成一个个具体的小问题,从而来解决复杂问题.自底向上为自顶向下的逆过程 ...

  4. 关于体育的python毕业设计_Python实例13:体育竞技分析

    Python实例13:体育竞技分析 8.1.1 问题分析 需求:毫厘是多少?如何科学分析体育竞技比赛? 输入:球员的水平: 输出:可预测的比赛成绩: 8.1.2 自顶向下,自底向上 将大问题分为几个小 ...

  5. python实例练习(5)体育竞技分析

    文章目录 简介 问题描述 代码设计 简介 模拟使用来解决现实世界棘手问题的重要技术与手段.计算机可以通过模拟现实世界的运行提供在通常情况下无法获取的信息.通过模拟解决问题的实际情况包括但不限于以下几种 ...

  6. python简单体育竞技模拟_Python程序设计思维练习---体育竞技分析-阿里云开发者社区...

    体育竞技分析:模拟N场比赛 计算思维:抽象 + 自动化 模拟:抽象比赛过程,自动模拟N场比赛,当N越大时,比赛结果分析越科学. 本次比赛规则:回合制,15分一局,先由一方发球,如胜利,则得1分并继续发 ...

  7. python乒乓球比赛规则_python模拟体育竞技分析--采用乒乓球规则

    采用乒乓球比赛规则 ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬ ...

  8. python 比赛成绩预测_利用 Python 预测英雄联盟胜负,分析了 5 万多场比赛才得出的数据!值得,涨知识了!...

    Mika 来源 | 头图 |CSDN自东方IC今天教大家用Python预测英雄联盟比赛胜负. Show me data,用数据说话 今天我们聊一聊 Python预测LOL胜负 目前,英雄联盟S10全球 ...

  9. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

最新文章

  1. java redis管理_优雅时间管理Java轻松做到,想学么?
  2. Spring Boot2.x-10 基于Spring Boot 2.1.2 + Mybatis 2.0.0实现多数据源,支持事务
  3. 信息源按加工深度划分_铝合金插铣加工切削力分析及成屑弧区划分
  4. matlab绘制蜂窝,PPT技巧:如何快速设计蜂窝表达的图形设计?
  5. 打不死的redis集群
  6. 【MySQL】存储过程中,怎么把多个select结果,合并成一个结果集返回?
  7. linux用户和组、权限常用命令
  8. bocketmq 多个消费者同时_菜鸟开建“海南跨境物流枢纽”让自贸港消费者海购最快当日达...
  9. 主板的北桥芯片与南桥芯片
  10. 【剑指offer】面试题03:数组中重复的数字(java)
  11. 图像分割——迭代式阈值分割
  12. jQuery操作CSS常见问题
  13. 真正支配整个世界的十种算法
  14. 在mysql上发布jbpm4.3
  15. PR常用的效果和转场,视频防抖、宽银幕效果、设置默认效果
  16. 电商产品之订单拆分规则与流程
  17. python:相对路径的参照物会发生变化
  18. HZOI20190819模拟26题解
  19. 2143.replace.favo.xrcch.com Dns劫持解决方案
  20. git 回滚、取消commit、取消merge等回退操作

热门文章

  1. mfc CDHtmlDialog htm5 写的tribon套料软件显示不正常
  2. kazoo扫盲指南,简述ZK ACL权限控制及使用方式
  3. mac 启动 进度条卡在一半处
  4. 万字长文深度解读5G射频,国产机会在哪里?
  5. 一个新用户如何玩转金蝶云之家
  6. 如何免费下载音频素材
  7. 网易云课堂前端微专业各部分作业解答
  8. 一个星期快速自学java编程高级语言干货笔记 -网络编程
  9. 缓存行 及 内存补齐 padding
  10. 【蓝桥杯】第10届Scratch国赛第6题程序1 -- 捉迷藏