体育竞技分析:模拟N场比赛

计算思维:抽象 + 自动化

模拟:抽象比赛过程,自动模拟N场比赛,当N越大时,比赛结果分析越科学。

本次比赛规则:回合制,15分一局,先由一方发球,如胜利,则得1分并继续发球,如失败,则双方分数不改变并交换球权。球员AB的能力为0-1之间的一个数值

思维方式:自顶向下即将一个复杂问题分解成几个问题,再细分成一个个具体的小问题,从而来解决复杂问题。自底向上为自顶向下的逆过程,即解决复杂问题的方法,逐步解决一个个小问题,来达成目的。

1.将体育竞技分析分解为以下几个小步骤

1.1打印程序的介绍性信息式

1.2获得程序运行参数:probA(A的能力值),probB(B的能力值),n(比赛场次)

1.3利用球员AB的能力值,模拟n场比赛

1.4输出球员AB获胜的场次及概率

2.将各个步骤定义成函数来实现

分解

定义函数

3.完整代码

from random import random

def printInfo(): # 打印程序介绍信息

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 simOneGame(probA, probB): # 进行一场比赛

scoreA, scoreB = 0, 0 # 初始化AB的得分

serving = 'A' # 首先由A发球

while not gameOver(scoreA, scoreB): #用while循环来执行比赛

if serving == 'A':

if random() < probA: # random() 方法返回随机生成的一个实数,它在[0,1)范围内。

scoreA += 1 # 用随机数来和能力值比较从而分出胜负

else:

serving = 'B'

else:

if random() < probB:

scoreB += 1

else:

serving = 'A'

return scoreA, scoreB

def simNGames(n, probA, probB): #进行N场比赛

winsA, winsB = 0, 0 # 初始化AB的胜场数

for i in range(n):

scoreA, scoreB = simOneGame(probA, probB)

if scoreA > scoreB:

winsA += 1

else:

winsB += 1

return winsA, winsB

def gameOver(c, d): #比赛结束

return c==15 or d==15

def printSummary(n ,winA, winB): #打印比赛结果

print('竞技分析开始,共模拟{}场比赛'.format(n))

print('选手A获胜{}场比赛,占比{:.2f}%'.format(winA, winA/n*100))

print('选手B获胜{}场比赛,占比{:.2f}%'.format(winB, winB / n * 100))

def main():

printInfo()

probA, probB, n =getInputs()

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

printSummary(n, winsA, winsB)

main()

4.运行结果分析

菜鸟互啄

中阶对抗

皇城PK

分析以上数据得知:对于两位能力相差相同的选手(都为0.05),能力越大的选手竞技时,胜负概率越接近。

python简单体育竞技模拟_Python程序设计思维练习---体育竞技分析-阿里云开发者社区...相关推荐

  1. python公司大部分编码风格_Python编码风格篇:比较运算符-阿里云开发者社区

    前几天有看到一篇 Flask 开发团队内部 Python 编码风格指南 ,里面有一段关于比较的规范觉得很有意思: 任意类型之间的比较,使用 == 和 != 与单例(singletons)进行比较时,使 ...

  2. python列表做参数传值_python不定参数传值怎么做-问答-阿里云开发者社区-阿里云...

    使用arg_name定义的位置参数,表示任意多个位置参数:Python标准库中习惯使用args来命名不定长位置参数,当然我们可以自定义 这个名称:不定长位置参数的类型为元组: Python 允许在形参 ...

  3. python中tmp什么意思_python中temp是什么意思-问答-阿里云开发者社区-阿里云

    ==tempfile 模块== [Example 2-6 #eg-2-6] 中展示的 tempfile 模块允许你快速地创建名称唯一的临时文件供使用. ====Example 2-6. 使用 temp ...

  4. python的requests模块功能_《Python数据可视化编程实战》—— 1.7 安装requests模块-阿里云开发者社区...

    本节书摘来异步社区<Python数据可视化编程实战>一书中的第1章,第1.7节,作者:[爱尔兰]Igor Milovanović,更多章节内容可以访问云栖社区"异步社区" ...

  5. python模拟app操作_Python爬虫入门教程 49-100 Appium安装+操作51JOB_APP(模拟手机操作之一)手机APP爬虫-阿里云开发者社区...

    爬前准备工作 在开始安装Appium之前,你要先知道Appium是做什么的?Appium 是一个自动化测试开源工具,看到没,做测试用的,它有点类似Selenium,可以自动操作APP实现一系列的操作. ...

  6. python 做网站 知乎_python做网站 知乎的搜索结果-阿里云开发者社区

    伤不起的全栈程序员 前段时间听说一个新名词:"全栈程序员",google了一下,被引导到了知乎的一个讨论上: http://www.zhihu.com/question/22420 ...

  7. 命令python所在的驱动器和文件夹_Python文件夹与文件的操作-阿里云开发者社区...

    最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在os模块中实现.使用时需先导入这个模块, ...

  8. python场景建立_Python创建一个街道地址表-问答-阿里云开发者社区-阿里云

    首先,你应该转换givenNumber成int()因为input()总是返回字符串.此外,您可以将整体strAddress转换为自身并反转自身版本,以便更轻松地访问它.splitAddress这里不需 ...

  9. 阿里巴巴400集python教程_递归的练习课程 | Python从入门到精通:高阶篇之十二-阿里云开发者社区...

    上节课留了两个练习,这节课给大家讲一下,同时巩固一下递归的用法. 练习1.创建一个函数 power 来为任意数字做幂运算 n* * i 用数据10^5举例说明一下: # 10 ** 5 = 10 * ...

最新文章

  1. 社区v2022.3版上线:发帖、看直播、评论体验升级,并支持机构号申请
  2. 以连咖啡为例丨设计小程序的流量裂变体系
  3. poj 3189 Steady Cow Assignment(二分+最大流)
  4. PHP-代码审计-变量覆盖
  5. ubuntu server修改语言
  6. centos7 mysql 5.5.27_centos7上安装mysql-5.7.27
  7. Go语言中的io.Reader和io.Writer以及它们的实现
  8. 【安全】phpldapadmin-1.2.3 界面使用
  9. jq toggle()方法学习
  10. 再学 GDI+[77]: 区域(6) - GetRegionScans - 获取区域中的所有矩形
  11. PSP模块Tensorflow/Pytorch实现小结
  12. 面试题之谈一谈你所知道的C++的框架
  13. 使用el-tree-transfer不显示label的坑
  14. Spring Boot 接入支付宝,实战来了!
  15. Cinema DNG raw视频处理
  16. 笔记本java怎么启动独立显卡_笔记本双显卡怎么切换,告诉你笔记本双显卡怎么切换到独立显卡...
  17. 分布式缓存之memcached以及LAMP的搭建
  18. 【《2021机器学习-李宏毅》学习笔记】
  19. R语言多元Logistic逻辑回归 应用案例
  20. 工作方式需要主心骨、承载人

热门文章

  1. 云炬随笔20210731(2)
  2. 单列表_正态分布检验(单样本K-S检验)
  3. python long函数_python 内置函数
  4. python如何注释掉一段代码_爬取出来的网页代码都被注释掉怎么解决?
  5. java 时分秒比较_小学三年级数学上册《时分秒》一课一练,含答案,巩固此知识点!...
  6. PIC单片机精通_A/D模数转换模块细节补充
  7. 用Delphi创建服务程序
  8. C实现的一个简单的学生成绩管理系统
  9. 【CyberSecurityLearning 附】域的复习+小综合实验(重要!)
  10. 「 Modbus-RTU报文解析」解析03、06、10功能码报文示例