300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 北京理工大学-嵩天python语言程序设计-8-程序设计方法学

北京理工大学-嵩天python语言程序设计-8-程序设计方法学

时间:2019-09-03 14:20:49

相关推荐

北京理工大学-嵩天python语言程序设计-8-程序设计方法学

本节的主要内容包括:

8.1体育竞技分析

8.2Python程序设计思维

8.3Python第三方库安装

8.4 os库的基本使用

8.5第三方库自动安装脚本

本节的主要目标

-方法论

理解并掌握一批Python程序设计思维

-实践能力

学会编写更有设计感的程序

8.1体育竞技分析

-需求:如何分析体育竞技比赛?

-输入:球员水平

-输出:可预测的比赛成绩

模拟N场比赛

-计算思维:抽象+自动化

-模拟:抽象比赛过程+自动化执行N场比赛

-当N越大时,比赛结果分析会更科学

比赛规则

-双人击球比赛:A和B,回合制,5局3胜

-开始时一方先发球,直至判分,接下来胜者发球

-球员只能在发球局得分,15分胜一局

自顶向下(分而治之)

-将一个总问题表达为若干个小问题组成的形式

-使用同样的方法进一步分解小问题

-直至小问题可以用计算机简单明了的解决

自底向上(执行)(模块化集成)

-逐步组建复杂的有效测试方法。

-分单元测试,逐步组装。

-按照自顶向下相反的路径操作。

-直至,系统各部分以组装的思路都经过测验和验证。

8.1体育竞技分析的程序总体框架及步骤

-步骤1:打印程序的介绍性信息式 printInfo()

-步骤2:获得程序运行参数:proA,proB和n GetInput()

-步骤3:利用球员A和B的能力值,模拟n局比赛 simNGames()

-步骤4:输出球员A和B获胜比赛的场次及概率 printSummary()

问题分解

第一阶段信息打印程序编写printInfo()

第一阶段编写获取信息的函数Getinputs()

第一阶段编写球员能力值获取函数

第二阶段 模拟N局比赛

当比赛成绩大于15分的时候,比赛结束

完整的程序设计构思

关于竞技比赛分析的代码

from random import randomdef printIntro():print("这个程序模拟两个选手A和B的某种竞技比赛")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,ndef printSummary(winsA,winsB):n=winsA+winsBprint("竞技分析开始,共模拟{}场比赛".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==15def simOneGame(probA,probB):scoreA,scoreB=0,0serving = "A"while not gameOver(scoreA,scoreB):if serving=="A":if random()<probA:scoreA += 1else:serving="B"else:if random()<probB:scoreB += 1else:serving="A"return scoreA,scoreBdef simNGames(n,probA,probB):winsA,winsB=0,0for i in range(n):scoreA,scoreB=simOneGame(probA,probB)if scoreA>scoreB:winsA += 1else:winsB += 1return winsA,winsBdef main():printIntro()probA,probB,n=getInputs()winsA,winsB=simNGames(n,probA,probB)printSummary(winsA,winsB)main()

8.2节python程序设计思维

8.2.1计算思维与程序设计

-逻辑思维:推理和演绎,数学代表为A->B;B->C则得到A->C

-实证四位:实验和验证,物理学代表,引力波和实验

-计算思维:设计和构造,计算机为代表,汉诺塔递归

Computational Thinking 抽象问题的计算过程,利用计算机自动化求解

8.2.2计算生态与Python 语言

-竞争发展;相互依存;迅速更迭

-跟随创新、集成创新、原始创新

8.2.3用户体验与软件产品

方法1:进度展示

-如果程序设计需要计算时间,可能产生等待,请增加进度条展示

-如果程序有若干步骤,需要提示用户,请增加进度展示

-如果程序可能存在大量 次数的循环,请增加进度展示

方法2:异常处理

-当获得用户输入,对合规性需要检查,需要异常处理

-当读写文件时,对结果进行判断,需要异常处理

-当进行输入输出时,对运算结果进行判断,需要异常处理

其他类方法

-打印输出:特定位置,输出程序运行的过程信息

-日志文件:对程序异常及用户实验进行定期记录

-帮助信息;给用户多种方式提供帮助信息

8.2.4基本程序设计模式

程序的基本模式

IPO

-Input

-Process

-Output

-自顶向下

-模块化设计

-配置化设计:引擎+配置:程序执行和配置分离,将可选参数配置优化

-应用开发:产品定义,系统架构,设计与实现,用户体验

8.3Python第三方库的安装

-PyPI: Python Package Index

-由PSF维护的展示全球Python计算生态的主站

-学会检索并利用PyPI,找到合适的第三方库开发程序

-/

8.3.1安装Python第三方库的三种方法

1第三方库的pip安装方法,适合99%的第三方库的安装

pip –hpip install <第三方库名> # 安装指定的第三方库pip install –U <第三方库名> # 使用-U标签更新已安装的指定第三方库pip uninstall <第三方库名> # 卸载指定的第三方库pip download <第三方库名> # 下载但不安装指定的第三方库pip show <第三方库名> # 列出某个指定第三方库的详细信息pip search <关键词> # 根据关键词在名称和介绍中搜索第三方库pip list # 列出当前系统已经安装的第三方库

2.集成安装

结合特定python开发工具批量安装,如Anaconda

3.某些第三方库pip下载后,需要编译再安装

文件安装方法

使用UCI网页

https://www.lfd.uci.edu/~gohlke/pythonlibs/

本节小结

8.4os库的基本使用

os库提供通用的、基本的操作系统交互功能

-路径操作:os.path子库,处理文件路径及信息

-进程管理:启动系统中的其他程序

-环境参数:获得系统软硬件信息等环境参数

8.4.1os库之路径操作

os.path子库以path为入口,用于惭怍和处理文件路径

import os.pathimport os.path as op

8.4.2os库之进程管理

os.system(command)

-执行程序或命令command

-在windows系统中,返回值为cmd的调用返回信息

import osos.system("C:\\Windows\\System32\\calc.exe")>>>0 # 调用成功,返回0

8.44.3 os库之环境参数

8.5第三方库自动安装脚本

-需求:批量安装第三方库需要人工干预,能否自动安装?

-自动执行pip逐一根据安装需求安装

#BatchInstall.pyimport oslibs = {"numpy","matplotlib","pillow","sklearn","requests",\"jieba","beautifulsoup4","wheel","networkx","sympy",\"pyinstaller","django","flask","werobot","pyqt5",\"pandas","pyopengl","pypdf2","docopt","pygame"}try:for lib in libs:os.system("pip install " + lib)print("Successful") except:print("Failed Somehow")

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。