写在前面:这一章比较偏重设计思维和外围环境的配置,没有pythony语法的硬知识,比较轻松,赶考试的同学可以跳有再在来看!
【第八周】程序设计方法学
实例13:体育竞技分析
计算思维:抽象+自动化
模拟比赛过程进行N次模拟结果
问题分析:
- 自顶向下和自底向上
每一个小模块的具体代码看下面的代码
from random import random
#单纯友好提示用
def 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,n#返回元组类型
#结果打印
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))
#只要有一个人分数达到15就返回1
def gameOver(a,b):
return a==15 or b==15
#模拟一场比赛程序
def simOneGame(proA,proB):
scoreA,scoreB=0,0
serving="A"#先是A发球局
while not gameOver(scoreA,scoreB):#gameOver判断有没有一方达到15分,没达到就在里面一直比
if serving=="A":
if random()<proA:#产生随机数,小于A的能力值就算A得一分
scoreA+=1
else:
serving="B"#如果A没得分就换B发球
else:
if random()<proB:
scoreB+=1
else:
serving = "A"
return scoreA,scoreB
#模拟n场比赛程序,套模拟一场比赛程序的代码
def simNGames(n,probA,probB):
winsA,winsB=0,0
for i in range(n):
scoreA,scoreB=simOneGame(probA,probB)
if scoreA>scoreB:
winsA+=1#A赢的局数+1
else:
winsB+=1
return winsA,winsB
def main():
printIntro()
probA,probB,n=getInputs()
winsA,winsB=simNGames(n,probA,probB)
printSummary(winsA,winsB)
main()
太高级了,落到具体我还是喜欢用一个函数写一个函数QAQ,大方向安排好了就行
python程序设计思维
- 计算思维与程序设计
计算思维特点:抽象和自动化
栗子:
量化分析股市
- 计算生态与python语言
开源运动:从大教堂到集市 - 计算生态:没有顶层设计,以功能为单位,具备三个特点:
竞争发展,相互依存,迅速更迭 - python:13w个库,互相竞争,逐级封装,相互关联和依存
AlphaGo深度学习算法采用Python语言开源
API!=生态
API是经过设计的
- 用户体验和软件产品
要感受用户体验用一下b站再用一下学习通就知道了- -
进度提示,输入判断,异常提示 - 基本的程序设计模式
还是那句高内聚低耦合
配置化设计:将程序和数据文件分离
应用开发的步骤:1.产品定义2.系统架构3.设计与实现4.用户体验
python第三方库安装
查询第三方库: python社区.
https://www.pypi.org
-
法一:pip命令行安装方法
查询例如:
查询的信息是要在库的介绍信息或者库的名称信息中出现的才会被检索出来
注意这种条件适合大部分方法,但是要联网,最好加几个镜像 -
法二:集成安装方法
适合于数据分析 -
法三:文件安装方法
可以通过如下网站找到需要编译的库的直接安装版本
例子:
模块7:os库
路径操作
access modify create
可以使用time库的.ctime函数将其变成年月日形式
进程管理
用于调用外部程序
直接打开或给出参数打开
例子:在画图中打开文件
环境参数
有些不能够被打印出来用16进制显示
实例14:第三方库自动安装脚本
#用脚本,通过os的system执行命令批量安装库
import os
libs={"numpy","matplotlib","pillow","sklearn","requests",\
"jieba","beautifulsoup4","wheel","networkx","sympy"\
"pyinstaller","django","flask","werobot","qyqt5",\
"pandas","pyopengl","pypdf2","docopt","pygame"}
try:
for lib in libs:
os.system("pip install "+lib)
print("install {} successful".format(lib))
except:
print("Failed install {}".format(lib))
我只是敲了一遍熟悉熟悉,并没有运行哈,如果有安装失败还是试着一个一个来或者多加几个镜像源吧