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人工智能课程_从零开始学人工智能(12)--Python · 决策树(零)· 简介...

    原标题:从零开始学人工智能(12)--Python · 决策树(零)· 简介 感谢关注天善智能,走好数据之路↑↑↑ 欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直 ...

  2. python简单的画图代码爱心,怎么用python代码画心

    大家好,本文将围绕用python画一个心形怎么编程展开说明,python简单的画图代码爱心是一个很多人都想弄明白的事情,想搞清楚用python画爱心的程序代码需要先了解以下几个事情. 1.python ...

  3. python 简单实例训练(1~10)-从零开始的Python学习 -- 简单的练习题

    从零开始的Python学习 – 简单的练习题 目录: 从零开始的Python学习 -- 简单的练习题 前言: 顺序结构 A+B problem 苹果采购 分支结构 数的性质 闰年判断 Apple 循环 ...

  4. python简单可视化聊天界面_如何用Python制作可视化输入界面

    继续研究Python的应用,我们在有些程序中需要输入一些参数,可由几种方式实现 1.直接写在程序里,适合编程使用 2.使用input()函数,运行程序时输入 3.做成可视化界面,然后让程序获得 今天主 ...

  5. python简单代码input-【python系统学习05】input函数——实现人机交互

    input函数 目录 input用途 实现人机交互: 1.你提出问题打印在屏幕上, 2.运行程序的人再输入回答. 3.按下回车,程序得到收集来的回答 4.之后,逻辑向下继续运行. 我们写的程可以实现根 ...

  6. python简单代码hello-python教程——【1 hello, python】

    初识python python是一种面向对象的高级编程语言,由Guido van Rossum在1989年圣诞节期间编写而成. 作为众多编程语言之一,python有着诸如完善的基础代码库和第三方库,& ...

  7. python简单数据类型变量_(八)python的简单数据类型和变量

    什么是数据类型? 程序的本质就是驱使计算机去处理各种状态的变化,这些状态分为很多种. 例如英雄联盟游戏,一个人物角色有名字,钱,等级,装备等特性,大家第一时间会想到这么表示 名字:德玛西亚------ ...

  8. 4、python简单线性回归代码案例(完整)_4、python简单线性回归代码案例(完整)...

    第一.回归分析的步骤 01 根据预测目标,确定自变量和因变量 02 绘制散点图,确定回归模型类型 03 估计模型参数,建立回归模型 04 对回归模型进行检验 回归方程的精度就是用来表示实际观测点和回归 ...

  9. 30天python从入门到精通_2019最新《Python从入门到精通之30天快速学Python教程 》

    课程目录 python入门教程-1-Python编程语言历史及特性.mkv3 Z8 B6 K4 J7 X; K, D python入门教程-2-Python编程语言初接触.mkv ' Z; @3 X* ...

  10. python写抢票软件_2019最新某python编写抢票软件实战教程

    问题:在学习Python爬虫一开始,利用python自带urllib模块请求一个网页时,响应的content中中文为16进制,如何转换为中文. 环境:WIN10+Python3.6 代码: #~ co ...

最新文章

  1. Mocha BSM基础架构管理——灵活的网络拓扑展现
  2. python获取excel某一列所有值-Python读取Excel一列并计算所有对象出现次数的方法...
  3. 【最简单的例子】Editor.md的初步使用
  4. 2019年华南理工大学程序设计竞赛(春季赛)
  5. oracle 数据库的数据事务的相关概念
  6. CRM客户主数据UI上有哪些字段可以触发partner determination
  7. 邮宝打印面单尺寸调整_如何打印身份证的实际尺寸?怎样用照片打印身份证复印件...
  8. 【51Nod - 1010 】只包含因子2 3 5的数 (打表,有坑越界)
  9. 读他:男人最怕听的十句话
  10. 企业微信添加机器人播报天气
  11. NSString 转为gbk
  12. keil spi 调试_单片机软件出问题了?有经验的工程师这么调试
  13. 如何通俗理解泊松分布?
  14. 【Python打卡2019】20190423之52周存钱挑战-for+range()函数使用
  15. Java实现 蓝桥杯VIP 算法提高 格子位置
  16. win10打印机无法打印(怎样使用打印机打印)
  17. Debian折腾笔记
  18. 本Blog独立站点米豆网开通了
  19. SQL service基础(二)对数据指定列查询、条件查询、查询结果排序、聚集函数查询、分组统计查询
  20. XMPP增加删除好友

热门文章

  1. 嵌入式的发展前景如何?
  2. 计算机九宫格游戏怎么玩,如何玩数独九宫格游戏(四)
  3. 学会向上管理,4个提问技巧,让你事半功倍
  4. Windows + Ubuntu20.04双系统详细安装教程
  5. 推荐四款可视化工具,解决99%的可视化大屏需求
  6. k8s v1.22版本中Ingress配置:no matches for kind “Ingress“ in version “networking.k8s.io/v1beta1“
  7. HDU 2340 Obfuscation(dp)
  8. hyper-v服务器系统安装,hyper-v server 2012 安装部署记录
  9. 微观经济学: 鳄梨(Avocado)价格弹性分析
  10. MySql的存储过程的优点与缺点