• python:学习自顶向下程序设计:竞技体育模拟


    学习过程记录:

    一,需求及框架:

    二:程序代码:

     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,n
    19 
    20 def gameover(scoreA,scoreB):        #任意一方比分达到15球,结束本局比赛
    21     return scoreA == 15 or scoreB == 15
    22 
    23 def simOneGame(probA,probB):        #模拟单局比赛,15球一局,输球则换发
    24     scoreA,scoreB = 0,0
    25     serving = "A"                    #这里是赋值,不是等于(提醒自己)
    26     while not gameover(scoreA,scoreB):
    27         if serving == "A":
    28             if random() < probA:
    29                 scoreA += 1
    30             else:
    31                 serving = "B"
    32         else:
    33             if random() < probB:
    34                 scoreB += 1
    35             else:
    36                 serving = "A"
    37     return scoreA,scoreB        
    38 
    39 def simNGames(n,probA,probB):        #模拟n场比赛,返回选手双方输赢场次
    40     winsA,winsB = 0,0
    41     for i in range(n):
    42         a,b = simOneGame(probA,probB)#模拟每一场比赛,都要调用这个单场的
    43         if a > b:                     #函数计算随机结果
    44             winsA += 1
    45         else:
    46             winsB += 1
    47     return winsA,winsB
    48 def printSummary(winsA,winsB):
    49     summ = winsA + winsB
    50     print("模拟{}场比赛".format(summ))
    51     print("选手A胜{}场,胜率为{:0.1%}".format(winsA,winsA/summ))
    52     print("选手B胜{}场,胜率为{:0.1%}".format(winsB,winsB/summ))
    53 main()

    程序运行结果如下:

    蜗牛跑的慢,是因为没有腿儿!
  • 相关阅读:
    一个cs架构的在线考试系统
    TreeComboBox控件范例
    new和override修饰符的区别
    Hello cnblogs
    MapInfo图层坐标系统转换
    C#调用新浪微博API生成RSS资源文件
    MapInfo图层格式转ArcGIS图层格式
    用ArcGIS的ArcToolbox进行地图切割
    VS2008智能提示消失的解决方法
    【学习笔记】零基础C#窗口程序开发入门
  • 原文地址:https://www.cnblogs.com/xier/p/10462266.html
Copyright © 2020-2023  润新知