本部分是必修1《数据与计算》第3章《算法基础》和第4章《程序涉及基础》的知识点梳理与重难点考试题目整理。完成本部分学习的过程是:首先阅读教材或本页面中深绿色部分的知识点,并加以理解思考,然后完成相应内容的习题。
1.独立完成,不能相互讨论、抄袭或上网查询。2.完成试题并提交以后,点击“查看答案解析”,记录自己的错误题目,并参考深绿色部分的知识点梳理,进行反思总结。
在考试中涉及多个使用某方法解决问题的过程题目,此类题目的解题关键点在于第一个步骤和最后一个步骤。
①第一个步骤大家需要明确的是“凡事要三思而后行”,做任何事情第一个步骤都应该是分析问题、了解问题的需求、目标等,而不是去做具体的事情。
②最后一个步骤大家需要明确做任何事情、不论事情或问题是否得到解决,都必须得到一个结果,如一个总结、报告、作品、程序代码等。
(一)分析问题:分析问题的需求情况、已知条件和需要解决的问题。
(二)设计算法:列出解决问题的详细方法和步骤。
(三)编写程序:使用一种程序语言(如 C、Java、Pascal、Python等)根据算法编写出程序。
(四)调试运行程序:运行编写好的程序测试是否符合设计要求,若程序运行出错或结果不符合设计要求,则需要对程序甚至算法进行修改,直至符合设计要求为止。
二、算法
(一)算法:有限步骤内求解某一问题所使用的一组定义明确的规则。计算的方法。P48
(二)算法的五个特征:①有穷性(有限步骤内结束);②确定性(每一步都必须意义明确,不能模棱两可);③数据输入(算法可以没有输入);④数据输出(任何算法都必须要求至少一个输出,例如做任何事情都必须给出反馈);⑤可行性(算法的任何步骤都可以被分解成基本的可执行的操作)。P49
(三)算法的描述:自然语言(人类的语言,如口述一个问题的解决过程);流程图(用程序框图的方式来描述问题解决过程);伪代码(介于自然语言和程序代码之间的形式描述问题解决过程)。P49-P51
(四)流程图:P50起止框:一个流程图有且仅有两个,一个表示开始,一个表示结束;输入输出框:一个流程图至少要有一个输出框;处理框:用来进行算术计算或赋值;判断框:在流程图算法中表示条件判断,判断框有一个入口(判断条件),有两个出口(两个判断结果,是/否、True/False)。
(四)流程图:P50
起止框:一个流程图有且仅有两个,一个表示开始,一个表示结束;
输入输出框:一个流程图至少要有一个输出框;
处理框:用来进行算术计算或赋值;
判断框:在流程图算法中表示条件判断,判断框有一个入口(判断条件),有两个出口(两个判断结果,是/否、True/False)。
三、算法的三种基本控制结构 P52
(一)顺序结构:流程中各个步骤依次先后执行,所有的步骤都要执行并且只执行一次。
(二)选择结构(分支结构):选择结构中有判断框,判断框出来后会有两个分支,根据判断结果选择需要执行不同分支的步骤。需要特别注意的是:两个不同的分支不会同时执行,若执行了True分支的操作,则False分支的操作不再执行,反之同理。
在Python中,选择结构的代表性语句是 if语句,仅出现 if 则是单分支结构,if-else 是双分支,if-elif-…-else 是多分支结构。
(三)循环结构:循环结构中也有判断框,根据判断条件某些步骤会被反复执行,直到判断条件为True(或False,根据自己定义的条件决定)时终止并跳出循环(如下图中‘代码1’就会被反复执行)。需要特别注意的是:循环结构必须要跳出循环,否则将会出现死循环,而跳出循环则需要条件和循环体代码共同配合完成。
(三)循环结构:循环结构中也有判断框,根据判断条件某些步骤会被反复执行,直到判断条件为True(或False,根据自己定义的条件决定)时终止并跳出循环(如下图中‘代码1’就会被反复执行)。
需要特别注意的是:循环结构必须要跳出循环,否则将会出现死循环,而跳出循环则需要条件和循环体代码共同配合完成。
在本阶段学习中,Python中的循环结构代表性语句是 for语句和 while语句。
四、程序语言
程序语言主要分为机器语言、汇编语言和高级语言三种。(一)机器语言:使用二进制编制。优点:计算机能够直接识别执行,正确率和代码执行效率都很高。缺点:不易于人类编写和理解,编写任务非常繁重。P55(二)汇编语言:把常用的二进制代码封包到一个类似英文缩写的符号中,方便理解和调用。例如用ADD代替加法的二进制代码串,这种方法类似中文里面的成语。P56(三)高级语言:以人类的语言习惯进行编写。优点:易于人类编写和理解。缺点:计算机不能直接识别和执行,对系统资源占用较高且执行过程中容易出错。现在常用的高级语言有:C、Java、Python等。P57程序语言从最初的二进制机器语言,发展到汇编语言,再到现在常用的高级语言。P55
程序语言主要分为机器语言、汇编语言和高级语言三种。
(一)机器语言:使用二进制编制。优点:计算机能够直接识别执行,正确率和代码执行效率都很高。缺点:不易于人类编写和理解,编写任务非常繁重。P55
(二)汇编语言:把常用的二进制代码封包到一个类似英文缩写的符号中,方便理解和调用。例如用ADD代替加法的二进制代码串,这种方法类似中文里面的成语。P56
(三)高级语言:以人类的语言习惯进行编写。优点:易于人类编写和理解。缺点:计算机不能直接识别和执行,对系统资源占用较高且执行过程中容易出错。现在常用的高级语言有:C、Java、Python等。P57
程序语言从最初的二进制机器语言,发展到汇编语言,再到现在常用的高级语言。P55
五、Python中的常量、变量与数据类型 P67
(一)常量:是指程序运行过程中不会发生变化的量。例如数字、文字、图片等。(二)变量:是指程序运行过程中值会发生变化的量。我们可以把变量想象成一个瓶子,瓶子在某一时刻装的是纯净水,在另一时刻也可以装橙汁。这里的纯净水和橙汁就是变量的值,瓶子就是变量,在这个过程中,瓶子(变量)本身没有发生变化,但瓶子(变量)里面装的东西(变量的值)却发生了变化。给变量赋值的符号是 = ,注意这里的 = 不是相等的意思。(三)变量名:Python中变量名由 字母、数字和下划线 三种字符组成。其中数字不能作为变量名的首字符;字母要区分大小写;另外Python中已经定义好的函数名称也不能作为变量名(例如float、int、input、print等)。(四)数据类型:在本阶段的学习中我们只需要了解和掌握数值型和字符串两种类型的数据类型。①数值型:分成整型(int,整数)和浮点型(float,小数),可以进行算术运算;②字符串型(str):用单引号或双引号括起来的内容。不能进行算术计算,其算法与文字接龙类似。例如str(20)+str(25)的结果是 ’2025’ ;’abc’+’abc’的结果是 ‘abcabc’ ;’20’*3的结果是 ’202020’ 。P68
(一)常量:是指程序运行过程中不会发生变化的量。例如数字、文字、图片等。
(二)变量:是指程序运行过程中值会发生变化的量。我们可以把变量想象成一个瓶子,瓶子在某一时刻装的是纯净水,在另一时刻也可以装橙汁。这里的纯净水和橙汁就是变量的值,瓶子就是变量,在这个过程中,瓶子(变量)本身没有发生变化,但瓶子(变量)里面装的东西(变量的值)却发生了变化。给变量赋值的符号是 = ,注意这里的 = 不是相等的意思。
(三)变量名:Python中变量名由 字母、数字和下划线 三种字符组成。其中数字不能作为变量名的首字符;字母要区分大小写;另外Python中已经定义好的函数名称也不能作为变量名(例如float、int、input、print等)。
(四)数据类型:在本阶段的学习中我们只需要了解和掌握数值型和字符串两种类型的数据类型。
①数值型:分成整型(int,整数)和浮点型(float,小数),可以进行算术运算;
②字符串型(str):用单引号或双引号括起来的内容。不能进行算术计算,其算法与文字接龙类似。例如str(20)+str(25)的结果是 ’2025’ ;’abc’+’abc’的结果是 ‘abcabc’ ;’20’*3的结果是 ’202020’ 。P68
六、Python中的运算符 P69-P70
(一)算术运算符:*是乘法;/是除法;%是求余数(例如 10%3 的结果是 1,表示10除以3余数为1);**是幂运算(例如 2**3 的结果是 8,表示2的3次方);//是整除(例如 13//5 的结果是 2,表示12除以5取商2.6 的整数部分,注意不是四舍五入)。(二)关系运算符:关系运算符的运算结果只有True或False。>=是大于等于;<=是小于等于;==是等于(例如 5==5 结果是 True;5==6 结果是False);!=是不等于(例如 5!=5 结果是False;5!=6 结果是True)。(三)逻辑运算符:逻辑运算符的运算结果也只有True或False。and ‘与’:当且仅当a和b的条件都为True时结果才是True,否则都是False。True and True结果为True;True and False结果为False;False and False结果为False。or ‘或’:a和b条件中任意条件为True则结果为True,只有当a和b都是False时结果才是False。True or True结果为True;True or False结果为True;False or False结果为False。not ‘非’:not a,否定a的结果。not True结果为False;not False结果为True。(四)赋值运算符:赋值是指把一个常量、变量或表达式结果的值绑定到一个变量上,若这个变量之前有其它的值,则这个变量之前的值会被覆盖。例如赋值语句 a=5 是指把常量5的值赋值给变量a;赋值语句 a=5+2是指把表达式 5+2 的计算结果7赋值给a;假设变量b的值是2025,若执行赋值语句 a=b,则变量a的值也会变成 2025;假设变量a的值是2025,此时再执行赋值语句 a=2026,则变量a的值被重新赋值变成 2026。此外还有加法赋值、减法赋值、乘法赋值等。加法赋值 +=(a+=b与a=a+b相同,例如设a=5,则a+=2即为a=a+2,结果a被赋值为7。若难以理解可以将式子理解为 a1=5,a2=a1+2。其它赋值语句同理。)
(一)算术运算符:*是乘法;/是除法;%是求余数(例如 10%3 的结果是 1,表示10除以3余数为1);**是幂运算(例如 2**3 的结果是 8,表示2的3次方);//是整除(例如 13//5 的结果是 2,表示12除以5取商2.6 的整数部分,注意不是四舍五入)。
(二)关系运算符:关系运算符的运算结果只有True或False。>=是大于等于;<=是小于等于;==是等于(例如 5==5 结果是 True;5==6 结果是False);!=是不等于(例如 5!=5 结果是False;5!=6 结果是True)。
(三)逻辑运算符:逻辑运算符的运算结果也只有True或False。
and ‘与’:当且仅当a和b的条件都为True时结果才是True,否则都是False。True and True结果为True;True and False结果为False;False and False结果为False。
or ‘或’:a和b条件中任意条件为True则结果为True,只有当a和b都是False时结果才是False。True or True结果为True;True or False结果为True;False or False结果为False。
not ‘非’:not a,否定a的结果。not True结果为False;not False结果为True。
(四)赋值运算符:赋值是指把一个常量、变量或表达式结果的值绑定到一个变量上,若这个变量之前有其它的值,则这个变量之前的值会被覆盖。例如赋值语句 a=5 是指把常量5的值赋值给变量a;赋值语句 a=5+2是指把表达式 5+2 的计算结果7赋值给a;假设变量b的值是2025,若执行赋值语句 a=b,则变量a的值也会变成 2025;假设变量a的值是2025,此时再执行赋值语句 a=2026,则变量a的值被重新赋值变成 2026。
此外还有加法赋值、减法赋值、乘法赋值等。加法赋值 +=(a+=b与a=a+b相同,例如设a=5,则a+=2即为a=a+2,结果a被赋值为7。若难以理解可以将式子理解为 a1=5,a2=a1+2。其它赋值语句同理。)
七、函数和表达式 P72
在本阶段的学习中,我们只需要掌握 int()取整、float()浮点数、input()输入、print()输出这四个函数。(一)int() 取整函数:指把数值转换成整数型,不是四舍五入,不能对文字进行处理。例如 int(9.99) 和int(9.01) 的结果都是 9;而 int('abc')则会报错,因为'abc'加了引号不再是变量而是字符串。(二)float() 浮点函数:指把数值转换成浮点型(小数),若有小数位则保留小数位,若没有小数位则在不影响数值大小的前提下加一位小数位,不能对非数值进行处理。例如 float(9.99) 的结果是 9.99,float(9) 的结果是 9.0。上面的 int() 函数和 float() 都可以跟变量名,可以把变量的数值转换成指定类型(如整型或浮点型)。例如 int(abc) 或 float(abc),但需要提前给变量赋值,否则代码执行会报错。(三)input() 输入函数:input函数必须跟在赋值语句后面,表示要求程序使用者输入一个内容赋值给语句前面的变量,input函数输入的数值默认为字符串类型。例如我们要通过输入语句给变量x赋值,语句 input(x) 在执行后会报错,这是错误的语法,正确的语法应该是 x=input();另外input语句是可以加入提示语句的,在括号内用引号括起来的内容就是输入的提示语句,例如 x=input(‘请输入一个数字赋值给x:’),在运行这段代码时屏幕上就会显示‘请输入一个数字赋值给x:’这句提示语,这样的提示语句便于程序使用者了解当前的操作。(四)print() 输出函数:print函数可以输出字符串、数值、表达式(计算结果)和变量(变量的值)等对象,也可以是以上对象的组合,这些组合之间一般使用逗号隔开。例如假设r=10,pai=3.14,那么执行 print(‘圆的面积是’ , 2*pai*r*r , ’平方米。’) 语句的结果就是 ‘圆的面积是314平方米。’。这里print语句中有三段内容:第一段是字符串‘圆的面积是’;第二段是表达式 2*pai*r*r (Python会把表达式计算出结果后输出);第三段是字符串‘平方米’。这三段之间用英文的逗号隔开。特别注意的是:以上几个函数一般会进行嵌套使用。例如因为input函数输入的数值默认为字符串,不能参加算术运算,我们需要将输入的数值转换成整型,那么语句就可以写成 r=int(input(‘请输入圆半径r的值:’))。但在经过多次嵌套时几个函数的结构变得复杂,导致输入时容易错误,我们建议的输入方式是以各个函数为独立完整的单元进行,例如先把 int函数完整写成int()之后,再使用鼠标或键盘把光标定位到int()的括号内输入完整的input(),再定位到input()的括号内输入引号’’,最后定位到引号’’内输入提示语句内容。
在本阶段的学习中,我们只需要掌握 int()取整、float()浮点数、input()输入、print()输出这四个函数。
(一)int() 取整函数:指把数值转换成整数型,不是四舍五入,不能对文字进行处理。例如 int(9.99) 和int(9.01) 的结果都是 9;而 int('abc')则会报错,因为'abc'加了引号不再是变量而是字符串。
(二)float() 浮点函数:指把数值转换成浮点型(小数),若有小数位则保留小数位,若没有小数位则在不影响数值大小的前提下加一位小数位,不能对非数值进行处理。例如 float(9.99) 的结果是 9.99,float(9) 的结果是 9.0。
上面的 int() 函数和 float() 都可以跟变量名,可以把变量的数值转换成指定类型(如整型或浮点型)。例如 int(abc) 或 float(abc),但需要提前给变量赋值,否则代码执行会报错。
(三)input() 输入函数:input函数必须跟在赋值语句后面,表示要求程序使用者输入一个内容赋值给语句前面的变量,input函数输入的数值默认为字符串类型。
例如我们要通过输入语句给变量x赋值,语句 input(x) 在执行后会报错,这是错误的语法,正确的语法应该是 x=input();另外input语句是可以加入提示语句的,在括号内用引号括起来的内容就是输入的提示语句,例如 x=input(‘请输入一个数字赋值给x:’),在运行这段代码时屏幕上就会显示‘请输入一个数字赋值给x:’这句提示语,这样的提示语句便于程序使用者了解当前的操作。
(四)print() 输出函数:print函数可以输出字符串、数值、表达式(计算结果)和变量(变量的值)等对象,也可以是以上对象的组合,这些组合之间一般使用逗号隔开。
例如假设r=10,pai=3.14,那么执行 print(‘圆的面积是’ , 2*pai*r*r , ’平方米。’) 语句的结果就是 ‘圆的面积是314平方米。’。这里print语句中有三段内容:第一段是字符串‘圆的面积是’;第二段是表达式 2*pai*r*r (Python会把表达式计算出结果后输出);第三段是字符串‘平方米’。这三段之间用英文的逗号隔开。
特别注意的是:以上几个函数一般会进行嵌套使用。例如因为input函数输入的数值默认为字符串,不能参加算术运算,我们需要将输入的数值转换成整型,那么语句就可以写成 r=int(input(‘请输入圆半径r的值:’))。但在经过多次嵌套时几个函数的结构变得复杂,导致输入时容易错误,我们建议的输入方式是以各个函数为独立完整的单元进行,例如先把 int函数完整写成int()之后,再使用鼠标或键盘把光标定位到int()的括号内输入完整的input(),再定位到input()的括号内输入引号’’,最后定位到引号’’内输入提示语句内容。