关于课程:
- 课程作者为北京理工大学教授嵩天
- 课程视频连接地址为中国大学Mooc平台
- 课程辅助平台为Python123
- 学习账号是微信账号登陆:昵称为coke
1-1节:程序设计的基本方法
- 计算机与程序设计
- 编译和解释
- 程序的基本编写方法
- 计算机编程
- 1-1单元小结
计算机与程序设计
计算机的概念:计算机是根据指令操作数据的设备,具有功能性和可编程性。功能性:是指对计算机的操作,表现为数据的计算,输入输出的处理和结果存储等。可编程性:根据一系列指令自动地、可预测性、准确的完成操作者的意图。
计算机的发展:参照摩尔定律发展,按照指数形式发展。计算机硬件所依赖的集成电路规模参照摩尔定律发展。计算机运行速度因此也接近几何级数快速增长。计算机所能高效支撑的各类运算功能不断丰富发展。由此可见计算机的功能和性能是交替和交织发展的。
摩尔定律:Moore's Law是计算机发展历史上最重要的预测法则,由Intel公司的创始人之一戈登摩尔1965年提出:单位面积集成电路上可容纳晶体管的数量约每两年翻一番。CPU/GPU、内存、硬盘、电子产品价格等都遵循摩尔定律。
程序设计:程序设计是计算机可编程的体现,亦成为编程,深度应用计算机的主要手段。程序设计已经成为当前社会需求量最大的职业技能之一。很多岗位即将被计算机程序接管,程序设计将是生存技能。
程序设计语言:是一种用于交互(交流)的人造语言,又称为编程语言,程序设计的具体实现方式,程序语言比自然语言更简单、严谨、精确。主要用于人类与计算机之间的交互。同样的代码计算机必须只有一种理解,这是程序设计语言必须要达到的效果。此外编程语言要告诉计算机其中数据的特性及特点,使得计算机的操作更加精确。
编译和解释
在了解编译和解释之前,我们需要率先查看程序是如何执行在计算机之上的。
编程语言的执行方式:
1、源代码,采用某编程语言编写,人类可读,如:result = 2 + 3,将运算结果赋值给变量result
2、目标代码,计算机可直接执行,人类不可读(专家除外),例如:11101010 01010010
下面这段执行的过程叫做编译,执行编译过程的程序称为编译器:编译可以理解为一次性翻译,之后不需要源代码(类似英文翻译)
下面这段执行的过程叫做解释,执行解释过程的程序称为解释器:解释可以理解为每次程序运行时随翻译随执行(类似实时的同声传译)
静态语言和脚本语言:静态语言是指使用编译执行的编程语言,C/C++语言、Java语言(一次性生成目标代码,优化更充分,程序运行速度更快)。脚本语言是指使用解释执行的编程语言,Python语言、PHP语言、JavaScript语言(执行程序时需要源代码,维护更加灵活,跨多个操作系统平台)。
程序的基本编写方法
IPO编程规范
I:input输入,程序的输入;P:press处理,程序的主要逻辑;O:output输出,程序的输出;
首先,需要理解IPO,输入是什么?输出是什么?如何从输入达到输出。
程序的输入:文件输入、网络输入、控制台输入、交互界面输入、内部参数输入等。输入是一个程序的开始
程序的输出:经过处理后,程序将结果通过控制台输出、图形输出、文件输出、网络输出、操作系统内部变量输出等。输出是程序展示预算结果的方式
程序的处理:处理是程序对输入数据进行计算产生输出结果的过程;处理方法统称为算法,它是程序最重要的部分,算法是一个程序的灵魂。
编程问题的解决步骤(计算为主,IPO编写方法为辅):
关于算法的需求分析(计算为主,IPO编写方法为辅):
完成上述步骤之后,才真正的设计到编写程序:
最终呢,嵩天老师将编程的步骤凝练缩减为简单的三步骤:
计算机编程
编程能够训练思维,编程体现了一种抽象交互关系,自动化执行的思维模式,编程能够,编程不是单纯的求解问题,还要思考用户体验,执行效率,编程能够帮助程序员加深用户行为及社会和文化认识,编程能够,编程能够提供展示自身思想和能力的舞台,让世界增加新的颜色、让自己变得更酷、提升心里满足。在信息空间里思考创新、将创新变位现实。编程能够,能够更好的利用计算机解决问题,显著的提高工作、生活和学习效率,也是为理想的实现提供一种借助计算机的高效手段。编程带来程序员是信息时代最重要的岗位之一,国内外对程序员岗位的缺口在百万以上规模,计算机已经渗透于各个行业,就业前景非常广阔。
计算机思维:区别逻辑思维(数学为代表)和实证思维(物理为代表)之外的第三种思维模式。
学习计算机编程的误区:
1-1单元小结
单元小结,通过这部分内容让大家建立计算机、程序设计以及程序设计价值这样一些基础的认识,为我们进一步学习做好铺垫:
1-2节:Python开发环境配置(略)
1-3节:示例1:温度转换
- 温度的两种体系
- 温度转换的需求分析
- 问题分析
- 设计算法
- 输入输出
- 举一反三
温度的两种体系
1、摄氏度,中国等大多数国家使用,以1标准大气压下水的结冰点为0度,沸点为100度,将温度进行等分刻画。
2、华氏度,美、英国等国家使用,以1标准大气压下水的结冰点为32度,沸点为212度,将温度进行等分刻画。
温度转换的需求分析
1、将摄氏度转换为华氏度
2、将华氏度转换为摄氏度
问题分析
针对问题的计算部分进行分析并理解,最终确定:
1、理解一:直接将温度进行转换
2、理解二:将温度信息发布的声音或图像形式进行理解和转换(例如将电视或者其他音频媒介获取到温度的值,利用程序处理该场景的温度转换)
3、理解三:监控温度信息发布渠道,实时获取并转换温度值(该理解需要与网络的通信、爬虫及很多的信息处理相结合)
这里我们采用理解1:直接将温度值进行转换;
- 温度数值需要标明温度体系,及摄氏度或华氏度
- 转换后也需要给出另外的温度体系标明
在分析问题的基础上,这里我们进行IPO的,按照编程规范重构该问题。
- 输入:携带摄氏或华氏的温度值
- 处理:根据温度标志选择适当的温度转换算法
- 输出:携带摄氏或华氏的温度值
这样我们就完成了IPO的边界划分,针对输入输出的格式这里需要设计并声明一下,标示放在温度最后,F标示华氏度,C标示摄氏度,例如:82F表示华氏82度,28C表示摄氏28度
设计算法
根据华氏和摄氏的定义,利用转换公式如下:
C=(F-32)/1.8
F=C*1.8+32+32
#TempConvert.py
TempStr = input("请输入带有符号的温度值")
if TempStr[-1] in ['f','F']:
C = (eval(TempStr[0:-1]) - 32)/1.8
print("转换后的温度是{:.2f}C".format(C))
elif TempStr[-1] in ['c','C']:
F = 1.8*eval(TempStr[0:-1]) + 32
print("转换后的温度是{:.2f}F".format(F))
else:
print("输入格式错误")
举一反三:
- 输入输出的改变
温度数值与温度标示之间的关系设计可以改变:
1、标示改变放在数值之前:C82,F28
2、标示字符改变为多个字符:82Ce、28F - 计算问题的扩展
温度转换问题是各类转换问题的代表性问题:
1、货币转换、长度转换、重量转换、面积转换...
2、问题不同,但是程序代码是相似的
1-4Python元素语法分析
- 输入输出
- 数据类型
- 语句与函数
- 代码分析
- 1-4单元小结
输入输出
input()从控制台获得用户的输入
1、input()函数的基本使用格式
<变量> = input(<提示信息字符串>)
2、输入信息的格式
用户输入的信息以字符串类型保存在<变量>中,如:TempStr = input("请输入")#TempStr保存用户输入的信息-
print()以字符形式向控制台输出结果的函数
1、print()函数的基本使用格式
print(<拟输出字符串或字符串变量>)
2、字符串类型的一对引号仅在程序内部使用,输出无引号
如:print("输入格式错误")#向控制台输出 输入格式错误
3、print()格式化的操作方法
如:print("转换后的温度是{:.2f}C".format(C))#{:.2f}大括号标示槽,后续变量填充到槽中
除输入输出函数外,这里还有一个eval()评估函数
1、这个函数很有趣,功能为:去掉函数最外侧引号并执行余下语句的函数
2、
根据该10行代码对Python语法元素进行理解,清楚理解这10行代码将能够快速入门Python语言,接下来让我们参考框架、逐行分析、逐词理解:
1、下列代码中的颜色,是编程的色彩辅助体系,不是语法要求;
2、缩进是一行代码开始前的空白区域,表达程序的格式框架;
3、 “#注释”用于提高代码可读性的辅助文字,不被执行;
4、命名与保留字,TempStr、C、F,这些字符成为变量,程序中用于保存和表示数据的占位符号,可以使用等号(=)向变量赋值或修改值,=被成为赋值符号 。比如TempStr=“82F”#向变量TempStr赋值“82F”。
关于命名需要注意以下问题:
- 为变量关联标识符的过程叫做命名,命名规则:大小写字母、数字、下划线和汉字等字符及组合,如:TempStr,Python_Great,这是门Python好课
- 注意事项:大小写敏感、首字符不能是数字、不与保留字相同,Python与python是不同变量,123python是不合法的变量命名。
-
保留字,被编程语言内部定义并保留使用的标识符,Python一共33个保留字,比如:if,else,elif,in如果是大写的IF可以作为变量使用,但是if不可以当做变量使用,我们学习一门语言,至少需要了解涉及哪些单词,下列的保留字就是python语言中的33个单词:
数据类型
关于数据类型,比如10,111,101:
- 首先如果不去定义该数字,可以标示为二进制也可以表示为十进制,甚至是一段字符,计算机语言是一门精确的表达语言,因此我们需要用不同的方式指定想要表达的数据类型
- 如果想要表达为字符串类型:“10111101”或者‘10111101’
- 如果想要表达为整数类型:10111101
- 如果想要表达为列表类型:[10,111,101]
字符串的序号有两种表示方式,正向递增序号和反向递减序号(用于字符串的索引和切片操作)
- 索引:返回字符串中单个字符 <字符串或者字符串变量的后面>[M],其中M书写为数值,不同数值代表不同含义
例如:或者 TempStr[-1],其中[0]代表获取数值,[-1]代表获取温度的标示符号 - 切片:返回字符串中一段字符子串 <字符串或者字符串变量的后面>[M:N]
例如:或者TempStr[0:-1],[1:3]表示取出字符串中的第1、2个字符,但是不到第3个字符。[0:-1]表示从0开始但是不到字符串的最后一位,也就是剔除了字符串的最后一位,代码中利用TempStr[0:-1]来截取用户输入的82F中的数值:82
代码中的数字例如32、1.8,32为整数类型(整数包含正整数和负整数,如32、-32),1.8则是浮点数类型(浮点数是数学中的实数,带有小数部分,如1.8、-1.8、 -1.0):
语句与函数
- 赋值语句
- 分支语句
- 函数
赋值语句
首先我们先观察这段代码,其中有三行代码都有赋值符号的产生,由赋值符号构成的代码,我们称为赋值语句,用来给变量赋予新的数据值:
比如这行代码:C = (eval(TempStr[0:-1]) - 32)/1.8#将右侧的运算结果赋值给变量C
分支语句
由判断条件决定程序运行方向的语句称之为分支语句
- 代码中if TempStr[-1] in ['f','F']:#这行代码结尾处以冒号结尾,代表如果条件判断为True则执行冒号后的语句
- 每个保留字所在行最后存在一个冒号(:),冒号属于语法的一部分,不能省略
- 冒号及后续缩进用来表示后续语句与条件的所属关系
何为函数
根据输入参数产生不同输出的功能过程
- Python使用的函数类似数学的函数,y=f(x)
print("输入格式错误")#打印函数输出”输入格式错误“ - Python函数采用<函数名>(<参数>)方式使用
(eval(TempStr[0:-1])#这里TempStr[0:-1]是函数的参数
代码分析
#这是单行注释
···
这是多行注释
这是多行注释
···
#TempConvert.py,这是一行注释
#使用input函数从控制台获取一个信息,以字符串形式赋值给变量TempStr
TempStr = input("请输入带有符号的温度值")
#保留字表达分支语句,用保留字in判断最后一个字符是否在列表中
if TempStr[-1] in ['f','F']:
#将TempStr字符串去除最后一位符号并使用eval评估运算后转换为数字类型,从而参与公式运算并将结果赋值给变量C
C = (eval(TempStr[0:-1]) - 32)/1.8
#将变量C的结果格式化为保留小数点后两位后输出
print("转换后的温度是{:.2f}C".format(C))
#关键字elif是分支语句,用保留字in判断用户输入的信息是否在列表内
elif TempStr[-1] in ['c','C']:
#将TempStr字符串去除最后一位符号并使用eval评估运算后转换为数字类型,从而参与公式运算并将结果赋值给变量F
F = 1.8*eval(TempStr[0:-1]) + 32
print("转换后的温度是{:.2f}F".format(F))
#根据以上两个分支语句判断,如不符合以上分支的初始华条件,说明无法正常获取温度范围,则给予错误提示
else:
print("输入格式错误")