python:学习自顶向下程序设计:竞技体育模拟

学习过程记录:

一,需求及框架:

二:程序代码:

 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()

程序运行结果如下:

原文地址:https://www.cnblogs.com/xier/p/10462266.html

时间: 2024-11-09 06:19:09

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

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

WEB微信 网页登录的猜想: a. 访问页面出现二维码 b. 长轮询监听是否已经扫码并且点击确认 c. 如何进行会话保持 d. 如何获取用户列表 e. 如何发送消息(接收消息) 过程:访问微信官网[https://wx.qq.com/]  --> 打开微信[已登录]扫一扫  -->  扫描网页图片 App内获取数据都是通过RUL进行获取的 长轮询: 发送一次请求后,就一直在等待消息的返回,如果超过规定时间后,就结束该请求,发送下次的请求. 轮 询: 定时的不停的交替的发送请求到服务器,不等待消

贝叶斯思维 统计建模的Python学习法pdf

下载地址:网盘下载 编辑推荐 贝叶斯方法正在变得越来越常见与重要,但是却没有太多可以借鉴的资料来帮助初学者.基于Allen Downey在大学讲授的本科课程,本书的计算方法能帮助你获得一个良好的开端. 使用已有的编程技巧学习和理解贝叶斯统计 处理估计.预测.决策分析.假设的证据.假设检验等问题 从简单的例子开始,包括硬币问题.M&Ms豆问题.<龙与地下城>勇士投骰子问题.彩弹游戏和冰球比赛问题 学习计算方法,解决诸如SAT分数含义.模拟肾肿瘤和人体微生物建模问题 内容简介 <贝叶

贝叶斯思维.统计建模的Python学习法(高清版)PDF

贝叶斯思维.统计建模的Python学习法(高清版)PDF百度网盘链接:https://pan.baidu.com/s/1gueMg4HDSzyflwdr3zPZCA 提取码:m0fk 复制这段内容后打开百度网盘手机App,操作更方便哦内容简介 · · · · · · 这本书帮助那些希望用数学工具解决实际问题的人们,仅有的要求可能就是懂一点概率知识和程序设计.而贝叶斯方法是一种常见的利用概率学知识去解决不确定性问题的数学方法,对于一个计算机专业的人士,应当熟悉其应用在诸如机器翻译,语音识别,垃圾邮

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho

Python学习笔记--未经排版

Python 学习笔记 Python中如何做到Print() 不换行 答:Print("输出内容",end='不换行的分隔内容'),其中end=后面为2个单引号 注:在Python 2.x中,Print "输出内容", 即在输出内容后加一逗号 Python中 is 和 == 的区别 答:Python中的对象包含三要素:id.type.value 其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值 is判断的是a对象是否就是b对象,是通过id来

Python 学习参考书目推荐

Python 学习,参考书目推荐 前言 好的技术书籍可以帮助我们快速地成长,大部分人或多或少地受益于经典的技术书籍.在「Python开发者」微信公号后台,我们经常能收到让帮忙推荐书籍的消息.这类的问题在@Python开发者 微博 和 伯乐在线的 Python小组 讨论中也不绝于耳. 7月3日,伯乐在线在「Python开发者」微信公号发起了一个讨论 (注:PC端无法看到大家的评论,需要关注微信公号后,从微信才可以看到),通过这个讨论话题,在评论中分享对自己帮助很大的Python技术书籍.  (Py

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

Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl.Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理内存使用.它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务. Python上手虽然容易,但与其它任何语言一样要学好Python并非一日之功.我的Python学习还处在基础阶段,偶尔用Python

Python学习系列(一)(基础入门)

Python入门 本系列为Python学习相关笔记整理所得,IT人,多学无害,多多探索,激发学习兴趣,开拓思维,不求高大上,只求懂点皮毛,作为知识储备,不至于落后太远.如果兴趣学习者,推荐一个基础视频:http://edu.51cto.com/lesson/id-11637.html 本文主要介绍Python的相关背景,环境搭建. 一.了解Python 1,关于Python的语言特点: 借用Python官网Https://www.python.org的解释: Python is powerful

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

原文:http://www.cnblogs.com/lanxuezaipiao/p/3543658.html Python是一种面向对象.直译式计算机程序设计语言.它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块.与Scheme.Ruby.Perl.Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理内存使用.它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务. Python上手虽然容