程序设计方法学

news/2025/3/27 9:13:43/

体育竞技分析

问题分析

体育竞技分析

需求:毫厘是多少?

如何科学分析体育竞技比赛?

输入:球员的水平

输出:可预测的比赛成绩

体育竞技分析:模拟N场比赛

计算思维:抽象 + 自动化

模拟:抽象比赛过程 + 自动化执行N场比赛

当N越大时,比赛结果分析会越科学

比赛规则

双人击球比赛:A & B,回合制,5局3胜

开始时一方先发球,直至判分,接下来胜者发球

 球员只能在发球局得分,15分胜一局

这要说到俩个概念,自顶向下的设计和自底向上的执行

自顶向下 解决复杂问题的有效方法

将一个总问题表达为若干个小问题组成的形式

使用同样方法进一步分解小问题

直至,小问题可以用计算机简单明了的解决

自底向上(执行)

逐步组建复杂系统的有效测试方法

分单元测试,逐步组装

按照自顶向下相反的路径操作

直至,系统各部分以组装的思路都经过测试和验证

 

 

 

 

 

 

 这是一个Python程序,用于模拟两个选手A和B进行某种竞技比赛的结果,并给出比赛结果的统计分析。

首先,程序定义了几个函数:

  1. printIntro():用于打印程序的简要介绍。
  2. getInputs():用于获取用户输入的选手A和B的能力值,以及模拟比赛的场次。
  3. simNGames(n, probA, probB):用于模拟n场比赛,并返回选手A和B的胜场数。
  4. gameOver(a,b):用于判断比赛是否结束,当选手A或B的得分达到15分时比赛结束。
  5. simOneGame(probA, probB):用于模拟一场比赛的结果,返回选手A和B的得分。
  6. printSummary(winsA, winsB):用于打印竞技分析结果,包括模拟比赛的场次、选手A和B的获胜场次及占比。

然后,程序调用main()函数,依次执行以下操作:

  1. 打印程序的简要介绍。
  2. 获取用户输入的选手A和B的能力值,以及模拟比赛的场次。
  3. 模拟n场比赛,并返回选手A和B的胜场数。
  4. 打印竞技分析结果,包括模拟比赛的场次、选手A和B的获胜场次及占比。

总体来说,该程序是一个简单的竞技分析模拟程序,通过随机数模拟比赛结果,并对比赛结果进行统计分析,得出选手A和B的胜率。

#!/usr/bin/env python
# -- coding: utf-8 --
# @Time : 2023/4/11 16:50
# @File : 体育竞技分析.py
from random import random
def printIntro():print("这个程序模拟两个选手A和B的某种竞技比赛")print("程序运行需要A和B的能力值(以0到1之间的小数表示)")
def getInputs():a = eval(input("请输入选手A的能力值(0-1): "))b = eval(input("请输入选手B的能力值(0-1): "))n = eval(input("模拟比赛的场次: "))return a, b, n
def simNGames(n, probA, probB):winsA, winsB = 0, 0for i in range(n):scoreA, scoreB = simOneGame(probA, probB)if scoreA > scoreB:winsA += 1else:winsB += 1return winsA, winsB
def gameOver(a,b):return a==15 or b==15
def simOneGame(probA, probB):scoreA, scoreB = 0, 0serving = "A"while not gameOver(scoreA, scoreB):if serving == "A":if random() < probA:scoreA += 1else:serving="B"else:if random() < probB:scoreB += 1else:serving="A"return scoreA, scoreB
def printSummary(winsA, winsB):n = winsA + winsBprint("竞技分析开始,共模拟{}场比赛".format(n))print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA, winsA/n))print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB, winsB/n))
def main():printIntro()probA, probB, n = getInputs()winsA, winsB = simNGames(n, probA, probB)printSummary(winsA, winsB)
main()

python程序设计思维

计算思维与程序设计

第3种人类思维特征

逻辑思维:推理和演绎,数学为代表,A->B B->C A->C -

实证思维:实验和验证,物理为代表,引力波<-实验 -

计算思维:设计和构造,计算机为代表,汉诺塔递归

抽象和自动化

计算思维:Computational Thinking

抽象问题的计算过程,利用计算机自动化求解

计算思维是基于计算机的思维方式

以前就是实证思维,通过查询当地的历史天气的数据,并且根据这样的经验,来猜测第二天的温度。实证思维通过物理,经验的东西来构造未来的值

计算思维,就是通过计算机来演算天气,这样数据更加精确

计算生态与python语言

 优质的计算生态Python123 - 编程更简单

用户体验与软件产品

 

 

 

 

应用开发的四个步骤

 

注:内容来自慕课--嵩天老师 


http://www.ppmy.cn/news/44618.html

相关文章

说说你对 Webpack 的理解?解决了什么问题?

1、对webpack的理解 简单来说&#xff0c;webpack 是一个用于现代JavaScript应用程序的静态模块打包工具。 当 webpack处理应用程序时&#xff0c;它会在内部构建一个依赖图&#xff0c;此依赖图对应映射到项目所需的每个模块&#xff08;不再局限js文件&#xff09;&#xf…

枚举类(自定义实现枚举类)

枚举概述&#xff1a; 是指将变量的值一一列出来&#xff0c;变量的值只限于列举出来的值的范围内。举例&#xff1a;一周只有7天&#xff0c;一年只有12个月等 回想单例设计模式&#xff1a;单例类是一个类只有一个实例 那么多例类就是一个类有多个实例&#xff0c;但不是无限…

办公必备!不再被格式问题困扰,轻松搞定文档转换!

大家平时在工作中会需要将文档转换为其他格式吗&#xff1f; 日常工作中&#xff0c;经常碰到需要文件格式转换的情况&#xff0c;对于掌握了一些转换技能的朋友说&#xff0c;文件格式转换自然不在话下 对于不熟练的朋友来说&#xff0c;想要轻松转换文件格式&#xff0c;就…

如何在TypeScript中使用泛型

介绍 泛型是静态类型语言的基本特征&#xff0c;允许开发人员将类型作为参数传递给另一种类型、函数或其他结构。当开发人员使他们的组件成为通用组件时&#xff0c;他们使该组件能够接受和强制在使用组件时传入的类型&#xff0c;这提高了代码灵活性&#xff0c;使组件可重用…

HTML5 Input 类型

文章目录HTML5 Input 类型Input 类型: colorInput 类型: dateInput 类型: datetimeInput 类型: datetime-localInput 类型: emailInput 类型: monthInput 类型: numberInput 类型: rangeInput 类型: searchInput 类型: telInput 类型: timeInput 类型: urlInput 类型: weekHTML…

安全运营之资产安全信息管理

安全风险管理的三要素分别是资产、威胁和脆弱性&#xff0c;脆弱性的存在将会导致风险&#xff0c;而威胁主体利用脆弱性产生风险。网络攻击主要利用了系统的脆弱性。由于网络管理对象&#xff08;资产&#xff09;自身的脆弱性&#xff0c;使得威胁的发生成为可能&#xff0c;…

Map和object和set的区别:

1.Map&#xff1a; 对象使用方法&#xff1a; set(key, val): 向Map中添加新元素get(key): 通过键值查找特定的数值并返回has(key): 判断Map对象中是否有Key所对应的值&#xff0c;有返回true,否则返回falsedelete(key): 通过键值从Map中移除对应的数据clear(): 将这个Map中的…

c++string相关内容

1. string基本概念本质:string是C风格的字符串&#xff0c;而string本质上是一个类string和 char *区别:char * 是一个指针string 是一个类&#xff0c;类内部封装了char *&#xff0c;管理这个字符串&#xff0c;是一个char*型的容器 特点:string类内部封装了很多成员方法例如…