轻轻松松学会Python入门十:程序设计方法学

简介: 轻轻松松学会Python入门十:程序设计方法学

实例13,体育竞技分析


体育竞技分析:模拟N场比赛

计算思维:抽象+自动化

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

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


比赛规则

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

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

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


一,自顶向下和自底向上


1,自顶向下(设计)


解决复杂问题的有效方法


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

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

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


2,自顶向上(执行)


逐步组建复杂系统的有效测试方法


- 分单元测试,逐步组装

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

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


二,程序总体框架及步骤


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

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

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

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


84c8182791ed44148a9159d9f0b51866.png

4d530aec817c41f3be6d4ba68c53c861.png


def printIntro():
    print("这个程序模拟两个选手A和B的某种竞技比赛")
    print("程序运行还需要A和B能力值(以0~1之间的小数表示)")
def getInputs():
    a = eval(input("请输入选手A的能力值: "))
    b = eval(input("请输入选手B的能力值: "))
    n = eval(input("模拟比赛的场次: "))
    return a,b,n
def printSummary(winA,winB):
    n = winA + winB
    print("竞技分析开始,共模拟{}场比赛".format(n))
    print("选手A获胜{}场比赛,占比{:0.1%}".format(winA,winA/n))
    print("选手b获胜{}场比赛,占比{:0.1%}".format(winB,winB/n))
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 simNGames(n,probA,probB):
    winA,winB = 0,0
    for i in range(n):
        scoreA,scoreB = simOneGame(probA,probB)
        if scoreA>scoreB:
            winA += 1
        else:
            winB += 1
    return winA,winB
def main():
    printIntro()
    probA,probB,n = getInputs()
    winA,winB = simNGames(n,probA,probB)
    printSummary(winA,winB)
main()


6dc2c1f91e944b9898f0ea8ade6c760d.png


理解自顶向下和自底向上

理解自顶向下的设计思维:分而治之

理解自底向.上的执行思维:模块化集成

自顶向下是“系统”思维的简化


Python程序设计思维


一,计算思维与程序设计


1,计算思维:第三种人类思维特征


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

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

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


1)抽象和自动化


- 计算思维: Computational Thinking

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

- 计算思维是基于计算机的思维方式


c6d183ac1a664853abfda8ff691abccf.png


蒙特卡罗方法::


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


- 计算思维基于计算机强大的算力及海量数据

- 抽象计算过程,关注设计和构造,而非因果

- 以计算机程序设计为实现的主要手段


341530670060481cbcb048aeb388b2ca.png


基本的程序设计模式


一,IPO模式


55175f6f931d483fb3bed0d91a00c9a1.png


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

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

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


二,自顶向下设计


50c2ee9ca7394641a46f3ccdff962b49.png


三,模块化设计


- 通过函数或对象封装将程序划分为模块及模块间的表达

- 具体包括:主程序、子程序和子程序间关系

- 分而治之:一种分而治之、分层抽象、体系化的设计思想


- 紧耦合:两个部分之间交流很多,无法独立存在

- 松耦合:两个部分之间交流较少,可以独立存在

- 模块内部紧耦合、模块之间松耦合


四,配置化设计


39320d7638df4274a4243376c900a5ac.png


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

- 将程序开发变成配置文件编写,扩展功能而不修改程序

- 关键在于接口设计,清晰明了、灵活可扩展


该如何学习深入学习编程?


- 新时代学习方式:明确学习目标+在线课程+教材或教程


- 若以编程为职业:要学出深度



- 若以编程为能力:要学的宽度



- 若以编程为素质:任选一门编程语言,多看几遍教程,多看经典书籍


Python第三方库安装


9bc2dea7567d43cd836238ef3f3db361.png


一,看见更大的Python世界


6556e5d4f8c341c3a7417dea50b29b86.png


Python社区:

- PyPI: Python Package Index

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

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


二,安装Python第三方库


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

- 方法2:集成安装方法

- 方法3:文件安装方法


1,使用pip命令:


796c14d6c3094c4a96819bca05e1ee36.png


D:\>pip install <第三方库名>

- 安装指定的第三方库


D:\>pip install -U <第三方库名>

- 使用-U标签更新已安装的指定第3方库


D:\>pip uninstall <第三方库名>

- 卸载指定的第三方库


D: \>pip download <第三方库名>

-下载但不安装指定的第三方库


D:\>pip show <第三方库名>

- 列出某个指定第3三方库的详细信息


D:\>pip search <关键词>

- 根据关键词在名称和介绍中搜索第3三方库


例子:


pip search blockchain


fe9a5fedbf1b4e6c8d8073b3f0c6fead.png


D: \>pip list

- 列出当前系统已经安装的第三方库


主要方法,适合99%以上情况

- 适合Windows、Mac和Linux等操作系统

- 未来获取第三方库的方式,目前的主要方式

- 适合99%以上情况,需要联网安装


2,集成安装方法:


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


Anaconda

https:/ /www.continuum.io

- 支持近800个第三方库

- 包含多个主流工具

- 适合数据计算领域开发


a236238aa2b24120996e0effe6f4a5fb.png


3,文件安装方法:


为什么有些第三方库用pip可以下载,但无法安装?

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

- 如果操作系统没有编译环境,则能下载但不能安装

- 可以直接下载编译后的版本用于安装吗?


ab9768813c5b46fe92aeebe05343d7e0.png


os库的使用


一,os库基本介绍


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

- os库是Python标准库,包含几百个函数

- 常用路径操作、进程管理、环境参数等几类


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

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

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


二,os库之路径操作


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

import os. path

import os. path as op


6c311cb6f3b6489e9af77705c8c3ebdd.png

a833a702f5d04d148a813722eeefbae4.png


a527e2aa6413447bb1c1253e9d5285d9.png

ab2021c30d0548bab4c155538c4a2856.png


3ef4eb82faca4ae093fff08b821e7e25.png


7e95c7184660426cb45bb0e781fca4b6.png


三,os库之进程管理


OS.system( command)

- 执行程序或命令command

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


1a87aba3bbbe4b179289b4d983c861b1.png


四,os库之环境参数


1,获取或改变系统环境信息


8d40b4f93dcb4cc5a3970ee5a74b6daf.png


2,获取操作系统环境信息:


1b405df252b64375999afad23630d5db.png

36a67a07c0064f15bef5ef92f423c6e2.png


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


第三方库自动安装脚本



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

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


如何自动执行一个程序?例如: pip?


import os
libs = {"numpy","matplotlib","pillow","sklearn","requests",\
        "beautifulsoup4","wheel","networkx","sympy","django",\
        "flask","werobot","pyqt5","pandas","pyopengl","pypdf2",\
        "docopy","pygame"}
try:
    for lib in libs:
        os.system("pip install " + lib)
    print("successful")
except:
    print("failed somehow")


自动化脚本+

编写各类自动化运行程序的脚本,调用已有程序

- 扩展应用:安装更多第3三方库,增加配置文件

- 扩展异常检测:捕获更多异常类型,程序更稳定友好

目录
相关文章
|
1月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
1月前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析的入门指南
本文将引导读者了解如何使用Python进行数据分析,从安装必要的库到执行基础的数据操作和可视化。通过本文的学习,你将能够开始自己的数据分析之旅,并掌握如何利用Python来揭示数据背后的故事。
|
5天前
|
存储 数据挖掘 数据处理
Python Pandas入门:行与列快速上手与优化技巧
Pandas是Python中强大的数据分析库,广泛应用于数据科学和数据分析领域。本文为初学者介绍Pandas的基本操作,包括安装、创建DataFrame、行与列的操作及优化技巧。通过实例讲解如何选择、添加、删除行与列,并提供链式操作、向量化处理、索引优化等高效使用Pandas的建议,帮助用户在实际工作中更便捷地处理数据。
15 2
|
11天前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
1月前
|
安全
Python-打印99乘法表的两种方法
本文详细介绍了两种实现99乘法表的方法:使用`while`循环和`for`循环。每种方法都包括了步骤解析、代码演示及优缺点分析。文章旨在帮助编程初学者理解和掌握循环结构的应用,内容通俗易懂,适合编程新手阅读。博主表示欢迎读者反馈,共同进步。
|
1月前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!
|
1月前
|
测试技术 开发者 Python
探索Python中的装饰器:从入门到实践
装饰器,在Python中是一块强大的语法糖,它允许我们在不修改原函数代码的情况下增加额外的功能。本文将通过简单易懂的语言和实例,带你一步步了解装饰器的基本概念、使用方法以及如何自定义装饰器。我们还将探讨装饰器在实战中的应用,让你能够在实际编程中灵活运用这一技术。
40 7
|
1月前
|
开发者 Python
Python中的装饰器:从入门到实践
本文将深入探讨Python的装饰器,这一强大工具允许开发者在不修改现有函数代码的情况下增加额外的功能。我们将通过实例学习如何创建和应用装饰器,并探索它们背后的原理和高级用法。
46 5
|
1月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
85 3
|
1月前
|
JSON 安全 API
Python调用API接口的方法
Python调用API接口的方法
256 5