python:学习自顶向下程序设计:竞技体育模拟
学习过程记录:
一,需求及框架:

二:程序代码:
#sports.py
from random import random def main(): #熟悉函数的调用
printInfo()
probA,probB,n = getInputs()
winsA,winsB = simNGames(n,probA,probB)
printSummary(winsA,winsB) def printInfo():
print("本程序是竞技体育模拟分析系统")
print("需要输入选手双方的能力值(0到1之间的小数)") def getInputs():
a = eval(input("输入选手A的能力值(0到1的小数):"))
b = eval(input("输入选手B的能力值(0到1的小数):"))
n = eval(input("输入比赛场次:"))
return a,b,n def gameover(scoreA,scoreB): #任意一方比分达到15球,结束本局比赛
return scoreA == 15 or scoreB == 15 def simOneGame(probA,probB): #模拟单局比赛,15球一局,输球则换发
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 simNGames(n,probA,probB): #模拟n场比赛,返回选手双方输赢场次
winsA,winsB = 0,0
for i in range(n):
a,b = simOneGame(probA,probB)#模拟每一场比赛,都要调用这个单场的
if a > b: #函数计算随机结果
winsA += 1
else:
winsB += 1
return winsA,winsB
def printSummary(winsA,winsB):
summ = winsA + winsB
print("模拟{}场比赛".format(summ))
print("选手A胜{}场,胜率为{:0.1%}".format(winsA,winsA/summ))
print("选手B胜{}场,胜率为{:0.1%}".format(winsB,winsB/summ))
main()
程序运行结果如下:

python:学习自顶向下程序设计:竞技体育模拟的更多相关文章
- Python学习---模拟微信网页登录180410
WEB微信 网页登录的猜想: a. 访问页面出现二维码 b. 长轮询监听是否已经扫码并且点击确认 c. 如何进行会话保持 d. 如何获取用户列表 e. 如何发送消息(接收消息) 过程:访问微信官网[h ...
- Python学习计划
---恢复内容开始--- Python学习计划 https://edu.csdn.net/topic/python2?utm_source=blog4 匠人之心,成就真正Python全栈工程师 ...
- Python学习--04条件控制与循环结构
Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...
- Python学习--01入门
Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...
- [Python] 学习资料汇总
Python是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大且完善的通用型语言,已经有十多年的发展历史,成熟且稳定.Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用 ...
- 180分钟的python学习之旅
最近在很多地方都可以看到Python的身影,尤其在人工智能等科学领域,其丰富的科学计算等方面类库无比强大.很多身边的哥们也提到Python非常的简洁方便,比如用Django搭建一个见得网站只需要半天时 ...
- 优秀Python学习资源收集汇总(强烈推荐)
Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...
- [转]优秀Python学习资源收集汇总
Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...
- python 学习资料
Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...
随机推荐
- Ipan笔记-2
其实二级联动下拉选择框很简单的, 参考: https://www.cnblogs.com/zhangmiaomiao/p/6013533.html ============== 关于$.each和 $ ...
- react开发初始配置和一些问题
1.npm run build之后,打开网页显示为空白的解决方案 初始使用的开发者应该都会使用create-react-app,初次尝试,启动没有问题,然后就测试一下build,结果发现本地文件ind ...
- Learning-Python【24】:面向对象之组合
组合的概念 一个类的对象具备某一个属性,该属性的值是来自于另外一个类的对象,称之为组合,组合也是用来解决类与类之间代码冗余的问题 组合的使用 在继承中,举了一个属性查找顺序方式一的例子,最终的实现成果 ...
- hdu 1558 Segment set 线段相交+并查集
Segment set Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Prob ...
- 全文检索:haystack+elasticsearch
优点: 1.查询速度快 2.支持中文分词准备工作:安装es软件 1.拷贝到ubuntu 2.docker load -i 文件路径 3.配置 修改ip地址 4.docker run -dti --ne ...
- ionic3使用cnpm可能会出现的问题
在跑一个ionic3项目的时候发现,新建的页面无法被识别,总是报错 cannot find modules '../pages/login/login.modules' 在排除多种可能性后,确定了是因 ...
- hdu-4856 Tunnels 状压DP
http://acm.hdu.edu.cn/showproblem.php?pid=4856 有若干管道,每个管道有且只能走一次,而地图可以随意走. 那么可以先处理每个管道间的最短路(不要考虑借助其他 ...
- stylus笔记(二)
1.方法 函数 Stylus强大之处就在于其内置的语言函数定义.其定义与混入(mixins)一致:却可以返回值. 默认参数 可选参数往往有个默认的给定表达.在Stylus中,我们甚至可以超越默认参数 ...
- vue 安装插件Refusing to install package with name '???'
今天想练习使用下vux框架,安装时报错 查了下,创建项目时描述都是一样的,去package.json把name改成其它就得了
- 用VSCode的debugger for chrome插件调试服务器项目的配置方式
项目放到tomcat服务器启动起来(以tomcat服务器为例). 配置launch 把谷歌浏览器彻底关闭!(要彻底) 打断点 点左侧的调试 点刷新!(这一步也需要)