Python基础(八):程序设计方法学
程序设计方法学
8.1 自顶向下和自底向上
自顶向下设计:分而治之
- 将一个总问题分解为若干个小问题
- 使用同样的方法进一步分解小问题
- 直到小问题可以用计算机简单明了的解决
自底向上执行:模块化集成
- 分单元测试,逐步向上组装
- 直到系统各部分以组装的思路都经过测试和验证
实例:体育竞技分析
整体框架
- 步骤1:打印程序的介绍信息
- 步骤2:获取参数 proA,proB,n
- 步骤3:利用球员 A 和 B 的能力值 proA 和 proB,模拟 n 局比赛
- 步骤4:输出球员 A 和 B 获胜比赛的场次及概率
自顶向下设计
自底向上执行
代码:
import random
def printInfo():
print("体育竞技分析问题".center(30, "*"))
print("需要输入选手A和选手B的能力值".center(25, "*"))
def getInput():
a = eval(input("请输入选手A的能力值(0-1): "))
b = eval(input("请输入选手B的能力值(0-1): "))
n = eval(input("请输入比赛场数: "))
return a, b, n
def gameOver(scoreA, scoreB):
return scoreA == 15 or scoreB == 15
def simOneGame(proA, proB):
flag = "A"
scoreA, scoreB = 0, 0
while not gameOver(scoreA, scoreB):
if flag == "A":
if random.random() < proA:
scoreA += 1
else:
flag = "B"
else:
if random.random() < proB:
scoreB += 1
else:
flag = "A"
return scoreA, scoreB
def simNGames(proA, proB, n):
winCountA, winCountB = 0, 0
for i in range(n):
scoreA, scoreB = simOneGame(proA, proB)
if scoreA > scoreB:
winCountA += 1
elif scoreA < scoreB:
winCountB += 1
return winCountA, winCountB
def printSummary(winsA, winsB):
n = winsA + winsB
print("共模拟{}场比赛".format(n))
print("A获胜场数为{}, 获胜概率为{:.1%}".format(winsA, winsA / n))
print("B获胜场数为{}, 获胜概率为{:.1%}".format(winsB, winsB / n))
def main():
printInfo()
proA, proB, n = getInput()
winsA, winsB = simNGames(proA, proB, n)
printSummary(winsA, winsB)
main()
运行:
***********体育竞技分析问题***********
*****需要输入选手A和选手B的能力值*****
请输入选手A的能力值(0-1): 0.5
请输入选手B的能力值(0-1): 0.47
请输入比赛场数: 101
共模拟101场比赛
A获胜场数为69, 获胜概率为68.3%
B获胜场数为32, 获胜概率为31.7%
8.2 python程序设计思维
计算思维
计算思维被称为人类第三种思维特征
- 逻辑思维:推理和演绎,数学为代表
- 实证思维:实验和验证,物理为代表
- 计算思维:抽象和自动化,基于计算机的思维方式
抽象问题的计算过程,利用计算机自动化求解
计算生态
- Python提供 >15 万个第三方库,库的建设经过野蛮生长和自然选择。
- Python 库之间竞争发展、相互依存、快速更迭。
- 编写程序不再是探究每个算法的具体实现,而是尽可能利用第三方库进行代码复用。
用户体验
基本的程序设计模式
- IPO:Input-Process-Output
- 自顶向下设计
- 模块化设计:模块内部紧耦合、模块之间松耦合
- 配置化设计:程序执行和配置分离,将可选参数写入配置文件
Tips
python 第三方库的安装
PyPI · The Python Package Index:https://pypi.org/
Python Package Index (PyPI) 是 Python 编程语言的软件存储库。
PyPI 可帮助您查找和安装由 Python 社区开发和共享的软件。
Package 作者使用 PyPI 来分发他们的软件。
pip 安装方法
命令 作用 pip install <第三方库名>
安装指定的第 3 三方库 pip install -U <第三方库名>
使用 -U 更新已安装的指定第三方库 pip uninstall <第三方库名>
卸载指定的第三方库 pip download <第三方库名>
下载但不安装指定的第三方库 pip show <第三方库名>
列出某个指定第三方库的详细信息 pip search <关键词>
根据关键词在名称和介绍中搜索第三方库 pip list
列出当前系统已经安装的第 3 三方库 集成安装方法
结合特定 Python 开发工具的批量安装,如 Anaconda。
Anaconda 提供了在一台机器上执行 Python/R 数据科学和机器学习的最简单方法。
文件安装方法
- 由于 Python 某些第三方库仅提供源代码,通过 pip 下载后无法在 Windows 系统编译安装。
- 可直接下载已经编译后的第三方库文件,再使用
pip install <文件名>
安装。 - 下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/
Python基础(八):程序设计方法学
https://luminous-ee.github.io/2023/01/28/Python基础(八):程序设计方法学/