054 Python程序设计思维
一、单元开篇
- 计算思维与程序设计
- 计算生态与Python语言
- 用户体验与软件产品
- 基本的程序设计模式
二、计算思维与程序设计
2.1 计算思维
2.1.1 第3种人类思维特征
- 逻辑思维:推理和演绎,数学为代表,A->B B->C A->C
- 实证思维:实验和验证,物理为代表,引力波<-实验
- 计算思维:设计和构造,计算机为代表,汉诺塔递归
2.1.2 抽象和自动化
- 计算思维:Computational Thinking
- 抽象问题的计算过程,利用计算机自动化求解
- 计算思维是基于计算机的思维方式
2.1.3 计数求和:计算1-100的计数和
逻辑思维(数学家高斯的玩儿法):
\]
计算思维(现代人的新玩儿法):
s = 0
for i in range(1, 101):
s += i
2.1.4 圆周率的计算
逻辑思维:
\]
计算思维:

2.1.5 汉诺塔问题
逻辑思维(\(2^n-1\)):

计算思维:
count = 0
def hanoi(n, src, dst, mid):
… (略)
hanoi(3, "A", "C", "B")
print(count)
2.1.6 天气预报

2.1.7 量化分析

2.1.8 抽象问题的计算过程,利用计算机自动化求解
- 计算思维基于计算机强大的算力及海量数据
- 抽象计算过程,关注设计和构造,而非因果
- 以计算机程序设计为实现的主要手段
2.2 计算思维与程序设计
编程是将计算思维变成现实的手段

三、计算生态与Python语言
3.1 计算生态
从开源运动说起…

开源生态逐步建立
- 1991, Linus Torvalds发布了Linux内核
- 1998, 网景浏览器开源,产生了Mozilla

开源思想深入演化和发展,形成了计算生态
计算生态以开源项目为组织形式,充分利用“共识原则”和“社会利他”组织人员,在竞争发展、相互依存和迅速更迭中完成信息技术的更新换代,形成了技术的自我演化路径。

没有顶层设计、以功能为单位、具备三个特点

3.2 计算生态与Python语言
- 以开源项目为代表的大量第三方库:Python语言提供 >13万个第三方库
- 库的建设经过野蛮生长和自然选择:同一个功能,Python语言2个以上第三方库
- 库之间相互关联使用,依存发展:Python库间广泛联系,逐级封装、
- 社区庞大,新技术更迭迅速:AlphaGo深度学习算法采用Python语言开源
API != 生态
3.3 计算生态的价值
创新:跟随创新、集成创新、原始创新
- 加速科技类应用创新的重要支撑
- 发展科技产品商业价值的重要模式
- 国家科技体系安全和稳固的基础
3.4 计算生态的运用
刀耕火种 -> 站在巨人的肩膀上
- 编程的起点不是算法而是系统
- 编程如同搭积木,利用计算生态为主要模式
- 编程的目标是快速解决问题
四、用户体验与软件产品
4.1 用户体验
实现功能 -> 关注体验
- 用户体验指用户对产品建立的主观感受和认识
- 关心功能实现,更要关心用户体验,才能做出好产品
- 编程只是手段,不是目的,程序最终为人类服务
4.2 提高用户体验的方法
4.2.1 方法1:进度展示
- 如果程序需要计算时间,可能产生等待,请增加进度展示
- 如果程序有若干步骤,需要提示用户,请增加进度展示
- 如果程序可能存在大量次数的循环,请增加进度展示
4.2.2 方法2:异常处理
- 当获得用户输入,对合规性需要检查,需要异常处理
- 当读写文件时,对结果进行判断,需要异常处理
- 当进行输入输出时,对运算结果进行判断,需要异常处理
4.2.3 其他类方法
- 打印输出:特定位置,输出程序运行的过程信息
- 日志文件:对程序异常及用户使用进行定期记录
- 帮助信息:给用户多种方式提供帮助信息
软件程序 -> 软件产品
用户体验是程序到产品的关键环节
五、基本的程序设计模式
5.1 从IPO开始…
I:Input 输入,程序的输入
P:Process 处理,程序的主要逻辑
O:Output 输出,程序的输出
确定IPO:明确计算部分及功能边界
编写程序:将计算求解的设计变成现实
调试程序:确保程序按照正确逻辑能够正确运行
5.2 自顶向下设计
- I:Input 输入,程序的输入
- P:Process 处理,程序的主要逻辑
- O:Output 输出,程序的输出
5.3 模块化设计
通过函数或对象封装将程序划分为模块及模块间的表达
具体包括:主程序、子程序和子程序间关系
分而治之:一种分而治之、分层抽象、体系化的设计思想
紧耦合:两个部分之间交流很多,无法独立存在
松耦合:两个部分之间交流较少,可以独立存在
模块内部紧耦合、模块之间松耦合
5.4 配置化设计

- 引擎+配置:程序执行和配置分离,将可选参数配置化
- 将程序开发变成配置文件编写,扩展功能而不修改程序
- 关键在于接口设计,清晰明了、灵活可扩展
5.5 应用开发的四个步骤
从应用需求到软件产品

- 1 产品定义:对应用需求充分理解和明确定义:产品定义,而不仅是功能定义,要考虑商业模式
- 2 系统架构:以系统方式思考产品的技术实现:系统架构,关注数据流、模块化、体系架构
- 3 设计与实现:结合架构完成关键设计及系统实现:结合可扩展性、灵活性等进行设计优化
- 4 用户体验:从用户角度思考应用效果:用户至上,体验优先,以用户为中心
六、单元小结
- 计算思维:抽象计算过程和自动化执行
- 计算生态:竞争发展、相互依存、快速更迭
- 用户体验:进度展示、异常处理等
- IPO、自顶向下、模块化、配置化、应用开发的四个步骤
054 Python程序设计思维的更多相关文章
- Python题集:2019春Python程序设计选修课习题笔记
一.判断题: 1-1.在Python 3.x中可以使用中文作为变量名. 答案:√ 1-2.Python变量使用前必须先声明,并且一旦声明就不能再当前作用域内改变其类型. 答案:× 1-3.Python ...
- python程序设计——基本语言特性
参考<Python程序设计(第2版)> 清华大学出版社 董付国 ##### 除特殊说明外,以下代码示例,均为python 3.6版本 ##### 一.Python语言特性 1.python ...
- Python程序设计基本方法图
Python程序设计基本方法图
- 2019春Python程序设计作业2(0326--0401)
1-1 已知st="Hello World!",使用print(st[0:-1])语句可以输出字符串变量st中的所有内容. (2分) T F 1-2 Python程 ...
- PYTHON程序设计实验
Python程序设计实验报告一: 熟悉IDLE和在线编程平台 安徽工程大学 Python程序设计实验报告 班级 物流191 姓名 邹缕学号 3190505117成绩 ▁▁▁ 日期 2020.3.5 指 ...
- Python程序设计试验报告一: 熟悉IDLE和在线编程平台
安徽工程大学 Python程序设计 实验报告 班级 物流192 ...
- Python程序设计实验报告二:顺序结构程序设计(验证性实验)
安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名 崔攀 学号3190505136 成绩 日期 2020.3.22 指导老师 修宇 [实验 ...
- Python程序设计实验报告一:熟悉IDLE和在线编程平台
安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名 崔攀 学号3190505136 成绩_____ 日期 2020.3.8 指导老师 ...
- Python程序设计 实验 1 熟悉 IDLE 和在线编程平台
------------恢复内容开始------------ 安徽工程大学 Python程序设计 实验报告 班级 物流191 姓名 姚彩琴 学号3190505129 成绩 日期 2 ...
随机推荐
- Guava cache使用总结
缓存分为本地缓存和远端缓存.常见的远端缓存有Redis,MongoDB:本地缓存一般使用map的方式保存在本地内存中.一般我们在业务中操作缓存,都会操作缓存和数据源两部分.如:put数据时,先插入DB ...
- LayDate使用
layDate非常愿意和您成为工作伙伴.她致力于成为全球最用心的web日期支撑,为国内外所有从事web应用开发的同仁提供力所能及的动力.她基于原生JavaScript精心雕琢,兼容了包括IE6在内的所 ...
- xlistview错误
apply plugin: 'com.android.library' android { compileSdkVersion buildToolsVersion '26.0.1' defaultCo ...
- selenium中的setUp,tearDown与setUpClass,tearDownClass的区别
def setUpClass(cls): cls.driver = webdriver.Chrome() cls.driver.maximize_window() def setUp(self): s ...
- Java源码之阻塞队列
⑴背景 阻塞队列常用于生产者消费者场景,生产者是向队列里添加元素的线程,消费者是向队列里取出元素的线程.阻塞队列的角色是供生产者存放元素,消费者取出元素的容器. ⑵阻塞队列 阻塞队列是一个支持两个附加 ...
- (十一)c#Winform自定义控件-列表
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- PostgreSQL入门教程(命令行)
初次安装完成后 1.默认生成一个名为postgres的数据库 2.一个名为postgres的数据库用户 3.这里需要注意的是,同时还生成了一个名为postgres的Linux系统用户. 下面,我们使用 ...
- 盘一盘 NIO (二)—— Channel解析
Channel是个啥? Channel,顾名思义,它就是一个通道.NIO中的所有IO都是从 Channel 开始的. Channel通道和流非常类似,主要有以下几点区别: 1.流是单向的,通道是双向的 ...
- zookeeper的leader选举机制个人总结
第一步:每个服务器都首先投自己,格式为<sid,zxid>: 第二步:然后将自己的投票以<sid,zxid>形式发送给其他服务器,这样每个服务器除了自己的投票,还有集群中除了自 ...
- deepin 15.11 成功安装 jupyter notebook
系统环境: OS:deepin 15.11(均为系统默认配置) Anaconda Distribution 64位(x86)安装程序(517 MB) Jupyter 官方提供三种安装方式:conda. ...