今天我们用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进行体育竞技分析(预测球队成绩)!身家都下注了!...相关推荐

  1. python情感词典计算得分_用python进行金融市场文本数据的情感计算!

    之前我依据一篇论文中的中文金融情感词典CFSD(chinese financial sentiment dictionary), 中文金融领域情感词典构建 ,整理成csv文件的情感词典.现在我们找点财 ...

  2. python 比赛成绩预测_使用Python进行体育竞技分析(预测球队成绩)

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. python情感词典计算得分_基于情感词典的情感打分

    原理我就不讲了,请移步下面这篇论文,包括情感词典的构建(各位读者可以根据自己的需求稍作简化),以及打分策略(程序对原论文稍有改动). 论文在这里下载:基于情感词典的中文微博情感倾向性研究 (大家可以上 ...

最新文章

  1. java 判断当前时间是否为节假日_最近公司招人,研发组商量了下,暂时定下这么多java面试题!...
  2. 葡萄城报表介绍:复杂报表
  3. tp数据库表大写命名的一些问题
  4. img解包工具_3、Linux基础命令篇、压缩打包工具
  5. go.js中的图标(icons)的使用
  6. WPF 实现展示反应盘、者试剂仓控件
  7. bootstrap媒体查询类型的值_Redis系列-数据类型sorted_set
  8. Memcached概述
  9. Asp.net MVC3 RTM的源代调试
  10. php 转换为自定义类,PHP面向对象教程之自定义类_PHP
  11. 【直播预告】云栖社区特邀专家蒋泽银:Jpom一款低侵入式Java运维、监控软件...
  12. ios共享账号公众号_我的世界 minecraft 国际版 非网易版 ios下载账号分享 公众号 iphone ipad...
  13. 自动驾驶全球产业链全景图
  14. 直流无刷电机无感检测电路原理
  15. 矩阵转置matlab的函数,【ZZ】Matlab矩阵操作
  16. VS中的debug和releasse版本的区别
  17. 人脸识别-特征脸方法
  18. Thinkphp5.1整合支付宝APP支付
  19. 前后端分离之图片上传服务端处理方法(亲测通过)
  20. 通过“控制面板-程序和附件“查看程序安装位置(终极篇)

热门文章

  1. java---制表符
  2. 2023年3月华为HCIA认证新增题库(H12-811)
  3. CTO的眼界到底有多宽?
  4. 项目管理9大知识思维导图-精减版+教你如何绘制专属思维导图
  5. 习题4.10 设有一长为3000m的绳子,每天减去一半,问需几天时间,绳子的长度会短于5m。
  6. ArcGIS API for JS 4.x + Vue 【1】—— 显示地图和添加点线面
  7. 比Figma更丝滑的“Figma网页版“
  8. 【每日一练】108—一个登录页面的实现
  9. ESP8266物联网开发小板开箱
  10. 类人猿x64位封包协议拦截技术开发3种工具(支持安卓)