标签:思维 比赛 Python random 生态 计算 gameOver def 函数
一、计算思维 利用计算机求解问题的思维——计算思维
思维种类 | 特征 | 代表 |
实证思维 | 实验和验证 | 物理学科 |
逻辑思维 | 推理和演绎 | 数学学科 |
计算思维 | 设计和构造 | 计算机学科 |
二、程序设计方法论
A:自顶向下
#该python程序命名为:main(MatchAnalysis两个球员A和B分别赢得比赛的概率) #MatchAnalysis.py from random import random #调用random函数 def printIntro(): #必要的说明 print("这个程序模拟两个选手的某种竞技比赛") 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 simNGames(n,probA,probB): #模拟比赛并返回结果,计数循环 winsA,winsB=0,0 for i in range(n): scoreA,scoreB=simOneGame(probA,probB) #设计了一个新的函数simOneGame()来模拟一场比赛 #这个函数需要知道每个球员赢得比赛的概率,返回两个球员的最终得分。 if scoreA > scoreB: winsA +=1 else: winsB +=1 return winsA,winsB def gameOver(a,b): #当任一个球员达到15分时比赛结束 return a==15 or b==15 def simOneGame(probA,probB): # 尽可能地去细节模拟比赛的过程 scoreA,scoreB=0,0 serving='A' #球员A发球 while not gameOver(scoreA,scoreB): #设计了gameOver():函数,来表示比赛结束的条件 #’while‘封装原因:简化根据不同规则修改函数的代价,提高代码可维护性 if serving=="A": if random()<probA/(probA+probB): scoreA+=1 else: serving="B" else: if random()<probB/(probA+probB): scoreB+=1 else: serving="A" return scoreA,scoreB def printSummary(winsA,winsB): #输出结果 n=winsA+winsB print('竞技分析开始,共模拟{}场比赛'.format(n)) print('选手A获胜{}场比赛,占比{:0.1%}'.format(winsA,winsA/n)) print('选手B获胜{}场比赛,占比{:0.1%}'.format(winsB,winsB/n)) def main(): printIntro() probA,probB,n=getInputs() winsA,winsB=simNGames(n,probA,probB) printSummary(winsA,winsB) main()
结果演示:
程序规模 | 运行思维 | |
自顶向下 | 小规模 | 把大问题分解成多个小问题 再将碎片组合起来 |
自底向上 | 中、大规模 | 先运行和测试每一个小函数 再测试由基础函数组成的整体函数 |
B.自底向上
原理:借助python解释器提供import保留字辅助开展单元测试
语法格式:import<源文件名称>
例如:对gameOver()函数进行单元测试
标签:思维,比赛,Python,random,生态,计算,gameOver,def,函数 来源: https://www.cnblogs.com/ataraxiazzr/p/16503024.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。