博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
羽毛球比赛
阅读量:7107 次
发布时间:2019-06-28

本文共 1998 字,大约阅读时间需要 6 分钟。

1.将羽毛球比赛分析分解为以下几个小步骤

1.1打印程序的介绍性信息式

1.2获得程序运行参数:A(A的能力值),B(B的能力值),n(比赛场次)
1.3利用球员AB的能力值,模拟n场比赛
1.4输出球员AB获胜的场次及概率

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

    代码如下:

# -*- coding: utf-8 -*-"""Spyder EditorThis is a temporary script file.author@foldline 学号:2018310143029"""from random import *#顶层设计def main():    printIntroduce()#打印程序的介绍信息    probabilityA,probabilityB,n=getInputs()#通过getsInputs函数来获取2个球员的能力值和比赛次数    winsA,winsB=simulateNGames(n,probabilityA,probabilityB)#通过simulateNGames()求得2个球员在n次比赛中获胜的次数    printSummary(winsA,winsB)#通过printSummary()来输出比赛的结果信息    #第二阶段def printIntroduce():    print('学号:2018310143029')    print('这个程序模拟两个选手A和B的羽毛球竞技比赛')    print('程序运行需要A和B的能力值')    def getInputs():    a=eval(input('请输入选手A的能力值(0~1):'))    b=eval(input('请输入选手A的能力值(0~1):'))    n=eval(input('比赛胜利至少需要的局数:'))    return a,b,ndef simulateNGames(n,probabilityA,probabilityB):    '''定义球员A,B赢得比赛的次数,初始值为0,        通过for循环来模拟n次比赛        用simulateOneGame()来模拟一场比赛'''    winsA,winsB=0,0    while not judge(n,winsA,winsB):        '''返回本场比赛2个球员的得分,根据得分来确定本场比赛的胜负'''        scoreA,scoreB=simulateOneGame(probabilityA,probabilityB)        if scoreA>scoreB:            winsA+=1        else:            winsB+=1    return winsA,winsBdef printSummary(winsA,winsB):    n=winsA+winsB    print('\n比赛开始,共模拟%d场比赛'%n)    print('选手A获胜{}场比赛,占比{:0.1%}'.format(winsA,winsA/n))    print('选手B获胜{}场比赛,占比{:0.1%}'.format(winsB,winsB/n))    #第三阶段def simulateOneGame(probabilityA,probabilityB):    '''每场比赛,2个球员的得分初始为0,设定每场比赛总是A先发球,        用random函数生成一个随机小数,范围在【0,1)内'''    scoreA,scoreB=0,0    starting='A'    while not gameOver(scoreA,scoreB):        if starting=='A':            if random()
29 or b>29: return True elif a>20 or b>20: if abs(a-b)>1: return True else: return False def judge(n,winsA,winsB): if winsA==n or winsB==n: return True else: return Falsemain()

3.运行结果如图:

3.1.能力值高:

3.2.能力值低:

4.用pyinstaller打包可执行文件:

 

转载于:https://www.cnblogs.com/foldline/p/10870061.html

你可能感兴趣的文章
一个结束,也是一个开始。
查看>>
MongoDB中索引的一点记录
查看>>
深入Java虚拟机之虚拟机体系结构
查看>>
ELK实战之Kibana部署及message日志收集
查看>>
Bitcoin的解决的一个核心问题是什么
查看>>
java NIO2(file io)
查看>>
Spring+SpringMVC+MyBatis+Maven框架整合
查看>>
【读书笔记】06 | 白话容器基础(二):隔离与限制
查看>>
Django 学习笔记(二)
查看>>
Linux系统的grep以及正则表达式浅析!
查看>>
Orange的扩展插件Widgets开发(七)-GUI Control
查看>>
用python实现银行转账功能
查看>>
python学习笔记---列表
查看>>
分省多线路智能DNS系统wddns 1.6发布
查看>>
sed命令介绍 及实例(替换换行符及大小写替换)
查看>>
Decorator 装饰器小记
查看>>
Centos6.5搭建Wiki
查看>>
linux 清空文件内容的方法
查看>>
2018“硅谷技划”随笔(三):人工智能火热背后的真正温度
查看>>
综合技术 --ORM
查看>>