大学计算机-计算思维与人工智能(第2版)课件 第5章 Python程序设计进阶_第1页
大学计算机-计算思维与人工智能(第2版)课件 第5章 Python程序设计进阶_第2页
大学计算机-计算思维与人工智能(第2版)课件 第5章 Python程序设计进阶_第3页
大学计算机-计算思维与人工智能(第2版)课件 第5章 Python程序设计进阶_第4页
大学计算机-计算思维与人工智能(第2版)课件 第5章 Python程序设计进阶_第5页
已阅读5页,还剩126页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章

Python程序设计进阶content重点难点重点:1.函数2.列表3.元组4.字典5.数据分析与可视化难点:1.函数2.列表Contents目录5.1函数5.2列表5.3元组5.4字典5.5集合5.6文件5.7数据分析与可视化5.1函数函数函数是用于实现特定功能或相关功能的代码块这些代码块是构建大规模程序的基本单元通过合理使用函数,开发者能够显著提升代码的可读性、可维护性和可扩展性5.1.1函数的定义和调用函数的定义函数代码块以

def

关键词开头,后接函数标识符名称(简称函数名)和圆括号()。函数可以接收零个或多个参数,参数之间用逗号分隔。参数是函数接收外部数据的入口。函数体是函数的具体实现代码,包含要执行的语句。函数内容以冒号起始,并且缩进。return语句用于返回函数执行结果。如果没有return语句,函数默认返回

None。def函数名(参数):

函数体return返回值#可选defprintfun(str):#打印输入的字符串

print(str)return函数的调用printfun("HelloPython!")printfun("再次调用同一函数")defprintfun(str):#打印输入的字符串

print(str)return

MORETHENTEMPLATE调用程序在函数处暂停。实参的值赋值给形参。转到函数入口处,并执行该函数的函数体代码函数调用结束,把函数的返回值带到函数调用处,程序同时返回到调用处继续执行后续代码。函数的调用过程defmax(a,b):

ifa>b:returnaelse:returnbMaxnum1=max(1,2)print(Maxnum1)

MORETHENTEMPLATE主程序执行到第1行代码处暂停把实参1赋值给形参a,实参2赋值给形参b执行函数max的函数体,函数执行结束把执行结果2带回到主程序调用处,并赋值给变量bignum1此时执行完主程序的第1行代码,接下去继续执行后续代码。max函数的调用过程defmax(a,b):

ifa>b:returnaelse:returnb#主程序从此开始Maxnum1=max(1,2)print(Maxnum1)1Maxnum1=max(1,2)2print(Maxnum1)3num1=eval(input(“请输入第1个数”))4num2=eval(input(“请输入第2个数”))5Maxnum2=max(num1,num2)6print(Maxnum2)defmax(a,b):ifa>b:returnaelse:returnbdefmax(a,b):ifa>b:returnaelse:returnba=1b=2a=num1b=num2max函数的调用过程5.1.2

函数参数Python函数支持多种参数传递方式:位置参数:按照参数定义的顺序传递参数。关键字参数:使用参数名指定传递的值,顺序可以任意。默认参数:在定义函数时为参数指定默认值,调用时可以不传递该参数。可变参数:使用*args接收任意数量的位置参数,使用**kwargs接收任意数量的关键字参数。位置参数默认参数在定义函数时指定默认值,调用时可不传该参数,直接使用默认值。定义与规则01示例02关键字参数关键字参数通过参数名指定值,调用时顺序可任意,Python解释器匹配参数名与值。定义与规则01示例中参数虽顺序颠倒,仍正确输出。示例02默认参数默认参数在定义函数时指定默认值,调用时可不传该参数,直接使用默认值。定义与规则01示例中printinfo(name="Alice")未传age,使用默认值25。示例02可变参数*args接受任意数量位置参数,打包成元组。必须放在普通位置参数后。*args(可变位置参数)01*args收集了所有传入的位置参数(1,2,3,"hello",5),并将其存储为一个元组。示例02可变参数01**kwargs收集了所有传入的关键字参数,并将其存储为一个字典{'name':'Alice','age':25,'city':'Beijing'}示例02**kwargs(可变关键字参数)**kwargs接受任意数量关键字参数,打包成字典。必须放在*args和普通位置参数后。5.1.3

函数返回值函数返回值函数用return返回值,无return时默认返回None。定义与规则01示例025.1.4

匿名函数匿名函数定义匿名函数,语法为:lambda参数:表达式功能有限,主体为单一表达式。lambda函数有独立命名空间,不能访问外部变量。定义与规则01示例025.1.5

变量的作用域变量的作用域变量作用域分全局变量和局部变量。全局变量在函数外定义,局部变量在函数内定义。定义与规则01示例中x为全局变量,y为局部变量,外部无法访问局部变量y。示例025.1.6

常用库和函数random库及常用函数应用场景广泛应用于游戏开发、数据分析、蒙特卡罗模拟、测试用例生成等领域,为需要随机性的场景提供支持。导入random库importrandomfromrandomimport*【例5-12】“读心术”游戏。思路导入random库,生成1到100之间的随机数作为目标数字,用户输入猜测,根据提示调整猜测范围,直到猜对或次数用完。math库及常用函数Python的math库是科学计算、数据分析和机器学习领域中Python开发者所依赖的关键工具。math库及常用函数math库及常用函数【例5-13】计算三角形面积。思路:使用海伦公式计算三角形面积。从键盘输入3个数作为三角形的边长,在屏幕上显示输出由这3个边所构成三角形的面积(保留2位小数)。turtle库及常用函数turtle库是Python中的一个入门级的图形绘制函数库,它提供了一个虚拟的“海龟”作为画笔,程序设计者通过编写指令来控制这个“海龟”在屏幕上移动,其移动轨迹就形成了绘制的图形。导入库:importturtlefromturtleimport*设置画布设置画布大小和位置,width和height为画布宽高,startx和starty为画布左上角坐标,默认居中显示。setup(width,height,startx,starty)设置画笔画布中心为坐标原点(0,0),水平方向为x轴,垂直方向为y轴,形成四象限坐标系。01坐标系将画笔移动到坐标为(x,y)的位置。02goto(x,y)控制画笔forward(d)使画笔在当前方向上前进d像素。backward(d)使画笔在当前方向上后退d像素。circle(r,extend)画圆或弧,半径为正(负)表示圆心在画笔向右(左)侧。setheading(angle)将画笔朝向设置为指定的绝对角度angle。left(angle)使画笔向左旋转指定的角度angle。right(angle)使画笔向右旋转指定的角度angle。penup()提起画笔,暂时不绘画。pendown()放下画笔,开始绘画。

speed(speed)设置画笔的移动速度,范围在[0,10]之间。pensize(width)设置画笔线条的粗细,数值越大画笔越粗。设置填充颜色,可以是颜色单词或RGB三元组。fillcolor(color)设置画笔的颜色,可以是颜色单词或RGB三元组。pencolor(color)使用goto定位,forward和left绘制正方形。绘制正方形使用pencolor设置颜色,forward和right绘制五角星。绘制五角星示例:绘制正方形和五角星与计算机系统相关的库和函数用于获取GPU型号、显存、负载等数据,适用于深度学习场景。GPUtil用来获取系统的硬件信息和使用情况,可以通过它来监测CPU、内存、磁盘、网络等使用情况。Psutil用来获取CPU信息,包括名称、品牌、频率、缓存大小等。cpuinfo用来获取系统的基础信息,包括操作系统类型、版本、硬件架构等。Platform【例5-16】显示本机的系统信息、内存信息和CPU信息5.2列表Python除了提供数字和字符串等数据类型,还提供了元组、列表、字典和集合等复杂类型的数据结构。其中,字符串、元组和列表又被称为序列类型。序列在日常生活中经常用到,比如,一个班级学生学号序列,股票价格的时间序列等,字符串和元组都是不可修改的数据类型,而列表是可修改的数据序列。本节主要介绍列表的相关知识。在Python中,列表是包含0个或多个对象的有序序列。列表中的值称为元素,列表的长度和内容是可变的,元素类型可以不同。5.2.1

创建列表创建列表可以使用“=”直接将列表赋值给变量的方式创建一个列表,也可以使用list()函数将序列类型的数据转化成列表。列表的元素使用“[]”括起来,元素之间使用逗号分隔。列表中的元素可以是任何类型的对象,如数字、字符串、列表、元组等。创建列表示例:>>>list1=[1,4,9,16,25]#创建有元素列表>>>list1[1,4,9,16,25]>>>list2=[]#创建空列表>>>list2[]>>>list2=['physics','chemistry',2025,3.14]#列表的内容可以改变>>>list2['physics','chemistry',2025,3.14]>>>list3=list('Python')#将一个字符串转换为列表>>>list3['P','y','t','h','o','n']>>>list4=list(range(2,10,2))>>>list45.2.2

列表的索引和切片列表的索引和切片列表就是一个可变的、有序的序列。列表中的元素之间存在先后关系,可以使用索引号进行访问。索引有正向索引和反向索引,在正向索引中,第1个元素的索引号为0,第2个元素的索引号为1,第3个元素的索引号为2,以此类推,第n个元素的索引号为n-1;在反向索引中,最后一个元素的索引号为-1,倒数第二个元素的索引号为-2,以此类推。序列的正向索引及反向索引结构如图5-6所示。1.列表的索引示例:>>>list1[0]#索引操作将返回条目1>>>list1[-1]25>>>list3[-1]='m'#修改列表中的最后一个元素>>>list3['P','y','t','h','o','m']如果需要将列表中的元素依次输出,可以使用序列的遍历格式:for<变量名>in<序列名>:

<代码块>1.列表的索引2.列表的切片使用切片可以截取列表的元素得到一个新列表,也可以使用切片实现修改和删除列表中的部分元素,还可以用来为列表对象添加元素。切片操作符是“[]”,其基本语法为:

list[start:end:step]start是切片的开始位置,包含在切片中。如果省略,默认为0,表示从列表开头开始。end是切片的结束位置,不包含在切片中。如果省略,默认为-1,表示切片到列表结尾。step是切片的步长,为整数值,默认为1。当step>0时,表示正向切片,即从左向右选取元素,此时要求start在end的左侧,否则将得到一个空序列;当step<0时,则表示反向切片,即从右向左选取元素,此时要求start在end的右侧,否则将得到一个空序列。2.列表的切片通过指定start和end索引,可以获取列表中从start到end(不包括end)之间的元素,形成一个新的子列表。例如:>>>numbers=[0,1,2,3,4,5,6,7,8,9]#创建列表>>>numbers[0,1,2,3,4,5,6,7,8,9]>>>list_new=numbers[2:6]#省略step参数,默认为1,返回'左闭右开'区间内的元素>>>list_new[2,3,4,5]>>>numbers[:5]#省略start参数,切片将从列表开头开始[0,1,2,3,4]>>>numbers[5:]#省略end参数,切片将从start索引开始,一直到列表结尾[5,6,7,8,9]2.列表的切片>>>numbers[::2]#正向切片,每隔一个元素取一个值,获得偶数位置的元素[0,2,4,6,8]>>>numbers[::-1]#反向切片[9,8,7,6,5,4,3,2,1,0]>>>numbers[-3:]#将返回最后三个元素[7,8,9]>>>numbers[7:2:-1]#从索引7开始向索引2的方向以步长-1进行切片[7,6,5,4,3]>>>numbers[2:5]=[20,30,40]#修改列表的部分元素>>>numbers[0,1,20,30,40,5,6,7,8,9]>>>delnumbers[2:5]#删除列表的部分元素>>>numbers[0,1,5,6,7,8,9]5.2.3

列表的基本操作列表的基本操作创建列表后,对于列表对象可以直接调用内置方法实现各种操作如:添加、删除元素,搜索列表,列表排序等。列表的基本操作——添加元素列表中添加元素有三个方法:append()extend()insert()这3个方法都属于原地操作方法,即调用方法后,原列表的内容会发生变化,但不会创建新的列表。列表的基本操作——添加元素append()方法——添加一个元素语法如下:list.append(element)参数:element:要添加到列表末尾的元素,元素可以是任何数据类型,包括数字、字符串、列表(此时添加的是整个列表对象作为单个元素)、字典等。append()方法用于在列表的末尾添加一个元素。append()只能添加一个元素,不能一次性添加多个元素。添加完成后,列表的长度增加1。列表的基本操作——添加元素extend()方法——添加多个元素语法如下:list.extend(iterable)参数:iterable:一个可迭代对象,其元素将被添加到列表中,这里的对象可以是字符串、列表、元组、字典。extend()方法用于将一个迭代对象中的所有元素添加到另一个列表的末尾。与append()不同,extend()接受一个可迭代对象(如列表、元组等),并将其元素逐一添加到原列表中。列表的基本操作——添加元素insert()方法——插入元素语法如下:list.insert(index,element)参数:index:插入元素的索引位置。element:要插入的元素。insert()方法用于在列表的指定位置插入一个元素。这个方法接受两个参数:一个是插入位置的索引,另一个是要插入的元素。索引从0开始计数,如果指定的索引超出了列表的当前范围,元素将被添加到列表的末尾。由于insert()方法需要在指定位置插入元素,并可能需要移动列表中的其他元素来为新元素腾出空间,因此其性能可能不如append()或extend()。特别是在列表较长且插入位置靠近开头时,性能下降更为明显。列表的基本操作——删除元素删除列表元素有三个方法:remove()pop()clear()这3个方法也属于原地操作方法,即调用方法后,不会创建新的列表。列表的基本操作——删除元素remove()方法——删除指定内容的元素语法如下:list.remove(x)参数:x:要移除的元素。remove()方法用于移除列表中首次出现的指定元素。如果不存在该元素,会引发一个ValueError异常。当有多个相同的元素需要删除时,可以使用循环结合remove()方法来逐个删除。列表的基本操作——删除元素pop()方法——删除指定位置的元素语法如下:list.pop([index])参数:index(可选):要删除元素的索引。如果不指定,默认删除最后一个元素。pop()用于删除并返回列表中指定位置的元素。如果不指定位置,默认删除并返回最后一个元素。每调用一次pop(),列表的长度就会减少1。该方法会返回被删除的元素。如果指定的索引超出列表范围,会抛出IndexError异常。列表的基本操作——删除元素clear()方法——清空列表语法如下:list.clear()clear()方法用于移除列表中的所有元素,使其变为空列表。清空后的列表长度为0。clear()方法可用于清空列表、字典或集合中的所有元素。对于列表来说,就是移除列表中的所有元素,使其变为空列表;对于字典来说,就是移除字典中的所有键值对,使其变为空字典;对于集合来说,就是移除集合中的所有元素,使其变为空集合。列表的基本操作——删除元素clear()方法——清空列表示例:>>>numbers=[0,1,2,3,4]>>>numbers.pop(2)>>>numbers>>>dellist1[2]#删除list1中索引号为2的元素>>>list1[1,4,16,25]>>>dellist1#删除列表list4>>>list1NameError:name'list4'isnotdefined#访问已删除的列表,出现异常列表的基本操作——查询元素列表的基本操作——列表排序列表程序举例【例5-18】分类显示社会主义核心价值观的12项内容,检索输入的内容是否属于社会主义核心价值观的内容。5.3元组5.3.1

创建元组创建元组Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号(),列表使用方括号[]。可以使用“=”直接将列表赋值给变量的方式创建一个元组,也可以通过tuple()函数将其他序列类型的数据转化成列表。创建元组>>>t1=(12345,'hello!',3.14)#元组中的元素可以使用不同的数据类型>>>t1(12345,'hello!',3.14)>>>t2=([1,2,3],[3,2,1])#包含可变对象的元组>>>t2([1,2,3],[3,2,1])>>>t3=(0,)#只有一个元素的元组,逗号不能省略>>>t3(0,)>>>t4=1,2,3#没有歧义的情况下,圆括号可以省略>>>t4(1,2,3)>>>a=[2,4,6,8]>>>t5=tuple(a)#将列表转换为元组>>>print(t5)(2,4,6,8)>>>t6=tuple(range(10))#将range对象转换为元组>>>print(t6)(0,1,2,3,4,5,6,7,8,9)>>>t7=t1+t4#元组的连接>>>t7(12345,'hello!',3.14,1,2,3)>>>t8=t4*3#元组的复制>>>t8(1,2,3,1,2,3,1,2,3)5.3.2

元组的基本操作元组的基本操作——访问元组可以使用索引、切片或遍历的方式来访问元组中的值。【例5-19】使用索引和切片访问元组。以上实例输出结果:元组的基本操作——访问元组元组中第1个元素的索引是0,第2个元素的索引是1,第3个元素的索引是2,以此类推,第n个元素的索引是n-1。此外,也可以使用反向索引来表示元素,使用反向索引时,最后一个元素是-1,倒数第二个是-2,以此类推。元组a的正向索引及反向索引结构如图所示。元组的基本操作——删除元组不能使用remove()、pop()和clear()删除元组的元素,也不能使用insert()、append()和extend()方法添加元组的元素,但可以使用del语句来删除整个元组。【例5-20】使用del语句删除元组。以上实例元组被删除后,输出变量会有异常信息,输出如下所示:元组的基本操作——元组的常用函数5.3.3

元组程序举例元组程序举例【例5-21】学生成绩管理。5.4字典5.4.1

创建字典创建字典在Python中,字典(dictionary)是一种非常重要的数据结构,它提供了一种通过键(key)来存储和访问值(value)的方式。与列表(list)和元组(tuple)等序列类型不同,字典是无序的集合,其元素是由键值对组成的。

字典中的每个元素都是一个键值对(key-valuepair),其中键是唯一的,且必须是不可变的(如字符串、数字或元组),而值可以是任意类型的对象。创建字典5.4.2

字典的基本操作字典的基本操作——访问字典中的值字典的基本操作——增加字典元素字典元素的增加可以使用“字典变量[键]=值”格式。如果键不存在于字典中,可以通过赋值操作来添加新的键值对,如果键已经存在,则修改该键对应的值。字典的基本操作——修改字典元素使用“字典变量[键]=值”格式修改已经存在的键所对应的值。也可使用update()方法批量更新字典中的元素。字典的基本操作——删除字典元素可以使用del语句或pop()方法来删除字典中的元素。字典的基本操作——删除字典元素也可以使用clear()方法删除字典中的所有键值对,使用clear()方法后,原字典将变成一个空字典。使用del可以删除字典中的某个元素,也可删除一个字典,但要注意的是,使用del删除字典后,字典将不再存在。字典的基本操作——遍历字典表5-14字典的常见方法【例5-22】统计短文中单词出现的频率。5.4.3

字典程序举例字典程序举例【例5-23】创建一个包含哪吒、敖丙、申公豹、太乙真人等神话人物信息的字典。5.5集合集合(set)是Python中的一种基本数据结构,用于存储一组不重复的元素。集合是一种无序的、可变的数据类型,这意味着集合中的元素没有特定的顺序。集合中的元素可以是整数、浮点数、字符串等基本数据类型,也可以是其他集合、元组等可哈希的数据类型。集合适用于需要对元素进行去重、判断元素是否存在、进行集合运算等场景。集合的特征

唯一性:集合中的元素是唯一的,不允许有重复的元素。

无序性:集合中的元素没有特定的顺序,因此无法通过索引访问元素。

可变性:集合是可变的,可以添加、删除元素。

集合操作:集合支持多种集合操作,如并集、交集、差集等。5.5.1

创建集合创建集合可以直接使用大括号来创建一个集合,但需要注意,如果创建的是空集合,必须使用set()而不是{},因为{}会创建一个空字典。也可以使用set()函数可以将任何可迭代对象(如列表、元组、字符串等)转换为集合。5.5.2

集合的基本操作集合的基本操作——添加元素可以使用add()方法向集合中添加一个元素,如果该元素已存在则忽略,不存在则添加。集合的基本操作——删除元素删除集合元素有4个方法:remove()、discard()、pop()和clear()。remove()和discard()方法都可以从集合中移除一个指定的元素,不同的是,如果指定元素不存在,remove()方法会引发错误,而discard()方法则忽略该操作。pop()方法用于从集合中随机移除一个元素,并返回该元素,如果集合为空,会引发错误。clear()方法用来清空集合。集合的基本操作——集合运算5.5.3

集合程序举例集合程序举例【例5-24】数据清洗。5.6文件文件文件是计算机中用于存储数据的一种结构,可以是文本文件、二进制文件、图片、音频、视频等多种类型。在Python中,文件操作是指通过编程语言对文件进行创建、读取、写入、删除等一系列动作。5.6.1

文件的打开和关闭文件的打开和关闭

在Python中,使用内置的open()函数来打开文件,使用close()方法关闭文件。open()函数返回一个文件对象,该对象提供了对文件进行读写操作的方法。文件的打开和关闭

为了简化文件关闭的操作,Python提供了with语句。使用with语句打开文件时,文件会在代码块执行完毕后自动关闭。5.6.2

文件的基本操作文件的基本操作——文件的写入(1)写入字符串数据使用write()方法可以将字符串数据写入文件。如果文件以写入模式('w')或追加模式('a')打开,则可以直接写入数据。文件的基本操作——文件的写入(2)写入字节数据对于二进制文件,可以使用write()方法写入字节数据。此时,需要以二进制模式('b')打开文件。文件的基本操作——文件的写入(3)使用writelines()方法写入多行数据writelines()方法可以将一个列表(或其他可迭代对象)中的多个字符串元素写入文件。每个元素将直接写入文件,不会自动添加换行符。文件的基本操作——文件的读取(1)读取整个文件使用read()方法可以读取文件的全部内容,并将其作为一个字符串返回。文件的基本操作——文件的读取(2)逐行读取文件对于较大的文件,逐行读取可能更为高效。可以使用readline()方法读取文件中的一行内容,或使用readlines()方法将文件的所有行作为一个列表返回。文件的基本操作——文件的读取(3)使用for循环逐行读取Python的文件对象支持迭代器接口,因此可以直接使用for循环逐行读取文件。文件的基本操作——文件的删除与重命名(1)删除文件使用os.remove()函数可以删除指定的文件。如果文件不存在,则会抛出FileNotFoundError异常。文件的基本操作——文件的删除与重命名(2)重命名文件使用os.rename()函数可以重命名指定的文件。5.6.3

文件操作中的异常处理字典程序举例在进行文件操作时,可能会遇到各种异常情况,如文件不存在、权限不足等。因此,建议使用异常处理机制来捕获并处理这些异常。5.7数据分析与可视化数据分析是数据可视化的理论与技术基础,涵盖数据的采集

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论