码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2019-03-02 18:33:25      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:sim   mat   over   bsp   port   jpg   else   比赛   小数   

学习过程记录:

一,需求及框架:

技术图片

二:程序代码:

 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()

程序运行结果如下:

技术图片

 

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

标签:sim   mat   over   bsp   port   jpg   else   比赛   小数   

原文地址:https://www.cnblogs.com/xier/p/10462266.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!