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 ...
随机推荐
- Hyper-V虚拟机上安装Ubuntu16.04/Ubuntu18.04.2LTS,搭建GitLab
我的电脑系统是win10,内存8g如下 一开始是装的Ubuntu18.04.2LTS, gitlab-ce_12.1.3-ce.0_amd64.deb,每次能够安装成功,但是修改完ip后,运行gitl ...
- 【Java例题】5.3 字符统计
3.分别统计一个字符串中大写字母.小写字母.数字. 汉字以及其它字符的个数. package chapter5; import java.util.Scanner; public class demo ...
- javascript数组去重 js数组去重
数组去重的方法 一.利用ES6 Set去重(ES6中最常用) function unique (arr) { return Array.from(new Set(arr)) } var arr = [ ...
- Vue创建项目配置
前言 安装VS Code,开始vue的学习及编程,但是总是遇到各种各样的错误,控制台语法错误,格式错误.一股脑的袭来,感觉创建个项目怎么这个麻烦.这里就讲一下vue的安装及创建. 安装环境 当然第一步 ...
- Flutter 1.7 正式版发布
今天,我们非常高兴地向大家宣布又一个正式版本的发布 -- Flutter 1.7,这是继上次 I/O 时众多重要功能发布以来的一次小更新.Flutter 1.7 包含了对 AndroidX 的支持,满 ...
- Zookeeper_阅读源码第一步_在 IDE 里启动 zkServer(单机版)
Zookeeper是开源的,如果想多了解Zookeeper或看它的源码,最好是能找到它的源码并在 IDE 里启动,可以debug看它咋执行的,能够帮助你理解其原理. 准备源码 所以我们很容易搞到它的源 ...
- Node.js爬虫实战 - 爬你喜欢的
前言 今天没有什么前言,就是想分享些关于爬虫的技术,任性.来吧,各位客官,里边请... 开篇第一问:爬虫是什么嘞? 首先咱们说哈,爬虫不是"虫子",姑凉们不要害怕. 爬虫 - 一种 ...
- linux细节操作的
一>安装mysql 可以直接在linux系统下载 下载之前要安装wget插件 下载命令 wget 后面跟安装软件的url 比如mysql wget http://repo.mysql.com/m ...
- 你真的了解setState()吗?
React 中 setState()详细解读 对于 setState() 相信伙伴们都用过,它是 React 官方推荐用来更新组件 state 的 API,但是对于 setState() 你真的了解吗 ...
- 根据屏幕分辨率判断当前手机型号(swift4.1)
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoa ...