mooc第八周
作者:互联网
自底向上执行,自顶向下设计
以随机数来对运动员比赛胜负进行估计
import random
def printIntro():
print("模拟两个运动员之间的比赛")
def getInputs():
a = eval(input("请输入A选手的能力值(从0-1)"))
b = eval(input("请输入b选手的能力值(从0-1)"))
n = eval(input("模拟比赛的场次"))
return a,b,n
def printSummary(winsA,winsB):
n = winsB+winsA
print("总共模拟了{}场比赛".format(n))
print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA, winsA/n))
print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB, winsB/ n))
def gameOver(a,b):
return a==15 or b==15
def simOneGame(probA,probB):
scoreA,scoreB=0,0
serving = "A"
while not gameOver(scoreA,scoreB):
if serving =="A":
if random.random()<probA:
scoreA += 1
else:
serving = "B"
else:
if random.random() < probB:
scoreB +=1
else:
serving = "A"
return scoreA,scoreB
def simNGames(n,probA,probB):
winsA,winsB=0,0
for i in range(n):
scoreA,scoreB=simOneGame(probA,probB)
if scoreA>scoreB:
winsA+=1
else:
winsB += 1
return winsA,winsB
def main():
printIntro() #介绍背景
probA,probB,n=getInputs() #获取输入的值
winsA,winsB=simNGames(n,probA,probB) #根据A,B的能力值预测获胜多少场
printSummary(winsA,winsB) #输出结果
main()
老师讲的这段代码让我感受到程序的结构化设计。自顶向下,还有高耦合的性能。
这段代码虽然繁琐,但修改起来极其方便,维护性强。
利用random.random()来判断胜负,是否科学,还要多查资料,毕竟有个随机数种子,随机并不是真的随机。
程序设计思维
- 计算思维:抽象问题的计算过程,利用计算机自动化求解
面对汉诺塔问题时,如果不将问题抽象化,很难利用递归去解决。 - 计算生态:竞争发展、相互依存、迅速更迭
没有顶层设计、以功能为单位,还有上面的三个特点,是和API区分的明显特点。
【在这里感受到了开源的不可思议的巨大力量,想使用QGIS、GeoServer去实现自己的目的】 - 用户体验:进度展示、异常处理等
- IPO、自顶向下、模块化、配置化、应用开发
配置化设计是指采取【引擎】+【配置】的方式,将可选参数配置化。如自动轨迹的绘制
Python第三方库安装
PyPI:
pip安装方法:
pip install <第三方库名> 安装命令
pip install -U <第三方库名> 更新第三方库
pip uninstall <第三方库名> 卸载第三方库
pip download <第三方库名> 下载并不安装指定的第三方库
pip show <第三方库名> 列出指定的第三方库的详细信息
pip search <第三方库名> 根据关键词在名称和介绍中来检索相关的第三方库
pip list 列出已安装的第三方库
集成安装方法:
Anaconda
数据计算领域【可以试一试】
UCI页面,有windows上
标签:winsB,mooc,winsA,random,第八,pip,第三方,def 来源: https://blog.csdn.net/GISer_Shi/article/details/98626332