python体育竞技分析代码200行_【python】体育竞技分析:预测球队比赛成绩

体育竞技分析

一、程序总体框架及步骤:

步骤1:打印程序的介绍性信息

步骤2:获得程序运行参数:probA,probB,n

步骤3:利用球员A和B的能力值,模拟n局比赛

步骤4:输出球员A和B获得比赛的场次和概率

框架表示:

1968246-20200421215623664-318228335.png

二、程序设计(自顶向下):

代码简单介绍:

函数名称

函数说明

printInfo()

打印程序的介绍信息

getInputs()

获得用户输入的参数

printResult(n, winsA, winsB)

输出模拟比赛的结果

simNGames(n, probA, probB)

模拟n场比赛

simOneGame(probA, probB)

模拟一场比赛,包括五局,采取五局三胜制

simAGame(N, probA, probB)

模拟一局比赛

GameOver(N, scoreA, scoreB)

定义一局比赛的结束条件

具体函数代码:

顶层设计:

defmain():

printIntro()

probA , probB , n=getInputs()

winsA , winsB=simNGames(n, probA, probB)

printSummary(winsA, winsB)

步骤一:printIntro()函数

defprintInfo():print("这个程序模拟两个选手A和B的体育竞技比赛")print("程序需要两个选手的能力值0-1")print("规则:")print("作者: 学号:")

步骤二:getInputs()函数

defgetInput():

a= eval(input("请输入选手A的能力值(0-1):"))

b= eval(input("请输入选手B的能力值(0-1):"))

m=eval(input("比赛的局数:"))

n= eval(input("模拟比赛的场次:"))return a,b,m,n

步骤三:simNGames()函数

defmain():

printIntro()

probA,probB,n=getInputs()

winA,winB=simNGames(n,probA,probB)

printSummary(winsA,winsB)

步骤四:printSummary()函数

defprintSummary(winsA,winsB):

n= winsA +winsBprint("竞技分析开始,共模拟{}场比赛".format(n))print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA,winsA/n))print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB,winsB/n))

三、羽毛球竞技程序设计实例:

比赛规则·

1. 21 分制,3局2胜为佳2. 每球得分制3. 每回合中,取胜的一方加 1 分4. 当双方均为 20 分时,领先对方 2 分的一方赢得该局比赛5. 当双方均为 29 分时,先取得 30 分的一方赢得该局比赛6. 一局比赛的获胜方在下一局率先发球

#体育竞技

from random importrandomdefmain():

printInfo()

probA,probB,m,n=getInput()

winsA,winsB=simNGames(m,n,probA,probB)

printSummary(winsA,winsB)defprintInfo():print("这个程序模拟两个选手A和B的羽毛球竞技比赛")print("程序需要两个选手的能力值0-1")print("规则:三局两胜--21分制")print("作者:阮满欢 学号:47")defgetInput():

a= eval(input("请输入选手A的能力值(0-1):"))

b= eval(input("请输入选手B的能力值(0-1):"))

m=eval(input("比赛的局数:"))

n= eval(input("模拟比赛的场次:"))returna,b,m,ndefprintSummary(winsA,winsB):

n= winsA +winsBprint("竞技分析开始,共模拟{}场比赛".format(n))print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA,winsA/n))print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB,winsB/n))defsimNGames(m,n,probA,probB):

winsA,winsB=0,0

wa,wb=0,0for i inrange(n):for i inrange(m):

scoreA,scoreB=simOneGame(probA,probB)if scoreA >scoreB:

wa+= 1

else:

wb+= 1

if wa==2:

winsA+=1wa,wb=0,0break

if wb==2:

winsB+=1wa,wb=0,0break

returnwinsA,winsBdefsimOneGame(probA,probB):

scoreA,scoreB=0,0

serving= "A"

while notgameOver(scoreA,scoreB):if serving == "A":if random()

scoreA+= 1

else:

serving= "B"

else:if random()

scoreB+= 1

else:

serving= "A"

returnscoreA,scoreBdefgameOver(a,b):if(a>=20 or b>=20):if(abs(a-b)==2 and a<=29 and b<=29):returnTrueelse:return a==30 or b==30

else:return False

main()

运行结果:

1968246-20200421222211786-1026532183.png

三、程序打包

使用pyinstaller打包,把Python脚本打包成可执行的文件。即把.py文件打包成.exe文件,则可以直接运行结果。

1.首先要安装pyinstaller库

在cmd中输入下面一句代码:

pip install pyinstaller

1968246-20200422185820203-1531765863.png

2.使用pyinstaller时;在上述代码的main函数的最后加上 input() 语句,防止程序一运行完就自动退出。

1968246-20200422191618155-1673003289.png

(记得在代码后加input()语句)

四、篮球比赛模拟实例

赛事规则:

1.1 篮球比赛

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

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

1.2 球篮:本方/对方

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

1.3 比赛的胜者

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

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

"""Created on Mon May 13 19:46:23 2019

@author: 18 EliO FanG"""

from math importfabsfrom random importrandomdefprintIntro():'''function: 打印程序的介绍信息'''

print("模拟篮球比赛的代码分析")print("这个程序模拟两支队伍A和B的篮球比赛")print("程序运行需要A和B的能力值(以0到1之间的小数表示)")print("作者:阮满欢 47")defgetInputs():

a= eval(input("请输入A队的能力值(0-1):"))

b= eval(input("请输入B队的能力值(0-1):"))

n= eval(input("模拟比赛的场次:"))returna, b, ndefsimNGames(n, probA, probB):

winsA, winsB=0, 0for i inrange(n):

scoreA, scoreB=simOneGame(probA, probB)if scoreA >scoreB:

winsA+= 1

else:

winsB+= 1

returnwinsA, winsBdefgameOver(a,b):return a>b or b>adefsimOneGame(probA, probB):

scoreA, scoreB=0, 0

serving= "A"

while notgameOver(scoreA, scoreB):if serving == "A":if random()

scoreA+= 1

else:

serving="B"

else:if random()

scoreB+= 1

else:

serving="A"

returnscoreA, scoreBdefprintSummary(winsA, winsB):

n= winsA +winsBprint("篮球比赛分析开始,共模拟{}场比赛".format(n))print("A队获胜{}场比赛,占比{:0.1%}".format(winsA, winsA/n))print("B队获胜{}场比赛,占比{:0.1%}".format(winsB, winsB/n))defmain():

printIntro()

probA, probB, n=getInputs()

winsA, winsB=simNGames(n, probA, probB)

printSummary(winsA, winsB)

main()

运行结果:

1968246-20200421231730244-1665347246.png

四、篮球晋级赛模拟

importrandomdef bsxx():#比赛信息输出

string1="模拟体育竞技分析 模拟人:xiayiLL"string2="模拟篮球竞技分析"string3="篮球比赛规则如下:"string4="篮球比赛由两个队参加,每队出场5名队员。每队目标是在对方球篮得分,并阻止对方队在本方球篮得分。"string5="比赛采用4节制,得分最多的队伍获胜。"string6="若比赛结束,比分仍然相同,则进入加时赛"string7="加时赛规则如下:"string8="加时赛分为5分钟一场,球权由跳球决定,在时限内比分高的一方获胜,若时限内还未分出胜负,则继续进行加时赛,球权由第一次加时赛未获球权方拥有,如此往返,直至分出胜负为止。"

print(string1)print()print(string2)print(string3)print(string4)print(string5)print(string6)print(string7)print(string8)print()def getinput():#获取数据

print("为了更好的模拟比赛数据,请输入两支队伍的运动员的能力值(0-1之间)")print("请输入第一支队伍的各位运动员能力值")

A1=eval(input("请输入第一位运动员的综合能力值:"))

A2=eval(input("请输入第二位运动员的综合能力值:"))

A3=eval(input("请输入第三位运动员的综合能力值:"))

A4=eval(input("请输入第四位运动员的综合能力值:"))

A5=eval(input("请输入第五位运动员的综合能力值:"))print("请输入第二支队伍的各位运动员能力值")

B1=eval(input("请输入第一位运动员的综合能力值:"))

B2=eval(input("请输入第二位运动员的综合能力值:"))

B3=eval(input("请输入第三位运动员的综合能力值:"))

B4=eval(input("请输入第四位运动员的综合能力值:"))

B5=eval(input("请输入第五位运动员的综合能力值:"))

n=eval(input("请输入模拟的次数:"))returnA1,A2,A3,A4,A5,B1,B2,B3,B4,B5,ndef onejie(A1,A2,A3,A4,A5,B1,B2,B3,B4,B5):#一节比赛的得分

scoreA,scoreB=0,0

list1=(2,3)for k in range(5):#设每个人在一节中能有5次投篮的机会

if random.random()<=A1:

scoreA+=random.choice(list1)#投中2分球或者3分球的几率是随机的

if random.random()<=A2:

scoreA+=random.choice(list1)if random.random()<=A3:

scoreA+=random.choice(list1)if random.random()<=A4:

scoreA+=random.choice(list1)if random.random()<=A5:

scoreA+=random.choice(list1)if random.random()<=B1:

scoreB+=random.choice(list1)if random.random()<=B2:

scoreB+=random.choice(list1)if random.random()<=B3:

scoreB+=random.choice(list1)if random.random()<=B4:

scoreB+=random.choice(list1)if random.random()<=B5:

scoreB+=random.choice(list1)returnscoreA,scoreBdef onegame(A1,A2,A3,A4,A5,B1,B2,B3,B4,B5):#一场比赛的总得分

sA1,sB1=onejie(A1,A2,A3,A4,A5,B1,B2,B3,B4,B5)

sA2,sB2=onejie(A1,A2,A3,A4,A5,B1,B2,B3,B4,B5)

sA3,sB3=onejie(A1,A2,A3,A4,A5,B1,B2,B3,B4,B5)

sA4,sB4=onejie(A1,A2,A3,A4,A5,B1,B2,B3,B4,B5)

scoreA=sA1+sA2+sA3+sA4

scoreB=sB1+sB2+sB3+sB4returnscoreA,scoreBdef allgame(A1,A2,A3,A4,A5,B1,B2,B3,B4,B5,n):#模拟所有场次比赛

teamA,teamB,p=0,0,0for i inrange(n):

scoreA,scoreB=onegame(A1,A2,A3,A4,A5,B1,B2,B3,B4,B5)if scoreA>scoreB:

teamA+=1

elif scoreA

teamB+=1

else:

t1,t2=overtime(A1,A2,A3,A4,A5,B1,B2,B3,B4,B5)

teamA+=t1

teamB+=t2returnteamA,teamBdef overtime(A1,A2,A3,A4,A5,B1,B2,B3,B4,B5):#设加时赛中,每人能投2次球

scoreA,scoreB,t1,t2,p1,p2=0,0,0,0,0,0

list1=(2,3)for k in range(2):if random.random()<=A1:

scoreA+=random.choice(list1)if random.random()<=A2:

scoreA+=random.choice(list1)if random.random()<=A3:

scoreA+=random.choice(list1)if random.random()<=A4:

scoreA+=random.choice(list1)if random.random()<=A5:

scoreA+=random.choice(list1)if random.random()<=B1:

scoreB+=random.choice(list1)if random.random()<=B2:

scoreB+=random.choice(list1)if random.random()<=B3:

scoreB+=random.choice(list1)if random.random()<=B4:

scoreB+=random.choice(list1)if random.random()<=B5:

scoreB+=random.choice(list1)if scoreA>scoreB:

t1+=1

elif scoreA

t2+=1

else:

t1,t2=overtime(A1,A2,A3,A4,A5,B1,B2,B3,B4,B5)returnt1,t2defalysis(n,teamA,teamB):print("模拟竞赛分析开始,共模拟{}场比赛".format(n))print("团队A获得{}场胜利,共占比{:.2f}%".format(teamA,teamA/n*100))print("团队B获得{}场胜利,共占比{:.2f}%".format(teamB,teamB/n*100))print("分析完毕")print()defalysis1(n,teamA,teamB):print("模拟竞赛分析开始,共模拟{}场比赛".format(n))print("团队C获得{}场胜利,共占比{:.2f}%".format(teamA,teamA/n*100))print("团队D获得{}场胜利,共占比{:.2f}%".format(teamB,teamB/n*100))print("分析完毕")print()defalysis2(n,teamA,teamB):print("模拟竞赛分析开始,共模拟{}场比赛".format(n))print("决赛队伍1获得{}场胜利,共占比{:.2f}%".format(teamA,teamA/n*100))print("决赛队伍2获得{}场胜利,共占比{:.2f}%".format(teamB,teamB/n*100))print("分析完毕")print()defmain():

x=1bsxx()while x==1:print("开始模拟请按1 结束程序请按2")

i=eval(input())if i==1:

x1=x2=x3=x4=0print("队伍A:队伍B")

A1,A2,A3,A4,A5,B1,B2,B3,B4,B5,n=getinput()

teamA,teamB=allgame(A1,A2,A3,A4,A5,B1,B2,B3,B4,B5,n)

alysis(n,teamA,teamB)print("队伍C:队伍D")

C1,C2,C3,C4,C5,D1,D2,D3,D4,D5,m=getinput()

teamC,teamD=allgame(C1,C2,C3,C4,C5,D1,D2,D3,D4,D5,m)

alysis1(m,teamC,teamD)if teamA>teamB:print("队伍A晋级")

m1,m2,m3,m4,m5=A1,A2,A3,A4,A5

x1=1

else:print("队伍B晋级")

m1,m2,m3,m4,m5=B1,B2,B3,B4,B5

x2=1

if teamC>teamD:print("队伍C晋级")

n1,n2,n3,n4,n5=C1,C2,C3,C4,C5

x3=1

else:print("队伍D晋级")

n1,n2,n3,n4,n5=D1,D2,D3,D4,D5

x4=1num1,num2=allgame(m1,m2,m3,m4,m5,n1,n2,n3,n4,n5,1000)

alysis2(1000,num1,num2)if num1>num2:if x1==1:print("队伍A取得胜利")elif x2==1:print("队伍B取得胜利")else:if x3==1:print("队伍C取得胜利")elif x4==1:print("队伍D取得胜利")print()elif i==2:break

else:print("输入错误,请重试")

main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/56961.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新浪体育——篮球足球的直播和战报爬取

新浪体育——篮球足球的直播和战报爬取 用到的包的介绍 以上是基于python3.6.5的新浪体育直播间篮球足球的直播和战报爬取所引用到的全部内外部包&#xff0c;下面将会挑几个与爬虫息息相关的包进行介绍。 1.lxml Python 标准库中自带了 xml 模块&#xff0c;但是性能不够好…

案例——中国篮球运动员的基本信息分析

案例——中国篮球运动员的基本信息分析 分析目标 1、计算中国男篮、女篮运动员的平均身高与平均体重 2、分析中国篮球运动员的年龄分布 3、计算中国篮球运动员的体质指数 数据获取 先导入可能需要用到的包 import pandas as pd import numpy as np import matplotlib.pypl…

【数据说第四期】篮球比赛中的投篮选择

篮球比赛中的投篮选择 参加过篮球比赛的同学&#xff0c;在球场上是否有这样的经历&#xff1f; 当上一次投篮未命中时&#xff0c;你会倾向于比上一次更近的距离出手投篮&#xff0c;当上一次投篮稳稳命中时&#xff0c;你会想尝试下比上一次更更远距离的出手。于是&#xff…

Firefox火狐浏览器强制使用阅读模式(添加插件法)

Firefox火狐浏览器强制使用阅读模式&#xff08;添加插件法&#xff09; 1.打开Firefox火狐浏览器 2.在地址栏输入 about:addons 3.点击左边的【扩展】 4.搜索Activate Reader View&#xff0c;点击【安装】&#xff0c;之后就可以看到任务栏的左上角有一个书本样子的按钮…

UFT14.52用谷歌浏览器chrome、火狐浏览器firefox 跑自动化

安装了14.52 发现录制的下面不能选择 谷歌、火狐浏览器&#xff0c;是因为浏览器不能用&#xff0c;能用了就有&#xff1a; 插件下载地址&#xff1a;https://chrome.google.com/webstore/detail/micro-focus-uft-agent/kglbdihdcnciobeihioplammnkknjmbd?authuser1 这个是我…

无需注册,国内直接使用,你的浏览器AI小助手

ChatGPT Sidebar是什么 ChatGPT Sidebar是一个浏览器插件,可以在浏览器的侧边栏中提供自然语言处理服务。它使用OpenAI的GPT模型,可以回答各种问题,提供文本摘要、翻译等功能。 ChatGPT Sidebar可以成你的私人助理,常驻在浏览器的某个角落,当你需要翻译一段文字时,可以立…

使用火狐浏览器插件 katalon 做自动化浏览操作

今天参加全国公共英语考试&#xff0c;使用了 katalon 这个火狐&#xff08;Firefox&#xff09;浏览器的插件&#xff08;基于 selenium&#xff09;&#xff0c;简化了重复劳动。整理成文档&#xff0c;希望可以帮助到有需要的朋友。 安装 从火狐浏览器的菜单里进入“附加组件…

ubuntu下安装火狐浏览器及快捷图标

一、在线安装 apt install firefox 二、离线安装 1.下载最新的版本包 火狐官网 2.导入安装包—解压 # 我这里安装包放在opt下 cd /opt tar -jxvf Firefox-latest-x86_64.tar.bz2 3.安装完之后&#xff0c;尝试命令行启动 ./opt/firefox/firefox 4.创建快捷图标 cd /usr/share/a…

怎么把火狐浏览器整成自己喜欢的风格

不多说&#xff0c;先上图&#xff1a; 偶然发现了火狐可以通过Firefox Color扩展自己配置顶部标签栏的颜色&#xff0c;那只能掏出最喜欢的夜店粉整它一下了&#xff0c;然后再配合stylus扩展&#xff0c;就可以整出自己喜欢的风格了。 一、修改顶部书签栏颜色 1、在顶部搜索栏…

火狐firefox浏览器不能播放视频,但别的浏览器可以。

网上有好多的内容&#xff0c;都是老旧的方法&#xff0c;都是flash什么设置的。 后来在外网上找到一个视频&#xff0c;关于不能播放的视频的方法&#xff0c;我设置一下&#xff0c;没有问题。方法如下 关闭浏览器&#xff0c;再打开就可以了。

软文推广过程中有哪些实用的推广用语?

软文推广是一个文字的游戏&#xff0c;说白了就是让文字做你的营销员&#xff0c;所以在文字书写的过程中要特别注意&#xff0c;有时候一个词就能让用户感觉到舒服或不舒适&#xff0c;小编作为一个多年的软文写作人员&#xff0c;就从软文营销用语上面来讲解一下&#xff0c;…

招商软文如何写:推广诱人的广告——文芳阁传媒有话说

招商软文如何写&#xff1a;推广诱人的广告——文芳阁传媒有话说 导语&#xff1a;现在&#xff0c;很多的产品做出了好的开头后&#xff0c;会想出下一步推广的路&#xff1a;就是树形招商发展&#xff0c;其实这个时候就已经升级了服务方式&#xff0c;从产品到技术或者说是秘…

U盘产品如何做好软文推广利用软文来打造为产品引流宣传

软文推广是现在宣传手段中的重要一环&#xff0c;它可以有效的帮助企业更好的宣传产品&#xff0c;提高品牌知名度&#xff0c;提升企业形象&#xff0c;增强消费者对产品的认知度&#xff0c;从而达到促进销量的目的。U盘产品软文推广也是同样道理&#xff0c;如何做好U盘产品…

分享八个软文推广小技巧,让你在众多同行中脱颖而出!

软文推广作为现在主流的推广形式&#xff0c;想要做很容易&#xff0c;但是想要做好就要多下点功夫了&#xff0c;其实 现在大多数公司做软文推广也是在囫囵吞枣&#xff0c;雨里雾里的&#xff0c;其实想要做好软文推广就要多去 注意细节&#xff0c;俗话说细节决定成败&…

软文推广丨什么是软文推广?

随着互联网和移动互联网的普及&#xff0c;网络推广已经成为了企业和个人宣传和推广产品和服务的重要手段之一。其中&#xff0c;软文推广也是一种广泛采用的网络推广方式。本文将围绕“什么是软文推广&#xff0c;应该怎么做”这一主题&#xff0c;对软文推广的概念、特点和实…

软文推广页面

广告页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>广告软文推广页面</title><link href"css/fonts/advertitsing.css" rel"stylesheet"type"text/css"…

产品推广软文怎么写?500字的写作技巧为你送上,拿走直接用

对于很多企业来说&#xff0c;经费不足的情况下&#xff0c;在网上发布产品推广软文就是一个不错的选择&#xff0c;但是产品推广是一种学问&#xff0c;想要做好产品推广&#xff0c;首先要学会如何写好一篇优质的推广软文&#xff0c;大家可从以下方面进行入手&#xff0c;让…

软文推广的方法有哪些,硬广告最有效的软文推广策略

软文推广的方法有哪些&#xff0c;硬广告最有效的软文推广策略 什么叫软文营销推广&#xff1f;#广告营销 软文推广怎么做&#xff1f; 我的 10 年软文发布经验告诉我&#xff0c; 90% 的品牌是为了收录&#xff0c;为了排名发布文章&#xff0c;不收录发再多也是白搭。 什么…

字节蝉联全球独角兽榜首,ChatGPT企业狂升200多位

江山代有才人出&#xff0c;各领风骚数百年。 4月18日&#xff0c; 胡润研究院发布了《2023全球独角兽榜》&#xff0c;列出了全球成立于2000年之后&#xff0c;价值10亿美元以上的非上市公司。 榜单显示&#xff0c;全球一共有1361家独角兽企业入围榜单&#xff0c;分布在48个…

墨西哥海运专线时效,有哪些墨西哥专线货代?

墨西哥是位于北美洲的一个国家&#xff0c;西部是太平洋和加利福尼亚湾&#xff0c;东部是墨西哥湾与加勒比海&#xff0c;海路运输是很发达的&#xff0c;国内大大小小的港口更是非常多;目前国内选择海运专线到墨西哥的客户也是比较多的。下面就给大家介绍一些墨西哥海运专线。…