一、体育竞技分析
基本规则
两个球员,交替用球拍击球
发球权,回合
未能进行一次击打回合结束
首先达到15分赢得比赛

1、自顶向下的设计

 #7_game_2.py
from random import * def main():
printIntro()#介绍程序信息
probA,probB,n = getInputs()#输入参数
winsA, winsB = simNGames(n,probA,probB)#获胜场数
PrintSummary(winsA, winsB) def printIntro():
print('This program simulates a game between two')
print('There are two players, A and B')
print('Probability(a number between 0 and 1)is used') def getInputs():
a = eval(input('What is the prob.player A wins?'))#eval()将str转换为数字型
b = eval(input('What is the prob.player B wins?'))
n = eval(input('How many games to simulate?'))
return a,b,n def simNGames(n,probA,probB):
winsA = 0
winsB = 0
for i in range(n):
scoreA,scoreB = simOneGame(probA,probB)#得分情况
if scoreA >scoreB:
winsA = winsA + 1
else:
winsB = winsB + 1
return winsA,winsB
def simOneGame(probA,probB):
scoreA = 0
scoreB = 0
serving = "A"#开始循环的初始标志
while not gameOver(scoreA,scoreB):
if serving == "A":
if random() < probA:
scoreA = scoreA + 1
else:
serving = "B"
else:
if random() < probB:
scoreB = scoreB + 1
else:
serving = "A"
return scoreA,scoreB def gameOver(a,b):#循环结束的标志
return a==15 or b==15 def PrintSummary(winsA, winsB):
n = winsA + winsB
print('\nGames simulated:%d'%n)
print('Wins for A:{0}({1:0.1%})'.format(winsA,winsA/n))
print('Wins for B:{0}({1:0.1%})'.format(winsB,winsB/n)) if __name__ == '__main__':
main()

载入程序,对各个函数分别测试

整个过程反映了,由顶至下的设计和由下至上的运行,整个编程的思路就是这样。

(2)程序简化

 import random

 def onegame(probA,probB):
scoreA=0
scoreB=0
mark="A"
while mark=="A":
a=random.random()
b=random.random()
a=a*probA
b=b*probB
if a>b:
scoreA+=1
else:
scoreB+=1
if scoreA==15 or scoreB==15:
mark="B"
return scoreA,scoreB def Ngame(n,probA,probB):
numA=0
numB=0
for i in range(n):
scoreA,scoreB=onegame(probA,probB)
if scoreA>scoreB:
numA+=1
else:
numB+=1
return numA,numB def main():
probA=eval(input("probA is :"))
probB=eval(input("probB is :"))
n=eval(input("num is :")) numA,numB=Ngame(n,probA,probB)
print('Games simulated:%d'%n)
print('Wins for A:{0}({1:0.1%})'.format(numA,numA/n))
print('Wins for B:{0}({1:0.1%})'.format(numB,numB/n)) if __name__ == "__main__":
main()

python——体育竞技的更多相关文章

  1. python初体验 ——>>> 模拟体育竞技

    python初体验 ——>>> 模拟体育竞技 一.排球训练营 1. 简介: 模拟不同的两个队伍进行排球的模拟比赛. 2. 模拟原理: 通过输入各自的能力值(Ⅰ),模拟比赛的进行( P ...

  2. python语言程序设计-北京理工大学-嵩天等课件代码整理

    #TempConvert.py TempStr = input("请输入带有符号的温度值: ") if TempStr[-1] in ['F', 'f']: C = (eval(T ...

  3. 【学习笔记】PYTHON语言程序设计(北理工 嵩天)

    1 Python基本语法元素 1.1 程序设计基本方法 计算机发展历史上最重要的预测法则     摩尔定律:单位面积集成电路上可容纳晶体管数量约2年翻倍 cpu/gpu.内存.硬盘.电子产品价格等都遵 ...

  4. Python第八章(北理国家精品课 嵩天等)

    程序设计方法 8.1体育竞技分析实例 from random import random def printIntro(): print("这个程序模拟两个选手A和B的某种竞技比赛" ...

  5. 【pyhon】理想论坛爬虫1.05版,将读取和写DB分离成两个文件

    下午再接再厉仿照Nodejs版的理想帖子爬虫把Python版的也改造了下,但美中不足的是完成任务的线程数量似乎停滞在100个左右,让人郁闷.原因还待查. 先把代码贴出来吧,也算个阶段性成果. 爬虫代码 ...

  6. Linux/Unix System Level Attack、Privilege Escalation(undone)

    目录 . How To Start A System Level Attack . Remote Access Attack . Local Access Attack . After Get Roo ...

  7. SNS社交系统“ThinkSNS V4.6”活动应用功能详解及应用场景举例

    sns社交系统ThinkSNS目前拥有功能:朋友圈(微博).微吧(论坛).频道.积分商城.IM即时聊天.直播.问答.活动.资讯(CMS).商城.广场.找人.搜索.评论.点赞.转发.分享.话题.积分.充 ...

  8. 深耕品质,腾讯WeTest《2018中国移动游戏质量白皮书》正式发布

    本文由云+社区发表 作者:腾讯WeTest 原文链接:https://wetest.qq.com/lab/view/437.html 对于游戏行业的不少人来说,2018年是一个多事之秋. 放眼大局,游 ...

  9. 篮球游戏AI预研

    参考文献: 1.体育竞技游戏的团队AI http://blog.csdn.net/skywind/article/details/44922877 2.

随机推荐

  1. java网络编程——socket实现简单的CS会话

    还记得当年学计网课时用python实现一个简单的CS会话功能,这也是学习socket网络编程的第一步,现改用java重新实现,以此记录. 客户端 import java.io.*; import ja ...

  2. Java 8 Optional 良心指南,建议收藏

    想学习,永远都不晚,尤其是针对 Java 8 里面的好东西,Optional 就是其中之一,该类提供了一种用于表示可选值而非空引用的类级别解决方案.作为一名 Java 程序员,我真的是烦透了 Null ...

  3. Lambda 方法引用

    1.方法引用:若Lambda 体中的内容有方法已经实现了,我们可以使用“引用方法”(可以理解为方法引用是Lambda表达式的另外一种表现形式) 方法引用主要有三种语法格式: ①  对象 :: 实例方法 ...

  4. IOS 7 UITableView cell lines不能靠左解决方法

    添加一句:[UITableViewappearance].separatorInset=UIEdgeInsetsZero; 就可以解决啦.

  5. Simulink仿真入门到精通(六) Simulink模型保存为图片

    6.1 截图保存方式 Ctrl+Alt+A 6.2 拷贝试图方式 Edit→Copy Current View to Clipboard 6.3 saveas函数 用于保存figure或者simuli ...

  6. Python3 面向对象之:多继承

    多继承 class ShenXian: # 神仙 def fei(self): print("神仙都会⻜") class Monkey: # 猴 def chitao(self): ...

  7. js 数组 方法

    instanceof 检测一个对象是否是数组;(用来对付复杂数据类型;)// 简单数据类型 typeof ;A instanceof B // A是不是B造出来的;例: var arr = [1,2, ...

  8. Asp.Net Core 中IdentityServer4 授权原理及刷新Token的应用

    一.前言 上面分享了IdentityServer4 两篇系列文章,核心主题主要是密码授权模式及自定义授权模式,但是仅仅是分享了这两种模式的使用,这篇文章进一步来分享IdentityServer4的授权 ...

  9. 苹果笔记本 安装 ubuntu 默认没有无线网卡 的 解决方案

    sudo apt-get update sudo apt-get install bcmwl-kernel-source

  10. SpringBoot2整合Redis多数据源

    配置文件属性 spring: redis: database: 1 host: 192.168.50.144 port: 6379 password: timeout: 600 #Springboot ...