学习过程记录:

一,需求及框架:

二:程序代码:

  1. #sports.py
  2. from random import random
  3.  
  4. def main(): #熟悉函数的调用
  5. printInfo()
  6. probA,probB,n = getInputs()
  7. winsA,winsB = simNGames(n,probA,probB)
  8. printSummary(winsA,winsB)
  9.  
  10. def printInfo():
  11. print("本程序是竞技体育模拟分析系统")
  12. print("需要输入选手双方的能力值(0到1之间的小数)")
  13.  
  14. def getInputs():
  15. a = eval(input("输入选手A的能力值(0到1的小数):"))
  16. b = eval(input("输入选手B的能力值(0到1的小数):"))
  17. n = eval(input("输入比赛场次:"))
  18. return a,b,n
  19.  
  20. def gameover(scoreA,scoreB): #任意一方比分达到15球,结束本局比赛
  21. return scoreA == 15 or scoreB == 15
  22.  
  23. def simOneGame(probA,probB): #模拟单局比赛,15球一局,输球则换发
  24. scoreA,scoreB = 0,0
  25. serving = "A" #这里是赋值,不是等于(提醒自己)
  26. while not gameover(scoreA,scoreB):
  27. if serving == "A":
  28. if random() < probA:
  29. scoreA += 1
  30. else:
  31. serving = "B"
  32. else:
  33. if random() < probB:
  34. scoreB += 1
  35. else:
  36. serving = "A"
  37. return scoreA,scoreB
  38.  
  39. def simNGames(n,probA,probB): #模拟n场比赛,返回选手双方输赢场次
  40. winsA,winsB = 0,0
  41. for i in range(n):
  42. a,b = simOneGame(probA,probB)#模拟每一场比赛,都要调用这个单场的
  43. if a > b: #函数计算随机结果
  44. winsA += 1
  45. else:
  46. winsB += 1
  47. return winsA,winsB
  48. def printSummary(winsA,winsB):
  49. summ = winsA + winsB
  50. print("模拟{}场比赛".format(summ))
  51. print("选手A胜{}场,胜率为{:0.1%}".format(winsA,winsA/summ))
  52. print("选手B胜{}场,胜率为{:0.1%}".format(winsB,winsB/summ))
  53. main()

程序运行结果如下:

python:学习自顶向下程序设计:竞技体育模拟的更多相关文章

  1. Python学习---模拟微信网页登录180410

    WEB微信 网页登录的猜想: a. 访问页面出现二维码 b. 长轮询监听是否已经扫码并且点击确认 c. 如何进行会话保持 d. 如何获取用户列表 e. 如何发送消息(接收消息) 过程:访问微信官网[h ...

  2. Python学习计划

    ---恢复内容开始--- Python学习计划   https://edu.csdn.net/topic/python2?utm_source=blog4   匠人之心,成就真正Python全栈工程师 ...

  3. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  4. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  5. [Python] 学习资料汇总

    Python是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大且完善的通用型语言,已经有十多年的发展历史,成熟且稳定.Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用 ...

  6. 180分钟的python学习之旅

    最近在很多地方都可以看到Python的身影,尤其在人工智能等科学领域,其丰富的科学计算等方面类库无比强大.很多身边的哥们也提到Python非常的简洁方便,比如用Django搭建一个见得网站只需要半天时 ...

  7. 优秀Python学习资源收集汇总(强烈推荐)

    Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...

  8. [转]优秀Python学习资源收集汇总

    Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...

  9. python 学习资料

    Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl ...

随机推荐

  1. Learning-Python【34】:进程之生产者消费者模型

    一.什么是生产者消费者模型 生产者指的是生产数据的任务,消费者指的是处理数据的任务,在并发编程中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据.同样 ...

  2. easyUI使用datagrid-detailview.js实现二级列表嵌套

    本文为博主原创,转载请注明: 在easyUI中使用datagrid-detailview.js可快速实现二级折叠列表,示例如下: 注意事项: 原本在谷歌浏览器进行示例测试的,url请求对应的json文 ...

  3. win10更新后 chrome内核浏览器总是打开网页一直加载 甚至打不开 解决方法

    https://blog.csdn.net/qq754772661/article/details/81452131 升级win10之后如果出现chrome内核的浏览器网页总是打不开 打开很慢 而ie ...

  4. 关于MVC RouteExistingFiles疑问

    如图,使用ajpg模拟静态资源.使用 routes.RouteExistingFiles = true; 使静态资源也Map Route,匹配不到则显示Not Foud. ①/a.jpg:访问不到 ② ...

  5. win8外包公司——技术分享:参数传递

    页面之间传递参数 windows phone 的参数传递和web 差不多.用“?”号传递 多个参数的时候用 “&”做分隔. 我接着昨天的项目继续添加一个FourPage.xaml 在昨天的Th ...

  6. angular --- s3core移动端项目(三)

    angular.module('myApp') .directive('listActive',functon(){ return { restrict:'A', scope:{ listActive ...

  7. 20175317 《Java程序设计》第一周学习总结

    20175317 <Java程序设计>第一周学习总结 教材学习内容总结 本周学习了Java大致的开发步骤,完成了课件自带的习题. 学习了在windows与Linux系统下不同的编译方法,掌 ...

  8. Caffarelli 关于自由边界正则性的论文C1

    Caffarelli 关于自由边界正则性的论文 接下来主要想叙述一下Caffarelli的C1文章中的一些想法,这是最近这几天看的文献. 对于从自由边界的Lipschitz正则性到$C^{1,\alp ...

  9. pytorch构建自己的数据集

    现在需要在json文件里面读取图片的URL和label,这里面可能会出现某些URL地址无效的情况. python读取json文件 此处只需要将json文件里面的内容读取出来就可以了 with open ...

  10. 如何 distinct 只对一个字段有用,同时查出其他字段

    转至:http://blog.csdn.net/u013402772/article/details/51262524 在使用MySQL时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有d ...