1、第3章 Python语言基础学习目标:l 掌握Python的基础语法。l 掌握Python 的数据类型。l 掌握Python流程控制语句的使用方法。l 掌握Python函数的使用方法。l 掌握数据结构、流程控制语句和函数的综合运用。1.Python编码设置 Python3安装后,系统默认其源码文件为UTF-8编码,但是如果编辑器不支持UTF-8编码文件,或者要使用其编码方式,就要为源文件指定特定的字符编码。此时,需要在文件首行或者第二行插入一行特殊的注释行作为字符编码声明,其格式如下。#-*-coding:UTF-8-*-或者:#coding:UTF-8 和#coding =UTF-83.1.
2、1 Python的语法规则 2.代码注释 在程序设计中,常常要对程序代码添加注释,Python的代码注释有下:单行注释 单行注释通常是以#号开头,在#号后面紧接的是注释说明的文字。注意:注释行是不会被机器解释的。编码声明也是以#号开头,但它不是代码注释行,而且编码声明要放在首行或第二行才能被机器解释。3.1.1 Python的语法规则#这是输出语句(单行注释)print(你好!欢迎到Python社区来!);#这是输出语句(单行注释)示例 多行注释 在实际的程序文档中常常需要进行多行注释,多行注释有以下两种方法。l 在每一行前加#号即可。l 使用3个单引号或3个双引号将注释的内容括起来。3.1.
3、1 Python的语法规则 这是使用3个单引号的多行注释 这是使用3个单引号的多行注释 print(你好!欢迎到Python社区来!);示例 3.Python标识符(1)Python标识符是由英文字母、数字及下划线(_)组成。(2)Python中的标识符不能以数字开头。(3)Python标识符是区分大小写的。(4)以下划线开头的标识符是有特殊意义的,参见教材说明。4.Python关键字关键字 Python中的关键字见教材表3-1。5.缩进代码 Python最具特色的就是用缩进方式来标识代码块。在同一个代码块的语句必须保证相同的缩进空格数,否则,程序会报错。3.1.1 Python的语法规则 6
4、.多行语句 在Python编程中,如果一条语句太长,可以使用反斜杠()将一行的语句换行分为多行,而不会被机器识别为多条语句。但是在Python中,如果,或()括号里面有多行语句,在换行时不需要使用反斜杠(),而是使用逗号换行即可。如果一行包含多条语句,则使用分号(;)对多条语句分隔。3.1.1 Python的语法规则7.Python空行 在Python中,一般在函数之间或类的方法之间用空行分隔,以表示一段新的代码的开始。类和函数入口之间也可以用一行空行分隔,以突出函数入口的开始。空行的作用是用于分隔两段不同功能或含义的代码,以便于代码的阅读、维护或重构。8.用户输入函数 在Python中用户输
5、入信息的语句是input()函数。9.代码组 缩进相同的一组语句构成一个代码块,也称之代码组。3.1.1 Python的语法规则10.print()输出函数 print()函数默认输出是换行的,如果要实现不换行输出就需要在变量末尾加上end=“”,参见教材示例。11.import与from.import语句 在Python中可以使用import或者from.import语句来导入相应的模块。import与from.import的作用如表3-2。3.1.1 Python的语法规则1.常量 Python中的常量,就如同数字3,2.34,1.3e-2和字符串“this is a string”一样,
6、常量的值是不能改变的。2.变量(1)变量的特性 Python中的变量是指存储在计算机内存中的值。通过id()函数可以查看创建变量和变量重新赋值时内存空间的变化过程。在Python中,变量是不需要提前声明,创建时直接对其赋值即可,变量的数据类型是由赋值给变量的值决定。创建一个变量,首先要定义变量名和变量值,然后再通过赋值语句将变量值赋值给变量名。3.1.2 常量、变量与标准数据类型2.变量(2)变量的命名规则(3)变量值就是赋值给变量的数据。(4)变量赋值 通过单变量赋值创建变量和输出变量,除了单变量赋值外,Python还允许为多个变量赋值相同的值,其格式:a=b=c=1 另外,Python还可
7、以为多个对象指定多个变量,其格式:a,b,c=1,2,john”3.1.2 常量、变量与标准数据类型3.标准数据类型 Python 定义了一些标准的数据类型,以用于存储各种类型的数据。其中,Python的六个标准的数据类型分别为numbers(数字)、string(字符串)、list(列表)、tuple(元组)、dictionary(字典)和集合(set)等。3.1.2 常量、变量与标准数据类型 利用PyCharm开发工具编写第一个Python的脚本程序的方法。【例3-1】设计一个Python的脚本程序,该程序的功能是:当用户输入的成绩大于85分,则输出“优秀学生”,否则输出“合格学生”,并设
8、置程序编码方式为UTF-8。3.1.3 第一个Python程序 1.Python3的数值型数据类型 Python 中的数字是用于存储数值的,Python3支持的数值型数据类型有int(整数)、float(浮点数)、bool(布尔型)和complex(复数)。而数值型数据类型的表示方法见表3-3。表3-3数值型数据类型 3.2.1 数字 2、数字创建与删除 当给变量赋值一个数字时,数字(Number)对象就会被创建。如果要删除这些对象引用可使用del语句。del语句的语法:del var1,var2,var3.,varN3、数字类型转换 在Python 中,如果需要对数据内置的类型进行转换,只需
9、要将数据类型作为函数名即可。如在Python交互式终端的命令提示符后输入var=10.2;int(var),则会输出10整数。3.2.1 数字 4、数字运算 数字运算有+(加)、-(减)、*(乘)、/(除)或/(除)、%(取余)、*(乘方)。如6+7、6-4、3*2、6/4(6除4,返回是浮点数)、6/4(6除4,返回是整数)、6%4(6除4取余)、6*2(6的2次方)。【例3-2】说明Python中数字的运用。具体示例参见教材。3.2.1 数字3.2.2 字符串 Python中的字符串是一个有序的字符集合,是用于存储表示文本的信息。1.字符串定义 在Python中,可以使用单引号(),双引号
10、(“)或三引号(”“”)来标识字符串,引号的开始与结束必须是相同类型的。具体示例参见教材。2.Python转义字符 在Python的字符串中如需要使用特殊字符时,可使用反斜杠()转义字符来定义,如换行符用”n”表示。Python中常用的转义字符见表3-4。3.2.2 字符串3.字符串索引 字符串的索引分为正索引和负索引,通常说的索引就是指正索引。在Python中,正索引是从左到右去标记字母,索引是从0开始,也就是说从左边开始第一个字母索引是0,第二个字母索引是1,依此类推。负索引是从右到左去标记字母,然后加上一个负号(-),负索引的第一个值是-1,也就是说从右边开始第一个字母索引是-1,第二个
11、字母索引是-2,依此类推。3.2.2 字符串4.字符串的操作(1)字符串提取 字符串的提取就是通过索引获取字符串中指定位置的字符。字符串提取的方法是在变量名后使用方括号()将需要提取的字符索引放置在方括号中即可。例如变量var=Hello,如果要提取出字符串中字母“H”和“e”,可用var0输出“H”字母,用var1输出“e”字母。3.2.2 字符串4.字符串的操作(2)字符串切片 字符串切片方法是变量名后使用方括号(i:j),其中i表示截取字符串的开始索引,j表示结束索引。注意:在截取字符串时将包含起始字符,但不包含结束字符,这是一个半开闭区间。同时,Python还提供了一个len()内置函
12、数用于返回字符串(或其他有长度对象)的长度。例如变量var=Hello,如果要截取出子字符串“ell”,则使用var1:4即可。而使用var2:5则输出“llo”子字符串。注意:在Python中,字符串是不可以更改的。3.2.2 字符串4.字符串的操作(3)字符串拼接 字符串拼接也就是将字符串连接,字符串连接的方法就是使用加号(+)将字符串变量连接起来。如果需要重复输出字符串,可使用星号(*),重复输出字符串格式:重复次数*字符串或者字符串*重复次数。另外,相邻的两个字符串本文会自动拼接在一起。(4)判断字符串是否包含指定字符串 判断字符串是否包含指定字符串的方法:使用(in)操作符。(5)判
13、断字符串中不包含指定字符串 判断字符串中不包含指定字符串的方法:使用(not in)操作符。3.2.2 字符串4.字符串的操作(6)字符串格式化 Python格式化字符串方法,就是在格式化操作符(%)的左侧放一个格式化字符串(包含%的字符串),在右侧放一个或多个对象,这些对象是想在左侧插入的转换目标。Python字符串格式化符号见表3-5。【例3-3】说明Python中字符串的运用。参见教材。3.2.3 Python数据结构组成1.数据结构类型 除了数字和字符串外,Python还有4个内建的数据结构,也称为容器(container),其中主要包含序列(如列表和元组)、映射(如字典)以及集合3种
14、基本的数据结构类型。(1)序列类型 序列是数据结构对象的有序排列,Python中有6种内建的序列,包括字符串(string)、列表(list)、元组(tuple)、Unicode字符串、buffer对象和xrange对象,其中列表和元组是最常见的类型。3.2.3 Python数据结构组成1.数据结构类型(2)映射类型 映射类型就是存储了对象与对象之间的映射关系的数据结构类型,Python中唯一的映射类型的数据类型是字典。字典中的每个元素都存在相应的名称(称为键)与之一一对应。字典相当于带有各自名称的元素组成的集合,与序列不同的是字典中的元素没有排列顺序。(3)集合类型 Python还提供了一种
15、称为集合的数据结构。集合当中的元素是不能重复出现,集合中的元素是相对唯一的,并且元素不存在排列顺序。集合类型包括可变集合(set)和不可变集合(frozenset)。3.2.3 Python数据结构组成2.可变数据类型与不可变数据类型区别 Python中可变数据类型有列表(list)和字典(dict),不可变数据类型有整型(int)、浮点型(float)、字符串型(string)和元组(tuple)。可变数据类型可以直接对数据结构对象进行元素的赋值修改、删除或增加操作,而不需要重新创建一个对象。不可变数据类型是不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象。3.2.4 列表
16、 列表(list)是Python对象作为其元素并按顺序排列构成的有序集合。列表中的每个元素都有各自的位置编号,称为索引。列表中的元素不需要具有相同的数据类型。1.创建列表 在Python中创建列表的方法有两种,一种是使用方括号 创建,另一种是使用list()函数创建。(1)使用方括号 创建列表,只需要把所需的列表元素用逗号分隔开,并将这些列表元素用方括号()括起来即可。3.2.4 列表 1.创建列表(2)使用list()函数创建列表 Python中list()函数的作用实质上是将传入的数据结构换成列表类型。例如向函数传入一个元组对象,就会将对象从元组类型转变为列表类型。如果不传入任何对象到li
17、st()函数中,则会创建一个空列表,而通过list()函数对字符串创建列表非常有效。2.列表索引 列表是属于序列类型的数据结构,列表中的每个元素都是有各自的位置编号(称为索引)。列表索引与字符串的索引类似,也分为正索引(也称为索引)和负索引两种。3.2.4 列表3.列表元素的提取和切片操作(1)通过索引访问提取列表元素 为提取列表中的某个元素,可采用在列表对象后面紧接方括号i,其中i是指定的索引。如果索引超出了列表正索引或负索引的范围,Python会返回一个错误。(2)列表切片操作 列表切片操作时,需要传入所提取子序列起始元素的索引,终止元素的索引和提取的步长值,此时得到的序列切片将包含从起始
18、元素开始,以提取步长为间隔,到终止元素之前的所有元素。切片操作的格式:序列对象起始元素索引:终止元素索引:步长值3.2.4 列表4.列表中常用函数和方法 (1)列表元素的添加 append()函数:使用append()函数向列表对象中添加元素的方法就是向append传入需要添加到列表对象的一个元素,则该元素会被追加到列表的尾部。extend()函数:使用extend()函数能够将另一个列表添加到列表的末尾,相当于将两个列表进行拼接。insert()函数:使用insert()函数也可以向列表添加一个元素,但与append()函数不同是,insert()函数可以在指定位置添加。具体示例见教材。3.
19、2.4 列表(2)删除列表元素 使用del语句删除列表元素 格式:del 列表索引号 使用pop语句删除列表元素 使用pop语句删除列表元素的方法是将元素的索引传入pop语句中,将会获取该元素,并将其在列表中删除,相当于把列表中的元素抽离出来。若不指定元素位置,pop语句将指定是列表中最后一个元素。使用pop语句格式:列表对象.pop(索引号)。3.2.4 列表(2)删除列表元素 使用remove语句删除列表元素 除了指定元素的位置进行元素的删除外,还可以指定元素进行删除。将指定的元素放入remove语句,则列表中第一次出现的该元素会被删除。使用remove语句格式如下:列表对象.remove
20、(元素值)。(3)修改列表元素 由于列表是可变的,修改列表元素最简单的方法是提取该元素并进行赋值操作。在对列表进行添加元素、删除元素和修改元素操作时,如果需要保留原来的列表不变,只有采用copy语句创建列表的副本。copy语句的格式:列表对象.copy()3.2.4 列表(4)查询列表元素位置 利用列表方法index来查询指定元素在列表中第一次出现的位置索引。判断列表中是否包含某个元素,还可以使用in函数。in函数的格式如下。元素 in 列表对象 Python中还有其他常用的操作见表3-6。3.2.5 元组 元组与列表相似,都是有序元素的集合,并可以包含任意类型的元素。但元组与列表不同的是元组
21、是不可变的,也就是说元组一旦创建后就不能修改。1.创建元组 (1)使用园括号()创建元组 元组创建很简单,只需要使用园括号将有序元素括起来,并用逗号隔开。(2)使用tuple()函数创建元组 tuple()函数能够将其他数据结构对象转换成元组类型。具体示例见教材。3.2.5 元组2.元组索引 元组与列表类似,也分为正索引(也称为索引)和负索引两种。3.元组元素的提取和切片操作 (1)通过索引访问提取元素 与列表索引访问提取元素一样,只要传入元素索引,就可以获得对应的元素。(2)元组切片操作 元组切片操作与列表类似,只需要传入所提取子序列起始元素的索引,终止元素的索引和提取的步长值即可。具体示例
22、见教材。3.2.5 元组4.元组解包 将元组中的各个元素赋值给多个不同变量的操作通常称为元组解包,元组解包的格式如下。var1,var2,varn=tuple5.元组中常用方法和函数 元组中常用函数和方法见表3-7。【例3-4】说明Python中列表与元组的运用3.2.6 字典 字典主要是通过键来访问对应的元素,为了获取指定键所关联的值,将键放到一对方括号中,如“值=字典对象键”。1.创建字典 (1)使用花括号创建字典 字典是用花括号()括起来的一系列键值对,其中每个键值(key=value)对的键与值之间用冒号(:)分隔,各键值对之间用逗号(,)隔开,字典的格式如下。key1:value1,
23、key2:value2,keyn:valuen (2)使用dict()函数创建字典 具体示例见教材。3.2.6 字典2.获取字典的元素 (1)通过键获取字典元素 (2)使用字典get()函数 具体示例见教材。3.字典常用函数和方法 (1)添加字典元素 通过向字典中传入一个新的键,并对这个新键进行赋值操作,可实现向字典中添加一个元素的功能,其格式如下。dict_namenew_key=new_value 字典中的update方法可实现将两个字典中的键值对进行合并。3.2.6 字典(2)删除字典元素 使用del语句可以删除某个键值对,另外,字典也包含pop语句,只要传入键,函数就能将对应的值从字典
24、中抽离,若要清空字典内容,可以使用字典方法的clear()函数。(3)修改字典元素,可使用键访问赋值来修改。(4)查询和获取字典元素信息 除了可以使用字典元素提取的方法进行查询外,还可以使用in()函数进行判断。在字典方法中,可以使用keys获取字典中的所有键,values获取字典中的所有值,itmes得到字典中的所有键值对。【例3-5】说明Python中字典的运用。3.2.7 集合 集合(set)就是一个由唯一元素组成的非排序的集合体。1.创建集合 创建可变集合方法是使用花括号 或set()函数。其格式如下。value0,value1,value2#花括号中元素是数字、字符串、元组 set(
25、value)#value是列表或元组 2.集合的运算 见表3-8集合运算方法和表3-9集合运算符,。3.集合常用函数和方法 见表3-10集合常用函数和方法 【例3-6】说明Python中集合的运用。3.3.1 if 条件语句 if 条件语句的基本语法格式如下。if 条件表达式:语句块 if语句执行过程,首先判断条件表达式(也就是布尔表达式)是否成立,即条件表达式是否为真(True),如果为真(True),则执行冒号(:)下面的语句块,否则,就不执行该语句块。if语句控制结构图如图3-4所示。3.3.1 if 条件语句 除了单路分支语句外,还会经常遇到多路分支语句。多路分支语句的语法格式如下。i
26、f 条件表达式1:分支一语句块 elif 条件表达式2:分支二语句块 else:分支三语句块 3.3.2 while 循环控制语句 Python中的循环控制语句有while 语句和for语句,其中,while语句是常用的循环控制语句之一,它的语法格式如下。while (条件表达式):语句块 while语句的执行过程,首先判断条件表达式是否为真,如果结果为真,则执行条件表达式冒号(:)后的语句块,执行完毕后再次判断条件表达式是否为真,如果仍然为真,则再次执行冒号(:)后的语句块,如此反复,直到条件表达式为假。循环控制语句的控制结构如图3-5所示。3.3.3 for 循环控制语句 在Python中
27、,for循环是一个通用的序列迭代器,可以遍历任何有序列的序列,如字符串、列表、元组等。Python中的for语句接收可迭代对象,如序列和迭代器作为其参数,每次循环可以调取其中的一个元素。Python的for循环看上去像伪代码,非常简洁。for 循环控制语句的格式如下。for in:语句块 。3.3.4 range()函数作用 range()函数是Python的内置函数,它可以返回一系列连续添加的整数,生成一个列表对象。range()函数常用在for循环中可作为索引使用。在Python 3.0中range()函数是一个迭代器。range()函数语法格式如下。range(start,end,ste
28、p)1、函数中的参数说明 2、在Python中,range()函数的作用 。3.3.5 break、continue、pass语句1.break语句 在while和for循环中,break语句的作用是终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,就停止执行循环语句,跳出循环。在嵌套循环中,break语句可以停止执行最深层的循环,并开始执行下一行代码。在Python中,break语句的语法为break。3.3.5 break、continue、pass语句2.continue语句 在while和for循环中,continue语句作用是告诉Python跳过当前循环的剩余语句,
29、然后继续进行下一轮循环。continue语句与break语句不同,continue语句是跳出本次循环,而break语句是跳出整个循环。continue语句的语法格式为continue。3.pass语句 pass是空语句,作用是保持程序结构的完整性。pass语句不做任何事情,一般用做占位语句。pass语句的语法格式为pass。3.4.1 自定义函数 在Python中定义函数方法是以def关键词开头,其后紧接函数标识符名称和圆括号()。园括号内包含将要在函数体中使用的形式参数(简称形参),各参数之间用逗号分割,定义语句以冒号(:)结束。函数体编写另起一行,函数体的缩进为4个空格或者一个制表符,函数
30、定义的语法格式如下。def 函数名(参数列表):函数体3.4.2 设置函数参数 参数对于函数而言,只是作为函数的输入,目的是调用函数时,可以传递不同的值给函数,然后得到相应的结果。在定义函数时,函数名后面,园括号中的变量名称为形式参数,或者称为形参;在调用函数时,函数名后面,园括号中的变量名称叫做实际参数,或者称为实参。Python中的函数参数主要有位置参数、关键字参数、默认参数和可变参数。3.4.3 返回函数值 函数可以处理一些数据,并返回一个或一组值。函数返回的值称为返回值。如果想要保存或者调用函数的返回值,需要用到return语句。Python对函数返回值的数据类型没有限制,包括列表或字
31、典等复杂的数据结构。当程序执行到函数中的return语句时,就会将指定的值返回并结束函数,后面语句不会被执行。3.4.4 调用自定义函数 Python中使用“函数名()”的格式对函数进行调用,根据参数传入方式不同,总共有3种函数调用方式,分别为位置参数调用、关键字参数调用、可变参数调用。具体示例见教材。3.4.5 局部变量和全局变量1.局部变量 在定义函数时,往往需要在函数内部对变量进行定义和赋值,在函数体内定义的变量为局部变量,局部变量只能在其被赋值的函数内部访问。2.全局变量 定义在函数体外的变量称为全局变量。全局变量可以在函数体内被调用。具体示例见教材。3.4.6 函数嵌套 Python
32、允许在函数中定义另外一个函数,这就是函数的嵌套。定义在其他函数内部的函数称为内建函数,而包含有内建函数的函数称为外部函数。其中,内建函数中的局部变量独立于外部函数,如果想使用外部函数的变量,则需要声明该变量为全局变量。具体示例见教材 3.4.7 匿名函数 Python是使用lambda创建匿名函数。所谓匿名,就是不使用def语句定义一个函数。lambda的主体是一个表达式,只能在lambda表达式中封装有限的逻辑。lambda 函数拥有自己的命名空间,并且不能访问自己参数列表之外或全局命名空间里的参数。具体示例见教材。项目实践项目描述项目描述 设计一个购物车处理程序,完成如下操作。创建商品价格
33、表,包括商品名称、商品价格,商品内容自拟。创建一个购物车,购物车用于保存所购商品名称和商品价格。输入提示信息:购物金额上限、商品编号或p打印,m移出,v查看,q退出操作符。当购物车内商品货款合计大于购物金额时,提示不能购买商品。当购物车内商品货款合计小于购物金额时,返回重新选择购物操作。选择“p”打印出购物清单,包括商品名称、商品价格、购物合计金额和余额 选择“m”移出购买商品,首先显示购物清单,输入购买车中商品编号,删除购物车中商品,重新显示修改后购物清单。选择“v”查看购物清单。选择“q”退出购物程序。本章小结 本章介绍了Python基础语法,Python 的数字、字符串、列表、元组、字典和集合等数据类型的特点和运用,Python的条件分支语句、for循环和while循环语句运用,以及函数的基本概念,创建函数和调用函数的方法等。最后通过项目实践,介绍了运用Python的列表、流程控制语句和函数,设计一个Python购物车项目。谢谢!