您的位置:首页 > 编程语言 > Python开发

Python_note8 程序设计方法学+Python第三方库安装+os库

2019-03-08 22:23 190 查看

实例13 体育竞技分析

自顶向下,解决复杂问题的有效方法,将一个小问题表达为若干小问题组成的形式,使用同样方法进一步解决小问题直至可以用计算机简单解决;自底向上

  • 理解自顶向下的设计思维:分而治之;理解自底向上的执行思维:模块化集成
#sportgames.py
from random import random
def printIntro():
print("程序模拟两个选手A和B的某种竞技比赛")
print("程序运行需要A和B的能力值")
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))
def gameOver(a,b):
return a==15 or b==15#谁先到15分则返回true结束while
def simOneGame(probA,probB):#一场比赛
scoreA,scoreB=0,0
serving="A"#A发球
while not gameOver(scoreA,scoreB):
if serving=="A":
if random() < probA:#生成随机数若小于A的能力值,则A加一,是概率体现
scoreA += 1
else:
serving="B"#A输球谁都不得分球权给B
else:
if random() < probB:
scoreB += 1
else:
serving="A"
return scoreA,scoreB
def simNGames(n,probA,probB):#n场比赛
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)
printSummary(winsA,winsB)

main()

Python程序设计思维

计算思维与程序设计

逻辑思维(数学)—实证思维(物理)—计算思维(计算机)
计算思维基于计算机强大的算力和海量数据,抽象计算过程,关注设计和构造,而非因果,以计算机程序为实现的主要手段。

计算生态与python

开源思想深入演化发展,形成了计算生态。没有顶层设计,以功能为单位,竞争发展、相互依存,迅速更迭。同一个功能两个以上第三方库,自然选择。库广泛联系,逐级封装。AlphaGo深度学习算法采用Python语言开源

  • 刀耕火种 -》 站在巨人肩膀
    编程的起点不是算法而是系统,编程如同搭积木,利用计算生态为主要模式
    优质计算生态推荐:http://python123.io
用户体验和软件产品

提高用户体验:进度展示(时间,步骤,循环);异常处理(用户输入,读写文件,输入输出);打印输出;日志文件;帮助信息

基本程序设计模式

IPO;自顶向下;模块化设计,松耦合,紧耦合;配置化设计(程序引擎+配置数据文件);

  • 应用开发(产品定义,系统架构,设计实现,用户体验)
    产品定义不仅是功能定义要考虑商业模式;系统架构,关注数据流模块化体系结构;设计实现,结合可扩展性,灵活性等进行设计优化;用户体验优先

Python第三方库安装

13万+第三方库 https://pypi.org/ 检索第三方库
实例开发区块链相关程序:pypi.org搜索blockchain;挑选合适的第三方库,完成所需功能

  • 安装
    使用pip (命令行下执行)
    pip -h
    pip install <第三方库名>
    pip install -U <库>
    更新
    pip uninstall <库>
    卸载;
    pip download <库>
    下载但不安;
    pip show <库>
    看库信息
    pip search <关键词>
    根据关键词搜索第三方库;
    pip list
    已安装的
  • 集成安装
    Anaconda集成开发工具 https://www.continuum.io 数据计算领域 支持800+库
  • 文件安装方法
    http://www.lfd.uci.edu/~gohlke/pythonlibs/ UCI页面 一批下载了还需要编译的库的编译后版本

模块7 os库使用

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

  • 路径操作:os.path子库,处理文件路径及信息
    os.path.abspath(path)
    返回path在当前系统的绝对路径
    os.path.normpath(path)
    统一用\分隔路径
    os.path.realpath(path)
    相对路径
    os.path.dirname(path)
    返回path中目录名称
    os.path.basename(path)
    获取path中最后文件名
    os.path.join(path,*paths)
    组合path和paths返回一个路径字符串
    os.path.exists(path)
    判断文件或目录是否存在
    os.path.isfile(path)
    是否是已经存在文件
    os.path.isdir(path)

    os.path.getatime(path)
    返回文件或目录上次访问时间
    os.path.getmtime(path)
    返回文件或目录最近一次修改时间
    os.path.getctime(path)
    返回文件或目录创建时间
    os.path.getsize(path)
    文件大小
  • 进程管理:启动系统其他程序
    os.system(command)执行程序或命令command
import os
os.system("C:\\Windows\\System64\\calc.exe")
  • 环境参数:获取系统软硬件信息等环境参数
    os.chdir(path)
    修改当前程序操作的路径
    os.getcwd()
    返回程序当前路径
    os.getlogin()
    获取系统登录名
    os.cpu_count()
    返回cpu数量
    os.urandom(n)
    获取n字节长度的随机字符串,用于加解密运算

实例14 第三方库自动安装脚本

NumPy N维数据表示和运算
Matplotlib 二维数据可视化
PIL 图像处理
Scikit-Learn 机器学习和数据挖掘
Requests HTTP协议访问和网络爬虫
Jieba 中文分词
Beautiful Soup HTML和XML解析器
Wheel Python第三方库文件打包工具
Django Python最流行的Web开发框架
Flask 轻量级Web开发框架
WeRoBot 微信机器人开发框架
SymPy 数学符号计算工具
Pandas 高效数据分析和计算
Networkx 复杂网络和图结构的建模和分析

编写各类自动化运行程序脚本

os.system()

三阶段:函数式编程-面向对象编程-pythonic编程
基础语法-进阶语法-高级语法
python网络爬虫与信息提取-py数据分析与展示-py机器学习应用-py科学计算三维可视化-py+大数据+人工智能-py+嵌入式+可编程硬件
网易云课程 进阶语法

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: