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 ...
随机推荐
- Learning-Python【34】:进程之生产者消费者模型
一.什么是生产者消费者模型 生产者指的是生产数据的任务,消费者指的是处理数据的任务,在并发编程中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据.同样 ...
- easyUI使用datagrid-detailview.js实现二级列表嵌套
本文为博主原创,转载请注明: 在easyUI中使用datagrid-detailview.js可快速实现二级折叠列表,示例如下: 注意事项: 原本在谷歌浏览器进行示例测试的,url请求对应的json文 ...
- win10更新后 chrome内核浏览器总是打开网页一直加载 甚至打不开 解决方法
https://blog.csdn.net/qq754772661/article/details/81452131 升级win10之后如果出现chrome内核的浏览器网页总是打不开 打开很慢 而ie ...
- 关于MVC RouteExistingFiles疑问
如图,使用ajpg模拟静态资源.使用 routes.RouteExistingFiles = true; 使静态资源也Map Route,匹配不到则显示Not Foud. ①/a.jpg:访问不到 ② ...
- win8外包公司——技术分享:参数传递
页面之间传递参数 windows phone 的参数传递和web 差不多.用“?”号传递 多个参数的时候用 “&”做分隔. 我接着昨天的项目继续添加一个FourPage.xaml 在昨天的Th ...
- angular --- s3core移动端项目(三)
angular.module('myApp') .directive('listActive',functon(){ return { restrict:'A', scope:{ listActive ...
- 20175317 《Java程序设计》第一周学习总结
20175317 <Java程序设计>第一周学习总结 教材学习内容总结 本周学习了Java大致的开发步骤,完成了课件自带的习题. 学习了在windows与Linux系统下不同的编译方法,掌 ...
- Caffarelli 关于自由边界正则性的论文C1
Caffarelli 关于自由边界正则性的论文 接下来主要想叙述一下Caffarelli的C1文章中的一些想法,这是最近这几天看的文献. 对于从自由边界的Lipschitz正则性到$C^{1,\alp ...
- pytorch构建自己的数据集
现在需要在json文件里面读取图片的URL和label,这里面可能会出现某些URL地址无效的情况. python读取json文件 此处只需要将json文件里面的内容读取出来就可以了 with open ...
- 如何 distinct 只对一个字段有用,同时查出其他字段
转至:http://blog.csdn.net/u013402772/article/details/51262524 在使用MySQL时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有d ...