热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于体育的python毕业设计_python自顶向下的设计方法进行体育竞技分析

1自顶向下的设计方法:以一个总问题开始,试图把它表达为很多小问题组成的解决方案。再用同样的技术依次攻破每个小问题,最终问题变得非常小&#x

1自顶向下的设计方法:

以一个总问题开始,试图把它表达为很多小问题组成的解决方案。再用同样的技术依次攻破每个小问题,最终问题变得非常小,以至于可以很容易解决。然后只需把所有的碎片组合起来,就可以得到一个程序。

顶层设计:自顶向下设计中最重要的是顶层设计。 以体育竞技分析为例,可以从问题的IPO描述开始。大多数程序都可以简单将IPO 描述直接用到程序结构设计中,体育竞技分析从用户得到模拟参数模拟比赛,最后输出结果。

步骤1 输出一些介绍信息,针对提升用户体验十分有益。

顶层设计一般不写出具体代码,仅给出函数定义,其中,printIntro()函数打印一些必要的说明

步骤2 获得用户输入。

通过函数将输入语句及输入格式等细节封装或隐藏,只需要假设程序如果调用了getInputs()函数即可获取变量 probA, probB 和 n 的值。这个函数必须为主程序返回这些值,截止第2步

步骤3 需要使用probA、probB 模拟n场比赛。 此时,可以采用解决步骤2的类似方法,设计一个simNGames()函数来模拟n场比赛,并返回结果。按照体育竞技问题的要求,该函数需要模拟比赛,并获得球员A 和球员B 赢得比赛的结果。

步骤4 输出结果,设计思想类似,仍然只规划功能和函数

因此,原问题被划分为了4 个独立的函数:printIntro(),getInputs(),simNGames()和printSummary()。分解过程让程序员在这一步不必关心具体细节而专心考虑程序的结构设计。

第 n 层设计

def simNGames(n,probA,porbB):

winsA,winsB=0,0

for i in range(n):

scoreA,scoreB=simOneGame(porbA,porbB)

if scoreA>scoreB:

winsA+=1

else:

winsB+=1

reture winsA,winsB

simNGames()函数是整个函数的核心,其基本思路是模拟n场比赛,并跟踪记录每个球员赢得了多少比赛。

下面·是·羽毛球·实例·

比赛规则·

1. 21 分制,3局2胜为佳2. 每球得分制3. 每回合中,取胜的一方加 1 分4. 当双方均为 20 分时,领先对方 2 分的一方赢得该局比赛5. 当双方均为 29 分时,先取得 30 分的一方赢得该局比赛6. 一局比赛的获胜方在下一局率先发球

def simOneGame(probA,porbB):

scoreA,score=0,0

serving="A"

while not gameOver(scoreA,scoreB):

if serving =="A":

if random()

scoreA+=1

else:

serving="B"

else:

if random()

scoreB+=1

else:

serving="A"

return scoreA,scoreB

整个程序如下

from random import random

def printInfo():

print("这个程序模拟两个选手A和B的羽毛球竞技比赛")

print("程序需要两个选手的能力值0-1")

def getInput():

a = eval(input("请输入选手A的能力值(0-1):"))

b = eval(input("请输入选手B的能力值(0-1):"))

m=eval(input("比赛的局数:"))

n = eval(input("模拟比赛的场次:"))

return a,b,m,n

def printSummary(winsA,winsB):

n = winsA + winsB

print("竞技分析开始,共模拟{}场比赛".format(n))

print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA,winsA/n))

print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB,winsB/n))

def simNGames(m,n,probA,probB):

winsA,winsB = 0,0

wa,wb=0,0

for i in range(n):

for i in range(m):

scoreA,scoreB = simOneGame(probA,probB)

if scoreA > scoreB:

wa += 1

else:

wb += 1

if wa==2:

winsA+=1

wa,wb=0,0

break

if wb==2:

winsB+=1

wa,wb=0,0

break

return winsA,winsB

def simOneGame(probA,probB):

scoreA,scoreB = 0,0

serving = "A"

while not gameOver(scoreA,scoreB):

if serving == "A":

if random()

scoreA += 1

else:

serving = "B"

else:

if random()

scoreB += 1

else:

serving = "A"

return scoreA,scoreB

def gameOver(a,b):

if(a>=20 or b>=20):

if(abs(a-b)&#61;&#61;2 and a<&#61;29 and b<&#61;29):

return True

else:

return a&#61;&#61;30 or b&#61;&#61;30

else:

return False

def main():

printInfo()

probA,probB,m,n &#61; getInput()

winsA,winsB &#61; simNGames(m,n,probA,probB)

printSummary(winsA,winsB)

main()

运行截图&#xff1a;



推荐阅读
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
author-avatar
手机用户2502939543
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有