Python程序设计思维练习---体育竞技分析

简介: 体育竞技分析:模拟N场比赛计算思维:抽象 + 自动化模拟:抽象比赛过程,自动模拟N场比赛,当N越大时,比赛结果分析越科学。本次比赛规则:回合制,15分一局,先由一方发球,如胜利,则得1分并继续发球,如失败,则双方分数不改变并交换球权。
  • 体育竞技分析:模拟N场比赛
  • 计算思维:抽象 + 自动化
  • 模拟:抽象比赛过程,自动模拟N场比赛,当N越大时,比赛结果分析越科学。
  • 本次比赛规则:回合制,15分一局,先由一方发球,如胜利,则得1分并继续发球,如失败,则双方分数不改变并交换球权。球员AB的能力为0-1之间的一个数值

思维方式:自顶向下即将一个复杂问题分解成几个问题,再细分成一个个具体的小问题,从而来解决复杂问题。自底向上为自顶向下的逆过程,即解决复杂问题的方法,逐步解决一个个小问题,来达成目的。


1.将体育竞技分析分解为以下几个小步骤

1.1打印程序的介绍性信息式
1.2获得程序运行参数:probA(A的能力值),probB(B的能力值),n(比赛场次)
1.3利用球员AB的能力值,模拟n场比赛
1.4输出球员AB获胜的场次及概率

2.将各个步骤定义成函数来实现

img_8f9ce748924bd5200ec4067ffc02ea7c.png
分解
img_a0ccdd1dad174d94e4e878cbc8955eb4.png
定义函数

3.完整代码

from random import random

def printInfo():    # 打印程序介绍信息
    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 simOneGame(probA, probB):    # 进行一场比赛
    scoreA, scoreB = 0, 0   # 初始化AB的得分
    serving = 'A'         # 首先由A发球
    while not gameOver(scoreA, scoreB):  #用while循环来执行比赛
        if serving == 'A':
            if random() < probA:   # random() 方法返回随机生成的一个实数,它在[0,1)范围内。
                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    # 初始化AB的胜场数
    for i in range(n):
        scoreA, scoreB = simOneGame(probA, probB)
        if scoreA > scoreB:
            winsA += 1
        else:
            winsB += 1
    return winsA, winsB

def gameOver(c, d):    #比赛结束
    return c==15 or d==15

def printSummary(n ,winA, winB):    #打印比赛结果
    print('竞技分析开始,共模拟{}场比赛'.format(n))
    print('选手A获胜{}场比赛,占比{:.2f}%'.format(winA, winA/n*100))
    print('选手B获胜{}场比赛,占比{:.2f}%'.format(winB, winB / n * 100))
def main():
    printInfo()
    probA, probB, n =getInputs()
    winsA, winsB = simNGames(n, probA, probB)
    printSummary(n, winsA, winsB)

main()

4.运行结果分析

img_c899409ecac1b6b89d74a72391f0942a.png
菜鸟互啄
img_597db7024566df8683aacd8c83a4f80c.png
中阶对抗
img_17134350b154e111aa8d99b8b6f3033a.png
皇城PK

分析以上数据得知:对于两位能力相差相同的选手(都为0.05),能力越大的选手竞技时,胜负概率越接近。

本练习来自中国大学MOOC

目录
相关文章
|
1月前
|
存储 分布式计算 大数据
基于Python大数据的的电商用户行为分析系统
本系统基于Django、Scrapy与Hadoop技术,构建电商用户行为分析平台。通过爬取与处理海量用户数据,实现行为追踪、偏好分析与个性化推荐,助力企业提升营销精准度与用户体验,推动电商智能化发展。
|
2月前
|
缓存 监控 算法
唯品会item_search - 按关键字搜索 VIP 商品接口深度分析及 Python 实现
唯品会item_search接口支持通过关键词、分类、价格等条件检索商品,广泛应用于电商数据分析、竞品监控与市场调研。结合Python可实现搜索、分析、可视化及数据导出,助力精准决策。
|
1月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的台风灾害分析及预测系统
针对台风灾害预警滞后、精度不足等问题,本研究基于Python与大数据技术,构建多源数据融合的台风预测系统。利用机器学习提升路径与强度预测准确率,结合Django框架实现动态可视化与实时预警,为防灾决策提供科学支持,显著提高应急响应效率,具有重要社会经济价值。
|
1月前
|
机器学习/深度学习 大数据 关系型数据库
基于python大数据的青少年网络使用情况分析及预测系统
本研究基于Python大数据技术,构建青少年网络行为分析系统,旨在破解现有防沉迷模式下用户画像模糊、预警滞后等难题。通过整合多平台亿级数据,运用机器学习实现精准行为预测与实时干预,推动数字治理向“数据驱动”转型,为家庭、学校及政府提供科学决策支持,助力青少年健康上网。
|
2月前
|
缓存 监控 算法
苏宁item_get - 获得商品详情接口深度# 深度分析及 Python 实现
苏宁易购item_get接口可实时获取商品价格、库存、促销等详情,支持电商数据分析与竞品监控。需认证接入,遵守调用限制,适用于价格监控、销售分析等场景,助力精准营销决策。(238字)
|
2月前
|
监控 算法 数据安全/隐私保护
唯品会 item_get - 获得 VIP 商品详情接口深度分析及 Python 实现
唯品会item_get接口通过商品ID获取商品详情,支持价格、库存、促销等数据抓取,适用于电商分析、竞品监控与价格追踪,结合Python实现可高效完成数据获取、分析与可视化,助力精准营销决策。
|
2月前
|
JSON 缓存 供应链
电子元件 item_search - 按关键字搜索商品接口深度分析及 Python 实现
本文深入解析电子元件item_search接口的设计逻辑与Python实现,涵盖参数化筛选、技术指标匹配、供应链属性过滤及替代型号推荐等核心功能,助力高效精准的电子元器件搜索与采购决策。
|
2月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。