python体育竞技分析,python语言程序设计(MOOC 嵩天)第八章 学习笔记(0304)

第八章 程序设计方法学

8.1 体育竞技分析

(1)分析

用计算机去模拟N场比赛的进行

抽象比赛过程+自动执行N场比赛

(2)自顶向下设计

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

使用同样的方法处理小问题

直到每个小问题都能被计算机清晰的解决

(3)自底向上执行

逐步组建复杂系统并能够完成有效测试:

分单元测试,逐步组装

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

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

#自顶向下的设计和自底向上的执行时有效的通路组合

(4)程序整体设计与步骤

①打印程序的介绍性信息

-printIntro()

②获得程序运行参数:ProA、ProB、n

-getInputs()

③利用球员A和B的能力值,模拟n局比赛

-simNGames() ---->>>>-simOneGame()----->>>>-gameOver()

④输出球员A和B获胜比赛的场次及概率

-printSummary()

(5)按部分进行设计

#介绍性内容,提高用户体验:

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

#模拟N次比赛

def simNGames(n,ProA,ProB):

winsA,winsB = 0,0

for i in range(n):

scoreA,scoreB = simOneGame(ProA,ProB)

if scoreA > scoreB:

winsA +=1

else:

winsB +=1

return winsA,winsB

#模拟一局比赛

def simOneGame(ProA,ProB):

scoreA,scoreB = 0,0

serving = "A"

while not gameOver(scoreA,scoreB):

if serving == "A":

if random() < ProA:

scoreA += 1

else:

serving = "B"

else:

if random() < ProB:

scoreB += 1

else:

serving = "A"

return scoreA,scoreB

#判断一局比赛是否结束

def gameOver(a,b):

return a==15 or b==15

#当a或b等于15时返回true

#在调用时a、b分别对应选手A、B的当前的分

#主函数

from random import random

def main():

printIntro()

ProA,ProB,n = getInputs()

winsA,winsB = simNGames(n,ProA,ProB)

printSummary(winsA,winsB)

8.2 python程序设计思维

(1)三种人类思维特征

逻辑思维:推理和演绎,以数学为代表

实证思维:实验和验证,以物理为代表

计算思维:设计和构造,计算机为代表

(2)计算思维

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

#计算思维是基于计算机的抽象思维

(3)量化分析

利用大量的历史数据,通过机器学习的方法,预测未来的涨跌,并使用计算机自动完成交易

(4)计算生态

开源运动---->>>>大教堂模式、集市模式

开源思想深入演化和发展,形成了计算生态—技术的自我演化路径

e43f252984a72232790022e76b55c5a6.png

计算生态的特征:

以开源项目为代表的大量第三方库----python提供超15W个第三方库

库的建设经过野蛮生长和自然选择----同一个功能可以由2个以上的库完成

库之间相互关联使用,依存发展----python库之间广泛联系,逐级封装

社区庞大,新技术更迭迅速----AlphaGo深度学习算法采用python语言开源

#API(应用程序编写接口)是经过顶层设计的产物,不是野蛮生长、发展出来的产物

(5)用户体验:从实现功能到关注体验

用户体验:从用户的角度对产品建立主观感受和认识

进度展示、异常处理、打印输出、日志文件、帮助信息

(6)程序设计模式

IPO、自顶向下设计、模块化设计、配置化设计

(7)应用开发的步骤:从应用需求到软件产品

产品定义、系统架构、设计实现、用户体验

8.3 python第三方库

pypi.org

PSF

pip方法、集成方法、文件方法

(1)pip(主要方式)

pip install

pip install -U

pip uninstall

pip download

pip show #展示库的介绍信息

pip search #在介绍信息中搜索关键词,展示相关库

pip list #列出已安装第三方库

(2)集成安装

Anaconda-------数据分析、数据展示

(3)文件安装

UCI

8.4 OS库的使用

(1)基本介绍

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

#常用路径操作、进程管理、环境参数

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

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

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

(2)os库之路径操作

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

import os.path or import os.path as op

Ⅰ os.path.abspath(path):返回path在当前系统中的绝对路径

Ⅱ os.path.normpath(path):归一化path的表示形式,统一用\分隔

Ⅲ os.path.relpath(path):返回当前程序与文件之间的相对路径

Ⅳ os.path.dirname(path):返回path中的目录名称

Ⅴ os.path.basename(path):返回path中最后的文件名称

Ⅵ os.path.join(path,*paths):组合path与paths,返回一个路径字符串

Ⅶ os.path.exists(path):判断path对应的文件和目录是否存在,返回True or False

Ⅷ os.path.isfile(path):判断path所对应是否为已存在文件,返回True or False

Ⅸ os.path.isdir(path):判断path所对应是否为已存在目录,返回True or False

b7a79bdceff7c9b048c37177b1a43652.png

os.path.getatime(path):返回path对应文件或目录上一次的访问时间

os.path.getmtime(path):返回path对应文件或目录上一次的修改时间

os.path.getctime(path):返回path对应文件或目录的创建时间

time.ctime:将系统内部的时间数字转变为用户可读的形式

ⅩI os.path.getsize(path):返回path对应文件的大小,以字节为单位

(3)os库之进程管理

os.system(command)

linux执行命令

windows返回执行命令后的返回信息

(4)os库之环境参数:获取、改变系统的环境信息

os.chdir(path):修改当前程序操作的路径

os.getcwd():返回程序的当前路径

os.getlogin():获得当前系统登陆的用户名

os.cpu_count():获得当前系统cpu的数量

os.urandom(n):随机生成n个字节长度的随机字符串,通常用于解加密运算

8.5 第三方库自动安装脚本

#BatchInstall.py

import os

libs = {, and balabala}

try:

for lib in libs:

os.system("pip install"+lib)

print("successful")

except:

print("Failed Somehow")

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值