python简单体育竞技模拟_Python程序设计思维练习---体育竞技分析-阿里云开发者社区...
体育竞技分析:模拟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程序设计思维练习---体育竞技分析-阿里云开发者社区...相关推荐
- python公司大部分编码风格_Python编码风格篇:比较运算符-阿里云开发者社区
前几天有看到一篇 Flask 开发团队内部 Python 编码风格指南 ,里面有一段关于比较的规范觉得很有意思: 任意类型之间的比较,使用 == 和 != 与单例(singletons)进行比较时,使 ...
- python列表做参数传值_python不定参数传值怎么做-问答-阿里云开发者社区-阿里云...
使用arg_name定义的位置参数,表示任意多个位置参数:Python标准库中习惯使用args来命名不定长位置参数,当然我们可以自定义 这个名称:不定长位置参数的类型为元组: Python 允许在形参 ...
- python中tmp什么意思_python中temp是什么意思-问答-阿里云开发者社区-阿里云
==tempfile 模块== [Example 2-6 #eg-2-6] 中展示的 tempfile 模块允许你快速地创建名称唯一的临时文件供使用. ====Example 2-6. 使用 temp ...
- python的requests模块功能_《Python数据可视化编程实战》—— 1.7 安装requests模块-阿里云开发者社区...
本节书摘来异步社区<Python数据可视化编程实战>一书中的第1章,第1.7节,作者:[爱尔兰]Igor Milovanović,更多章节内容可以访问云栖社区"异步社区" ...
- python模拟app操作_Python爬虫入门教程 49-100 Appium安装+操作51JOB_APP(模拟手机操作之一)手机APP爬虫-阿里云开发者社区...
爬前准备工作 在开始安装Appium之前,你要先知道Appium是做什么的?Appium 是一个自动化测试开源工具,看到没,做测试用的,它有点类似Selenium,可以自动操作APP实现一系列的操作. ...
- python 做网站 知乎_python做网站 知乎的搜索结果-阿里云开发者社区
伤不起的全栈程序员 前段时间听说一个新名词:"全栈程序员",google了一下,被引导到了知乎的一个讨论上: http://www.zhihu.com/question/22420 ...
- 命令python所在的驱动器和文件夹_Python文件夹与文件的操作-阿里云开发者社区...
最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在os模块中实现.使用时需先导入这个模块, ...
- python场景建立_Python创建一个街道地址表-问答-阿里云开发者社区-阿里云
首先,你应该转换givenNumber成int()因为input()总是返回字符串.此外,您可以将整体strAddress转换为自身并反转自身版本,以便更轻松地访问它.splitAddress这里不需 ...
- 阿里巴巴400集python教程_递归的练习课程 | Python从入门到精通:高阶篇之十二-阿里云开发者社区...
上节课留了两个练习,这节课给大家讲一下,同时巩固一下递归的用法. 练习1.创建一个函数 power 来为任意数字做幂运算 n* * i 用数据10^5举例说明一下: # 10 ** 5 = 10 * ...
最新文章
- 社区v2022.3版上线:发帖、看直播、评论体验升级,并支持机构号申请
- 以连咖啡为例丨设计小程序的流量裂变体系
- poj 3189 Steady Cow Assignment(二分+最大流)
- PHP-代码审计-变量覆盖
- ubuntu server修改语言
- centos7 mysql 5.5.27_centos7上安装mysql-5.7.27
- Go语言中的io.Reader和io.Writer以及它们的实现
- 【安全】phpldapadmin-1.2.3 界面使用
- jq toggle()方法学习
- 再学 GDI+[77]: 区域(6) - GetRegionScans - 获取区域中的所有矩形
- PSP模块Tensorflow/Pytorch实现小结
- 面试题之谈一谈你所知道的C++的框架
- 使用el-tree-transfer不显示label的坑
- Spring Boot 接入支付宝,实战来了!
- Cinema DNG raw视频处理
- 笔记本java怎么启动独立显卡_笔记本双显卡怎么切换,告诉你笔记本双显卡怎么切换到独立显卡...
- 分布式缓存之memcached以及LAMP的搭建
- 【《2021机器学习-李宏毅》学习笔记】
- R语言多元Logistic逻辑回归 应用案例
- 工作方式需要主心骨、承载人
热门文章
- 云炬随笔20210731(2)
- 单列表_正态分布检验(单样本K-S检验)
- python long函数_python 内置函数
- python如何注释掉一段代码_爬取出来的网页代码都被注释掉怎么解决?
- java 时分秒比较_小学三年级数学上册《时分秒》一课一练,含答案,巩固此知识点!...
- PIC单片机精通_A/D模数转换模块细节补充
- 用Delphi创建服务程序
- C实现的一个简单的学生成绩管理系统
- 【CyberSecurityLearning 附】域的复习+小综合实验(重要!)
- 「 Modbus-RTU报文解析」解析03、06、10功能码报文示例