python学习笔记——第八章

8章 程序设计方法学

一、实例13: 体育竞技分析

总体步骤:

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

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

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

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

代码:

    #MatchAnalysis.py

    from random import random

扫描二维码关注公众号,回复: 7962370 查看本文章

    def printIntro():

        print("这个程序模拟两个选手AB的某种竞技比赛")

        print("程序运行需要AB的能力值(以01之间的小数表示)")

    def getInputs():

        a = eval(input("请输入选手A的能力值(0-1): "))

        b = eval(input("请输入选手B的能力值(0-1): "))

        n = eval(input("模拟比赛的场次: "))

        return a, b, 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

            else:

                winsB += 1

        return winsA, winsB

    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() < probA:

                    scoreA += 1

                else:

                    serving="B"

            else:

                if random() < probB:

                    scoreB += 1

                else:

                    serving="A"

        return scoreA, scoreB

    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 main():

        printIntro()

        probA, probB, n = getInputs()

        winsA, winsB = simNGames(n, probA, probB)

        printSummary(winsA, winsB)

    main()

 

二、Python程序设计思维

1.计算思维与程序设计

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

- 实证思维:实验和验证,物理为代表,引力波<-实验

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

 

2.计算生态与Python语言

API != 生态

 

3.用户体验与软件产品

提高用户体验的方法

方法1:进度展示

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

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

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

 

方法2:异常处理

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

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

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

 

其他类方法

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

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

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

 

4.基本的程序设计模式

IPO:

- IInput 输入,程序的输入

- PProcess 处理,程序的主要逻辑

- OOutput 输出,程序的输出

确定IPO:明确计算部分及功能边界

编写程序:将计算求解的设计变成现实

调试程序:确保程序按照正确逻辑能够正确运行

 

基本的程序设计模式自顶向下设计、模块化设计、配置化设计

 

三、Python第三方库安装

安装Python第三方库三种方法

方法1(主要方法): 使用pip命令

安装指定的第三方库   D:\>pip install <第三方库名>

    使用-U标签更新已安装的指定第三方库      D:\>pip install U <第三方库名>

    卸载指定的第三方库    D:\>pip uninstall <第三方库名>

方法2: 集成安装方法

    集成安装:结合特定Python开发工具的批量安装

方法3: 文件安装方法

    实例:安装wordcloud

    步骤1:在UCI页面上搜索wordcloud

    步骤2:下载对应版本的文件

    步骤3:使用pip install <文件名>安装

 

四、模块7: os库的基本使用

OS库:

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

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

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

路径操作:

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

>>>os.path.abspath("file.txt")'C:\\Users\\Tian Song\\Python36-32\\file.txt'

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

>>>os.path.normpath("D://PYE//file.txt")'D:\\PYE\\file.txt'

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

>>>os.path.relpath("C://PYE//file.txt")'..\\..\\..\\..\\..\\..\\..\\PYE\\file.txt'

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

>>>os.path.dirname("D://PYE//file.txt")'D://PYE'

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

>>>os.path.basename("D://PYE//file.txt")'file.txt'

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

>>>os.path.join("D:/", "PYE/file.txt")'D:/PYE/file.txt'

 

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

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

 

环境参数:

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

>>>os.chdir("D:")

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

>>>os.getcwd()'D:\\'

os.getlogin()      获得当前系统登录用户名称

>>>os.getlogin()'Tian Song'

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

>>>os.cpu_count()

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

>>>os.urandom(10)b'7\xbe\xf2!\xc1=\x01gL\xb3'

 

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

库名                         用途                           pip安装指令

NumPy N                维数据表示和运算                  pip install numpy

Matplotlib               二维数据可视化                    pip install matplotlib

PIL                     图像处理                          pip install pillow

Scikit-Learn             机器学习和数据挖掘                 pip install sklearn

Requests               HTTP协议访问及网络爬虫            pip install requests

Jieba                 中文分词                            pip install jieba

Beautiful Soup         HTMLXML解析器                   pip install beautifulsoup4

Wheel Python         第三方库文件打包工具                 pip install wheel

PyInstaller            打包Python源文件为可执行文件        pip install pyinstaller

Django               Python最流行的Web开发框架          pip install django

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/daisy-xy/p/11923189.html