from random import *

#输出介绍信息

defprintIntro():print("这个程序模拟两个选手A和B的某种竞技比赛")print("程序运行需要A和B的能力值(以0到1之间的小数表示)")#输入,获取能力值和比赛场数

defgetInputs():#获取数据

a= 0.45b= 0.5n= 5

'''a = eval(input("请输入a选手的能力值:"))

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

n = eval(input("模拟比赛场次:"))'''

returna,b,n#比赛全过程

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

winsA, winsB=0,0

m=eval(input("1.排球,2乒乓球,3足球,4篮球,请输入选择的规则:"))for i in range(1, int(n/2)+2): #n为比赛场数

scoreA, scoreB=simOneGame(int(n/2)+1, probA, probB, m) #单场比赛过程

print("第{}场比赛得分情况,A:{},B:{}".format(i, scoreA, scoreB))if scoreA >scoreB:

winsA+= 1

else:

winsB+= 1

returnwinsA, winsB#单场比赛过程,返回比分

defsimOneGame(i, probA, probB, m):global k #记录局数

k += 1

if m == 1:

scoreA, scoreB=Volleyball_game(k, i, probA, probB)elif m == 2:

scoreA, scoreB=Table_Tennis_game(k, i, probA, probB)elif m == 3:

scoreA, scoreB=Football_game(i, probA, probB)elif m == 4:

scoreA, scoreB=Basketball_game(i, probA, probB)returnscoreA, scoreB#输出获胜场数和比例

defprintSummary(winsA, winsB):

n= winsA +winsBprint("选手A获胜{}场比赛,占比例{:0.2%}".format(winsA, winsA/n))print("选手B获胜{}场比赛,占比例{:0.2%}".format(winsB, winsB/n))#排球比赛单局

defVolleyball_game(k, i, probA, probB):

scoreA, scoreB=0,0

serving= 'A'

if k!=i: #不是最终局

while not ((scoreA == 25 and scoreA >= scoreB-2) or (scoreB == 25 and scoreB >= scoreA-2)) : #如果未达到单场结束条件

if serving == 'A':if random()

scoreA+= 1

else:

serving='B'

else:if random()

scoreB+= 1

else:

serving='A'

else: #最终局

while not ((scoreA == 15 and scoreA >= scoreB-2) or (scoreB == 15 and scoreB >= scoreA-2)):if serving == 'A':if random()

scoreA+= 1

else:

serving='B'

else:if random()

scoreB+= 1

else:

serving='A'

returnscoreA, scoreB#足球比赛一场

defFootball_game(i, probA, probB):

scoreA, scoreB=0, 0

a, b= randint(int(probA*7), int(probA*14)), randint(int(probB*7), int(probB*14)) #根据能力值随机出进攻次数

for i inrange(int(a)):if random() - 0.1 >probA:

scoreA+= 1

for i inrange(int(b)):if random() - 0.1 >probB:

scoreB+= 1

while scoreA == scoreB : #点球大战

if random() >probA:

scoreA+= 1

if random() >scoreB :

scoreB+= 1

returnscoreA, scoreB#乒乓球比赛单局

defTable_Tennis_game(k, i, probA, probB):

scoreA, scoreB=0, 0

serving= 'A'

while not ((scoreA == 11 and scoreA >= scoreB-2) or (scoreB == 11 and scoreB >= scoreA-2)): #如果未达到单场结束条件

if serving == 'A':if random()

scoreA+= 1

else:

serving= 'B'

else:if random()

scoreB+= 1

else:

serving= 'A'

returnscoreA, scoreB#篮球比赛一场

defBasketball_game(k, i, probA, probB):

scoreA, scoreB=0, 0

a, b= randint(int(probA * 150), int(probA * 170)), randint(int(probB * 150), int(probB * 170)) #根据能力值随机出进攻次数

for i inrange(int(a)):if random() >probA:if random() > 0.62:

scoreA+= 3

else:

scoreA+= 2

for i inrange(int(b)):if random() >probB:if random() > 0.62:

scoreB+= 3

else:

scoreB+= 2

while scoreA == scoreB: #加时赛

a, b = randint(int(probA * 10), int(probA * 15)), randint(int(probB * 10), int(probB * 15)) #根据能力值随机出进攻次数

for i inrange(int(a)):if random() >probA:if random() > 0.62:

scoreA+= 3

else:

scoreA+= 2

for i inrange(int(b)):if random() >probB:if random() > 0.62:

scoreB+= 3

else:

scoreB+= 2

returnscoreA, scoreBdefmain():

printIntro()

probA, probB, n=getInputs()

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

printSummary(winsA, winsB)

k=0

main()

python模拟足球比赛_2019-05-12 Python之模拟体育竞赛相关推荐

  1. python模拟足球比赛_如何使用python从livescores获取足球比赛结果

    大家好,我有这个项目正在使用python3.4我想刮livescore.com网站对于足球成绩(结果),例如获得当天的所有分数(英格兰2-2挪威,法国2-1意大利)等等,我正在用Python3.4,W ...

  2. python模拟足球比赛_python初体验 —— 模拟体育竞技

    python初体验 -->>> 模拟体育竞技 一.排球训练营 1. 简介: 模拟不同的两个队伍进行排球的模拟比赛. 2. 模拟原理: 通过输入各自的能力值(Ⅰ),模拟比赛的进行( P ...

  3. python预测足球比赛_机器学习算法预测足球赛事的模型比较(一)

    本文是作者前一段时间关注足球赛事时做的一点分析,内容涉及基于足球数据进行描述性统计分析.基于机器学习建模与传统的泊松模型建模三大部分,由于文章较长,将分两部分进行展现. 第一部分为前言与述性分析部分1 ...

  4. python工程师面试宝典_2019年,Python工程师必考的6个面试题,Python面试题No5

    第1题:Python里面如何实现tuple和list的转换? 函数tuple(seq)可以把所有可迭代的(iterable)序列转换成一个tuple, 元素不变,排序也不变 list转为tuple: ...

  5. python工程师笔试题_2019年,Python工程师必考的6个面试题,Python面试题No5

    函数 tuple(seq) 可以把所有 可迭代的(iterable)序列 转换成一个 tuple , 元素不变,排序也不变 list转为tuple: temp_list = [1,2,3,4,5] 复 ...

  6. python爬虫怎么挣钱_2019如何学Python?这里有你需要的答案

    编辑 | Jane 出品 | Python大本营(公众号id:pythonnews) 根据 2018 年 Python 开发者大调查,Python 3 的渗透率已经快速增长至 84%,越来越多的开发者 ...

  7. python足球分析系统_NAO足球/高尔夫比赛视觉系统设计(python初级版)

    初级版的内容主要分为两部分,第一部分是如何利用NAO的视觉传感器,即上下摄像头,来获取图片及如何利用opencv显示获得的图片.第二部分是如何利用opencv里面的视觉算法从NAO获取的图片中找到所需 ...

  8. 【Mo 人工智能技术博客】采用 Python 机器学习预测足球比赛结果

    采用 Python 机器学习预测足球比赛结果 足球是世界上最火爆的运动之一,世界杯期间也往往是球迷们最亢奋的时刻.比赛狂欢季除了炸出了熬夜看球的铁杆粉丝,也让足球竞猜也成了大家茶余饭后最热衷的话题.甚 ...

  9. python模型预测足球_采用 Python 机器学习预测足球比赛结果!买谁赢就谁赢!

    采用 Python 机器学习预测足球比赛结果 足球是世界上最火爆的运动之一,世界杯期间也往往是球迷们最亢奋的时刻.比赛狂欢季除了炸出了熬夜看球的铁杆粉丝,也让足球竞猜也成了大家茶余饭后最热衷的话题.甚 ...

最新文章

  1. 黄聪:分享 SQL Server 2005 分区实现教程
  2. 做301定向跳转对网站优化有什么帮助?
  3. iOS8中提示框的使用UIAlertController(UIAlertView和UIActionSheet二合一)
  4. 面试造飞机系列:volatile面试的连环追击,你还好吗?
  5. @capire/common is not needed at runtime at all
  6. Javascript 获取字符串字节数的多种方法
  7. JavaScript 经典设计模式
  8. Python+django网页设计入门(3):使用SQLite数据库
  9. 松下a6伺服驱动连接光栅尺_闭环伺服系统的数控贴条为什么要安装光栅尺?
  10. 【Android Studio安装部署系列】十九、Android studio使用SVN
  11. 达而稳 驱动 fl2000dx_Intel-AMD核显驱动没人管:Win10无法升级,不要撞车
  12. mysql 主从数据库配置_8、MySQL主从数据库配置
  13. SolidWorks2020无法获得下列许可SOLIDWORKS Standard.Server节点已经关闭或是没有响应。(-96,7,11003)
  14. 宝塔远程桌面助手linux密码不知道,宝塔远程桌面助手的教程
  15. 无盘服务器接几根网线,设置无线路由器需要几根网线_安装路由器需要几根网线?-192路由网...
  16. 10.java基础----继承、抽象类- 编程
  17. macOS 安装 brew步骤
  18. 夜神模拟器 开发 重新连接
  19. 使用Proteus8进行8086实验仿真,解决找不到source的问题
  20. JAVA——基于控制台的购书系统

热门文章

  1. python -- (pynsq)
  2. 淘宝的估算并发量公式
  3. 链条电动葫芦的导体结构
  4. word替换使用通配符_在Word 2016中搜索时如何使用通配符
  5. 腾讯云建站 CloudPages 新品上线,做网站从未如此简单
  6. 【转】JAVA之动态代理
  7. 第七次作业整理(分镜+色彩提取/20211105)
  8. Soul赴美递交上市申请背后:自造定位、自我打脸,借“约会”营销
  9. 【不求甚解之UI篇】毛玻璃效果
  10. Guitar Pro中如何添加与删除音轨