【python】体育竞技分析:预测球队比赛成绩
AI在体育赛事中进行数据分析,预测比赛结果 #生活知识# #科技生活# #科技改变生活# #人工智能#
def main(): printIntro() probA , probB , n = getInputs() winsA , winsB = simNGames(n, probA, probB) printSummary(winsA, winsB)
def printInfo(): print("这个程序模拟两个选手A和B的体育竞技比赛") print("程序需要两个选手的能力值0-1") print("规则:") print("作者: 学号:")
def getInput(): a = eval(input("请输入选手A的能力值(0-1):")) b = eval(input("请输入选手B的能力值(0-1):")) m=eval(input("比赛的局数:")) n = eval(input("模拟比赛的场次:")) return a,b,m,n
def main(): printIntro() probA,probB,n=getInputs() winA,winB=simNGames(n,probA,probB) printSummary(winsA,winsB)
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))
1. 21 分制,3局2胜为佳
2. 每球得分制
3. 每回合中,取胜的一方加 1 分
4. 当双方均为 20 分时,领先对方 2 分的一方赢得该局比赛
5. 当双方均为 29 分时,先取得 30 分的一方赢得该局比赛
6. 一局比赛的获胜方在下一局率先发球
#体育竞技
from random import random
def main(): printInfo() probA,probB,m,n = getInput() winsA,winsB = simNGames(m,n,probA,probB) printSummary(winsA,winsB)
def printInfo(): print("这个程序模拟两个选手A和B的羽毛球竞技比赛") print("程序需要两个选手的能力值0-1") print("规则:三局两胜--21分制") print("作者:阮满欢 学号:47") def getInput(): a = eval(input("请输入选手A的能力值(0-1):")) b = eval(input("请输入选手B的能力值(0-1):")) m=eval(input("比赛的局数:")) n = eval(input("模拟比赛的场次:")) return a,b,m,n 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 simNGames(m,n,probA,probB): winsA,winsB = 0,0 wa,wb=0,0 for i in range(n): for i in range(m): scoreA,scoreB = simOneGame(probA,probB) if scoreA > scoreB: wa += 1 else: wb += 1 if wa==2: winsA+=1 wa,wb=0,0 break if wb==2: winsB+=1 wa,wb=0,0 break return winsA,winsB def simOneGame(probA,probB): scoreA,scoreB = 0,0 serving = "A" while not gameOver(scoreA,scoreB): 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): if(a>=20 or b>=20): if(abs(a-b)==2 and a<=29 and b<=29): return True else: return a==30 or b==30 else: return False
main()
# -*- coding: utf-8 -*- """ Created on Mon May 13 19:46:23 2019 @author: 18 EliO FanG """ from math import fabs from random import random def printIntro(): ''' function: 打印程序的介绍信息 ''' print("模拟篮球比赛的代码分析") print("这个程序模拟两支队伍A和B的篮球比赛") print("程序运行需要A和B的能力值(以0到1之间的小数表示)") print("作者:阮满欢 47") 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>b or b>a def simOneGame(probA, probB): scoreA, scoreB = 0, 0 serving = "A" while not gameOver(scoreA, scoreB): if serving == "A": if random() < probA: scoreA += 1 else: serving="B" else: if random() < probB: scoreB += 1 else: 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()
import random def 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("请输入模拟的次数:")) return A1,A2,A3,A4,A5,B1,B2,B3,B4,B5,n def 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) return scoreA,scoreB def 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+sB4 return scoreA,scoreB def allgame(A1,A2,A3,A4,A5,B1,B2,B3,B4,B5,n):#模拟所有场次比赛 teamA,teamB,p=0,0,0 for i in range(n): scoreA,scoreB=onegame(A1,A2,A3,A4,A5,B1,B2,B3,B4,B5) if scoreA>scoreB: teamA+=1 elif scoreA<scoreB: teamB+=1 else: t1,t2=overtime(A1,A2,A3,A4,A5,B1,B2,B3,B4,B5) teamA+=t1 teamB+=t2 return teamA,teamB def 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<scoreB: t2+=1 else: t1,t2=overtime(A1,A2,A3,A4,A5,B1,B2,B3,B4,B5) return t1,t2 def alysis(n,teamA,teamB): print("模拟竞赛分析开始,共模拟{}场比赛".format(n)) print("团队A获得{}场胜利,共占比{:.2f}%".format(teamA,teamA/n*100)) print("团队B获得{}场胜利,共占比{:.2f}%".format(teamB,teamB/n*100)) print("分析完毕") print() def alysis1(n,teamA,teamB): print("模拟竞赛分析开始,共模拟{}场比赛".format(n)) print("团队C获得{}场胜利,共占比{:.2f}%".format(teamA,teamA/n*100)) print("团队D获得{}场胜利,共占比{:.2f}%".format(teamB,teamB/n*100)) print("分析完毕") print() def alysis2(n,teamA,teamB): print("模拟竞赛分析开始,共模拟{}场比赛".format(n)) print("决赛队伍1获得{}场胜利,共占比{:.2f}%".format(teamA,teamA/n*100)) print("决赛队伍2获得{}场胜利,共占比{:.2f}%".format(teamB,teamB/n*100)) print("分析完毕") print() def main(): x=1 bsxx() while x==1: print("开始模拟请按1 结束程序请按2") i=eval(input()) if i==1: x1=x2=x3=x4=0 print("队伍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=1 num1,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()
网址:【python】体育竞技分析:预测球队比赛成绩 https://klqsh.com/news/view/347173
相关内容
体育赛事分析预测报告.pptx葡超 阿罗卡 对阵 里斯本竞技 比赛分析预测
赛事深度剖析:对比分析与比赛预测
电子竞技分析师2023年工作总结:电子竞技比赛数据分析的经验.pptx
马德里竞技 对 马洛卡 比赛预测分析
累西腓体育vs裁决者比赛预测分析 2026/01/22
2025新型足球分析工具:浅析AI智能预测系统的作用
电竞比赛分析网站有哪些
体育赛事大数据分析应用研究
电子竞技赛事分析
