目录

一、单元开篇

  • 计算思维与程序设计
  • 计算生态与Python语言
  • 用户体验与软件产品
  • 基本的程序设计模式

二、计算思维与程序设计

2.1 计算思维

2.1.1 第3种人类思维特征

  • 逻辑思维:推理和演绎,数学为代表,A->B B->C A->C
  • 实证思维:实验和验证,物理为代表,引力波<-实验
  • 计算思维:设计和构造,计算机为代表,汉诺塔递归

2.1.2 抽象和自动化

  • 计算思维:Computational Thinking
  • 抽象问题的计算过程,利用计算机自动化求解
  • 计算思维是基于计算机的思维方式

2.1.3 计数求和:计算1-100的计数和

逻辑思维(数学家高斯的玩儿法):

\[S=\frac{(a_1+a_n)n}{2}
\]

计算思维(现代人的新玩儿法):

s = 0
for i in range(1, 101):
s += i

2.1.4 圆周率的计算

逻辑思维:

\[\pi = \sum_{k=0}^\infty[\frac{1}{16^k}(\frac{4}{8k+1}-\frac{2}{8k+4}-\frac{1}{8k+5}-\frac{1}{8k+6})]
\]

计算思维:

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程序设计思维的更多相关文章

  1. Python题集:2019春Python程序设计选修课习题笔记

    一.判断题: 1-1.在Python 3.x中可以使用中文作为变量名. 答案:√ 1-2.Python变量使用前必须先声明,并且一旦声明就不能再当前作用域内改变其类型. 答案:× 1-3.Python ...

  2. python程序设计——基本语言特性

    参考<Python程序设计(第2版)> 清华大学出版社 董付国 ##### 除特殊说明外,以下代码示例,均为python 3.6版本 ##### 一.Python语言特性 1.python ...

  3. Python程序设计基本方法图

    Python程序设计基本方法图

  4. 2019春Python程序设计作业2(0326--0401)

    1-1 已知st="Hello World!",使用print(st[0:-1])语句可以输出字符串变量st中的所有内容. (2分) T         F 1-2 Python程 ...

  5. PYTHON程序设计实验

    Python程序设计实验报告一: 熟悉IDLE和在线编程平台 安徽工程大学 Python程序设计实验报告 班级 物流191 姓名 邹缕学号 3190505117成绩 ▁▁▁ 日期 2020.3.5 指 ...

  6. Python程序设计试验报告一: 熟悉IDLE和在线编程平台

    安徽工程大学 Python程序设计 实验报告                                                                  班级   物流192   ...

  7. Python程序设计实验报告二:顺序结构程序设计(验证性实验)

      安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  崔攀  学号3190505136 成绩 日期     2020.3.22     指导老师       修宇 [实验 ...

  8. Python程序设计实验报告一:熟悉IDLE和在线编程平台

    安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  崔攀  学号3190505136 成绩_____           日期     2020.3.8     指导老师  ...

  9. Python程序设计 实验 1 熟悉 IDLE 和在线编程平台

    ------------恢复内容开始------------ 安徽工程大学 Python程序设计 实验报告 班级   物流191   姓名  姚彩琴  学号3190505129 成绩 日期     2 ...

随机推荐

  1. javascript 异步请求封装成同步请求

    此方法是异步请求封装成同步请求,加上token验证,环境试用微信小程序,可以修改文件中的ajax,进行封装自己的,比如用axios等 成功码采用标准的 200 到 300 和304 ,需要可以自行修改 ...

  2. java随笔之接口

    /* * 接口大致上可以分为:哑接口,抽象接口,接口类 * 哑接口:就是public,protected(注意protect有包权限,只有本包才开放接口)方法 * 抽象接口:就是哑接口变为抽象方法,在 ...

  3. python-day16

    一.正则表达式 regular expression -----regex 验证匹配正则表达式使用单个字符串来描述.匹配一系列匹配某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替 ...

  4. Mybatis框架(8)---Mybatis插件原理

    Mybatis插件原理 在实际开发过程中,我们经常使用的Mybaits插件就是分页插件了,通过分页插件我们可以在不用写count语句和limit的情况下就可以获取分页后的数据,给我们开发带来很大 的便 ...

  5. 彻底搞懂Java中equals和==的区别

    java当中的数据类型和“==”的含义: 1.基本数据类型(也称原始数据类型) :byte,short,char,int,long,float,double,boolean.他们之间的比较,应用双等号 ...

  6. 项目启动会(project initiating meeting)与项目开工会(kick-off meeting)区别

    一.项目启动会initiating meeting 召开时间:是启动阶段结束时召开的会议:主要任务:发布项目章程,并任命项目经理,赋予项目经理动用组织资源的权力:注意事项:(1)会议召开前已经对干系人 ...

  7. python + selenium webdriver 从主窗口A跳转至主窗口B后,无法定位窗口B的元素的问题

    在做登录脚本的时候,如果只是单纯从登录页面进行元素定位的话,并不存在这个问题 但实际情况是,从首页A进入到登录页面B(并非弹出框),这时候在页面B无法定位到该页面的元素 问题:从页面A进入页面B,无法 ...

  8. 从零开始实现ASP.NET Core MVC的插件式开发(五) - 插件的删除和升级

    标题:从零开始实现ASP.NET Core MVC的插件式开发(五) - 使用AssemblyLoadContext实现插件的升级和删除 作者:Lamond Lu 地址:https://www.cnb ...

  9. 2019Hexo博客Next主题深度美化 打造一个炫酷博客(2)-奥怪的小栈

    219/8/1 更新 本文转载于:奥怪的小栈 这篇文章告诉你在搭建好博客后,面对网上千篇一律的美化教程怎么才能添加自己独特点,使人眼前一亮. 本站基于HEXO+Github搭建. 所以你需要准备好HE ...

  10. HTML基础介绍

    前言: H5是目前行业里非常热门的一种语言,学习难度较低,可以快速入门.我个人也在学习H5,采用写博客的方式来梳理我学到的知识点,也分享给更多想学习的人一起来学习. Tip:个人学习过程中梳理的知识点 ...