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 ...
随机推荐
- 用bytomswap进行“跨链”资产转换
bytom是专注资产领域的公有区块链平台,最近开发者社区基于比原做了一款资产转换平台.我们可以在上面通过自己现有的资产在比原上发行资产.然后达到资产转换的目的. 一. 以太币资产转换成比原上的资产 首 ...
- R apply() 函数和 tapply() 函数
apply(a,b,c) a是矩阵 b是行或列的代表,1是行,2是列 c是执行函数,如求和-sum,求平均-mean,求-range tapply(a,b,c) a是一个一维数据, ...
- linux下查看进程命令
他们都是用来显示当前运行的进程,但是: ps -aux 是用BSD的格式来显示python这个进程显示的项目有:USER , PID , %CPU , %MEM , VSZ , RSS , TTY , ...
- JS中使用时间戳,获取当前日期,计算前一周的日期~
今天项目中用到了一点 随便记录一下 function timestampToTime(timestamp) { );//时间戳为10位需*1000,时间戳为13位的话不需乘1000 var Y = d ...
- hello1
1:选择hello1文件夹并单击“打开项目”.展开“Web页”节点,然后双击该index.xhtml文件以在编辑器中查看它. 该index.xhtml文件是Facelets应用程序的默认登录页面.在典 ...
- Java多线程——Condition条件
简介 Condition中的await()方法相当于Object的wait()方法,Condition中的signal()方法相当于Object的notify()方法,Condition中的signa ...
- Guava:好用的java类库 学习小记
基础功能 google guava中定义的String操作 在google guava中为字符串操作提供了很大的便利,有老牌的判断字符串是否为空字符串或者为null,用指定字符填充字符串,以及拆分合并 ...
- decltype typename
decltype((variable))总是引用类型,但是decltype(variable)只有当variable是引用类型时才是引用类型. #include <iostream> #i ...
- 001——使用composer安装ThinkPHP5
composer create-project topthink/think tp5 --prefer-dist
- java通过StringToKenizer获取字符串中的单词根据空格分离-简写版
public class StringToKenizer { public static void main(String[] args) { String strin = "Hello J ...