1、4.1 程序设计语言的基础知识 l在运用计算机程序求解问题时,需要有在运用计算机程序求解问题时,需要有- -种能够实现人机交流的语言,即种能够实现人机交流的语言,即 程序设计语言。人们通过这种语言把求解的方法和步骤告诉计算机,计程序设计语言。人们通过这种语言把求解的方法和步骤告诉计算机,计 算机则按照程序的流程自动求解问题。算机则按照程序的流程自动求解问题。 l例如,求解购买纪念品的最佳方案问题,需要知道各商品的单价,才能例如,求解购买纪念品的最佳方案问题,需要知道各商品的单价,才能 设计出最佳方案。现在设总预算为设计出最佳方案。现在设总预算为S.S.需要购买需要购买1010个不同品种的商品数
2、量个不同品种的商品数量 为为x x1 1,x x2 2,x x10 10,则求解问题的思路如下 ,则求解问题的思路如下: : (1)上网搜索各个商品的价格。 (2)求出各个商品的最低单价a1,a2,a10。 (3)令E=S- (a1x1+ a2x2 + a10 x10).求x1,x2,x10的值(其中x1,x2,x10为正整数),使E最小(E0)。 l在编写上述求解算法程序前,首先应掌握程序设计的一此在编写上述求解算法程序前,首先应掌握程序设计的一此 基础知识,包基础知识,包 括程序的常量和变量、数据类型、运算符与表达式及函数等。我们以括程序的常量和变量、数据类型、运算符与表达式及函数等。我们
3、以 PythonPython语言为例。语言为例。 4.1.1 Python的常量和变量 l数据总是以常量或变量两种形式出现在程序中。数据总是以常量或变量两种形式出现在程序中。 l1.1.常量常量 l常量是指在程序运行过程中其值始终不发生变化的量,通常是固定常量是指在程序运行过程中其值始终不发生变化的量,通常是固定 的数值或字符串。例如,的数值或字符串。例如,4545,-30.2001-30.2001,Hello, GoodHello, Good等都是等都是 常量。常量可以在程序中直接使用,如语句常量。常量可以在程序中直接使用,如语句“x=30 x=30* *40 40 表示将表示将3030 乘
4、乘4040的结果赋值给的结果赋值给x x,其中,其中3030和和140140都是常量,可以直接在程序中使都是常量,可以直接在程序中使 用以表示数值用以表示数值3030和和4040。 l2.2.变量变量 l变量是指在程序运行过程中其值可以发生变化的量。在程序设计语变量是指在程序运行过程中其值可以发生变化的量。在程序设计语 言中,变量可以用指定的名字来代表,即变量由变量的言中,变量可以用指定的名字来代表,即变量由变量的“标识标识 符符”( ( 又称又称“名字名字”) )和变量的和变量的“内容内容 ( (又称又称“值值”) )两部分组成。两部分组成。 lPythonPython程序设计语言规定标识符
5、由字母程序设计语言规定标识符由字母(A-Z(A-Z, az)az)、 数字数字(09)(09)、 下划线组成,并且其下划线组成,并且其 第一一个字符必须是字母或下划线,而不能第一一个字符必须是字母或下划线,而不能 是数字,如是数字,如s1s1, k, num, paik, num, pai等。在标识符等。在标识符 中,字母大小写是有区别的,如中,字母大小写是有区别的,如value value 与与 Value Value 是两个不同的标识符。是两个不同的标识符。 l在在PythonPython中,如果使用非法标识符,在运行中,如果使用非法标识符,在运行 程序时会有相关报错信息。例如,以下是报程
6、序时会有相关报错信息。例如,以下是报 错非法标识符的程序错非法标识符的程序: : l变量的内容在程序运行过程中是可以变化的。变量的内容在程序运行过程中是可以变化的。 例如,一个变量的名字为例如,一个变量的名字为E E,其内容可以为,其内容可以为 50,50,也可以为也可以为7070。变量就像一个房间一样,。变量就像一个房间一样, 变量名相当于房间的房间号,内容相当于居变量名相当于房间的房间号,内容相当于居 住于房间的不同的人员等。住于房间的不同的人员等。 l需要注意的是,需要注意的是,PythonPython是动态语言,动态语言的变量不需要进行定义数是动态语言,动态语言的变量不需要进行定义数
7、据类型,其数据类型可以不固定,是动态的,需要根据其赋子的值来确据类型,其数据类型可以不固定,是动态的,需要根据其赋子的值来确 定其数据类型。与之对应的是静态语言,静态语言在定义变量时必须指定其数据类型。与之对应的是静态语言,静态语言在定义变量时必须指 定变量类型,如果赋值的时候类型不匹配,就会报错。因此,和静态语定变量类型,如果赋值的时候类型不匹配,就会报错。因此,和静态语 言相比,动态语言更灵活。同样一个变量是可以重复赋值的,而且可以言相比,动态语言更灵活。同样一个变量是可以重复赋值的,而且可以 被赋予不同类型的值,如表被赋予不同类型的值,如表4. 24. 2所示。同时,所示。同时,Pyth
8、onPython支持支持 多种数据类型,多种数据类型, 在计算机内部,可以把任何数据都看成一个在计算机内部,可以把任何数据都看成一个“对象对象”,而变量就是在程,而变量就是在程 序中用来指向这些数据对象的,对变量赋值就是把数据和变量关联起来。序中用来指向这些数据对象的,对变量赋值就是把数据和变量关联起来。 4.1.2 Python的数据类型 l计算机能处理的远不只数值数据,还可以是文本、图形、音频、视计算机能处理的远不只数值数据,还可以是文本、图形、音频、视 频、网页等各种各样的数据。不同的数据,需要定义不同的数据类频、网页等各种各样的数据。不同的数据,需要定义不同的数据类 型。型。Pytho
9、nPython能够能够 直接处理的常用数据类型有直接处理的常用数据类型有Number (Number (数值数值) )、 String (String (字符串字符串) )、List(List(列表列表) )、 Tuple (Tuple (元组元组) )、Sets(Sets(集合集合) )、 Dictionary (Dictionary (字典字典) )等。表等。表4-34-3中列出了中列出了PythonPython常用的基本数据类型。常用的基本数据类型。 数据类型类型说 Number (数值) Python支持以下三种不同的数值类型: 整型(int)。通常被称为整型或整数,是正或负整数,不带
10、小数点。在Python 3.x版本中,整型是没有限制大小的,可 以当作 Long类型使用。 浮点型(float)。浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示,如2.5e2 =2.5 103=250。 复数( complex )。复数由实数部分和虚数部分构成,可以用atbj或者complex(a,b)表示,复数的实部a和虚部b都是 浮点型。 String (字符串) 字符串是以单引号或双引号括起来的任意文本,如abc xyz等。字符串的索引从0开始,-1为从末尾开始的位置。 List (列表) 列表是写在方括号“”之间、用逗号分隔开的元素列表。例如,list1=Good, R
11、un,1997, 2000和 list2=1,2,3,4,5,6,7。 列表的数据项不需要具有相同的类型。与字符串的索引一样,列表索引从0开始。 Python已经内置确定列表的长度以及确定最大和最小的元素的方法。 Tuple (元组) Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,创建元组只需要在括号中添加元素, 并使用逗号隔开。例如,tup1=(Good,Run,1997,2000)和ltup2=(1,2,3,4,5)。元组与字符串类似,可以被索引且下 标索引从0开始,-1为从末尾开始的位置,也可以进行截取。 Sets (集合) 集合是一个无序不重复元素的序列
12、。基本功能是进行成员关系测试和删除重复元素。可以使用大括号 或者set()函数 创建集合。创建一个空集合必须用set()而不是,因为是用来创建一个空字典的。 Dictionary (字典) 字典是无序的对象集合。与列表的区别在于:列表是有序的对象集合。字典当中的元素是通过键来存取的,而不是通 过偏移存取。字典用 标识,它是一个无序的“键( key):值( value)”对集合。键必须使用不可变类型。在同一个字 典中,键必须是唯一的, l探究活动探究活动 l交流交流 各小组讨论、交流相应项目选题实施过程中可能用到的数据类型。 l讨论讨论 各小组对“合理定义数据类型可以优化程序的运行”这一观点进行
13、交流和讨论,并举例说明。 4.1.3 Python的运算符与表达式 l在在PythonPython程序设计语言中对常量或变量进行运算或处理的符号称为程序设计语言中对常量或变量进行运算或处理的符号称为 运算符,参与运算的对象称为操作数。常用的运算符有算术运算符、运算符,参与运算的对象称为操作数。常用的运算符有算术运算符、 逻辑运算符、关系运算符、赋值运算符、成员运算符等。由运算符、逻辑运算符、关系运算符、赋值运算符、成员运算符等。由运算符、 操作数连接而成的式子称为表达式。操作数可以是常量、变量、雨操作数连接而成的式子称为表达式。操作数可以是常量、变量、雨 数等。数等。 l1.1.算术运算符与算
14、术表达式算术运算符与算术表达式 l算术运算符包括算术运算符包括“+”“-+”“-”“”“* *”“/”“%“/”“%”“”“* * *”和和“/”,分,分 别表示加、减、乘、除、求余、幂运算和整除。例如,别表示加、减、乘、除、求余、幂运算和整除。例如,“7%3=17%3=1” 表示表示7 7除以除以3 3的余数,即的余数,即1 1;“10“10* * *2020”表示表示1010的的2020次方,即次方,即10201020。 由 算 术 运 算 符 连 接 的 表 达 式 称 为 算 术 表 达 式 。 例 如 ,由 算 术 运 算 符 连 接 的 表 达 式 称 为 算 术 表 达 式 。
15、例 如 , “a+3a+3* *e e”“(x+y)“(x+y)* *n-7n-7”等。等。 l2.2.逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式 l逻辑运算符包括逻辑运算符包括“andand”( ( 与与) )、“oror”( (或或) )、“notnot”( (非非) )共三个。由逻辑运共三个。由逻辑运 算符连接而成的表达式称为逻辑表达式。逻辑表达式的值为算符连接而成的表达式称为逻辑表达式。逻辑表达式的值为TrueTrue或或FalseFalse。可。可 对应于整数对应于整数1 1或或0 0直接参与其他运算。逻辑表达式的运算顺序要根据逻辑运算符直接参与其他运算。逻辑表达式的运算顺序要根据
16、逻辑运算符 的优先级而定。假设变量的优先级而定。假设变量a a为为0,b0,b为为1 1,c c为为2 2,则对应的逻辑表达式及其值如表,则对应的逻辑表达式及其值如表 4-44-4所示。所示。 l3.3.关系运算符与关系表达式关系运算符与关系表达式 l判断数据大小关系的运算符称为关系运算符,关系运算符有判断数据大小关系的运算符称为关系运算符,关系运算符有 “”(”(大于大于) )、“=”(=”(大于等于大于等于) )、“”(”(小于小于) )、“=”(=”(小于等小于等 于于) )、“=”(=”(等于等于) )、“”(”(不等于不等于) )。 l由关系运算符连接而成的表达式称为关系表达式。关系
17、表达式的值由关系运算符连接而成的表达式称为关系表达式。关系表达式的值 为为TrueTrue或或False,False,对应于整数对应于整数1 1或或0 0直接参与其他运算。例如,关系表直接参与其他运算。例如,关系表 达式达式“5=3”5=3”的值为的值为True, “98”True, “98”的值为的值为FalseFalse。 l4.4.赋值运算符与赋值表达式赋值运算符与赋值表达式 l在在PythonPython中对变量的赋值通过赋值运算符中对变量的赋值通过赋值运算符“=”=”来完成。赋值号不来完成。赋值号不 是等号,具有方向性,由右边赋给左边,且赋值号左边只能是变量,是等号,具有方向性,由右
18、边赋给左边,且赋值号左边只能是变量, 而不能是常量或表达式。而不能是常量或表达式。PythonPython的赋值运算符有多种,具体描述如的赋值运算符有多种,具体描述如 表表4 -54 -5所示。所示。 l5.5.成员运算符成员运算符 l除了前面的运算符,除了前面的运算符,PythonPython用成员运算符判断序列中是否有某个成用成员运算符判断序列中是否有某个成 员。员。PythonPython的成员运算符描述如表的成员运算符描述如表4-64-6所示。所示。 l6.6.运算符的优先级运算符的优先级 l当一个表达式中有多种运算符时,运算的顺序将根据运算符的优先当一个表达式中有多种运算符时,运算的
19、顺序将根据运算符的优先 级由高到低进行运算。如果是同级运算则按从左到右的顺序进行。级由高到低进行运算。如果是同级运算则按从左到右的顺序进行。 PythonPython常常 用运算符的优先级如表用运算符的优先级如表4-74-7所示。所示。 l思考思考 各小组讨论程序设计中的运算符与表达式跟数学中的运算符与表达式的异同。 l4.1.4 Python4.1.4 Python的函数的函数 l函数是函数是PythonPython语言程序的基语言程序的基 石,是组织好的、可重复使石,是组织好的、可重复使 用的、用来实现单用的、用来实现单- -或相关联或相关联 功能的代码段。功能的代码段。Python Py
20、thon 默认默认 带有一些常用的函数,如求带有一些常用的函数,如求 绝对值函数、求和函数、求绝对值函数、求和函数、求 最 大 值 和 最 小 值 函 数 等 。最 大 值 和 最 小 值 函 数 等 。 PythonPython中常用的函数如表中常用的函数如表4 -4 - 8 8所示。所示。 l拓展拓展 Python程序设计开发环境Python是一种面向对象的解释型计算机程序设计语言。Python语言的安装包内置 了开发环境IDLE。为了快捷、方便地掌握Python语言编程,这里介绍另一个开源的Python发行版本 Anaconda及其程序设计开发环境Jupyter notebook,它包含
21、了Python语言完整的内核、功能强大的标准库 和第三方扩展库等。按照教科书配套学习资源包“关于Python语言编程环境及各章程序使用说明”的指引 方法,获取并运行文件安装Anaconda。安装成功后,双击“Anaconda Navigator”图标,选择“Jupyter notebook”,即可进入Python程序设计开发环境,其界面如图4-4所示。 Python程序设计开发环境Jupyter notebook的使用操作,可查看教科书的配套学习资源包。 l项目实施项目实施 各小组根据项目选题及拟订的项目方案,结合本节所学知识,开展以下活动。 1.分析相应的程序设计语言的基本知识 2.分析所选程序设计语言的特点。