安徽富通建设有限公司网站,全国最新产品代理,湖北二师网站建设排名,网站建设亿金手指花总12使用Python进行体育竞技分析#xff08;预测球队成绩#xff09;
发布时间#xff1a;2020-09-18 06:38:27
来源#xff1a;脚本之家
阅读#xff1a;69
今天我们用python进行体育竞技分析#xff0c;预测球队成绩
一. 体育竞技分析的IPO模式 #xff1a;
输入I(input)预测球队成绩
发布时间2020-09-18 06:38:27
来源脚本之家
阅读69
今天我们用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: moyulinfrom 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,n1):
scoreA, scoreB simOneGame(probA, probB)
if scoreA scoreB:
winsA 1
else:
winsB 1
if i%70:
if winsAwinsB:
WinsA1
print(单打第{}场胜利的为A.format(int(i/7)))
else:
WinsB1
print(单打第{}场胜利的为B.format(int(i/7)))
winsA,winsB0,0
return WinsA, WinsB
def gameOver(a,b):
if a10 and b10:
if abs(a-b)2:
return True
if a10 or b10:
if a11 or b11:
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
servingB
else:
if random() probB:
scoreB 1
else:
scoreA 1
servingA
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打包应用程序使之可运行
wincmd打开命令行
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 a100 or b100
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进行体育竞技分析预测球队成绩,希望对大家有所帮助如果大家有任何疑问请给我留言小编会及时回复大家的。在此也非常感谢大家对亿速云网站的支持
如果你觉得本文对你有帮助欢迎转载烦请注明出处谢谢