博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python:学习自顶向下程序设计:竞技体育模拟
阅读量:4680 次
发布时间:2019-06-09

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

学习过程记录:

一,需求及框架:

二:程序代码:

1 #sports.py 2 from random import random 3  4 def main():                            #熟悉函数的调用 5     printInfo() 6     probA,probB,n = getInputs() 7     winsA,winsB = simNGames(n,probA,probB) 8     printSummary(winsA,winsB) 9 10 def printInfo():11     print("本程序是竞技体育模拟分析系统")12     print("需要输入选手双方的能力值(0到1之间的小数)")13 14 def getInputs():15     a = eval(input("输入选手A的能力值(0到1的小数):"))16     b = eval(input("输入选手B的能力值(0到1的小数):"))17     n = eval(input("输入比赛场次:"))18     return a,b,n19 20 def gameover(scoreA,scoreB):        #任意一方比分达到15球,结束本局比赛21     return scoreA == 15 or scoreB == 1522 23 def simOneGame(probA,probB):        #模拟单局比赛,15球一局,输球则换发24     scoreA,scoreB = 0,025     serving = "A"                    #这里是赋值,不是等于(提醒自己)26     while not gameover(scoreA,scoreB):27         if serving == "A":28             if random() < probA:29                 scoreA += 130             else:31                 serving = "B"32         else:33             if random() < probB:34                 scoreB += 135             else:36                 serving = "A"37     return scoreA,scoreB        38 39 def simNGames(n,probA,probB):        #模拟n场比赛,返回选手双方输赢场次40     winsA,winsB = 0,041     for i in range(n):42         a,b = simOneGame(probA,probB)#模拟每一场比赛,都要调用这个单场的43         if a > b:                     #函数计算随机结果44             winsA += 145         else:46             winsB += 147     return winsA,winsB48 def printSummary(winsA,winsB):49     summ = winsA + winsB50     print("模拟{}场比赛".format(summ))51     print("选手A胜{}场,胜率为{:0.1%}".format(winsA,winsA/summ))52     print("选手B胜{}场,胜率为{:0.1%}".format(winsB,winsB/summ))53 main()

程序运行结果如下:

 

转载于:https://www.cnblogs.com/xier/p/10462266.html

你可能感兴趣的文章