Python程序设计-AI辅助编程-课件 第6-10章 集合与字典 -数据可视化_第1页
Python程序设计-AI辅助编程-课件 第6-10章 集合与字典 -数据可视化_第2页
Python程序设计-AI辅助编程-课件 第6-10章 集合与字典 -数据可视化_第3页
Python程序设计-AI辅助编程-课件 第6-10章 集合与字典 -数据可视化_第4页
Python程序设计-AI辅助编程-课件 第6-10章 集合与字典 -数据可视化_第5页
已阅读5页,还剩363页未读 继续免费阅读

下载本文档

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

文档简介

第六章

集合与字典Python程序设计本章要点序列类型集合01字典03DeepSeek的使用02学习目标了解集合与字典的基本特性及适用场景;理解集合的无序唯一性与字典的键值对映射机制;掌握集合的创建、关系判断与运算操作;熟悉字典的创建、访问、修改及常用方法;培养数据抽象与高效组织信息的能力,强化逻辑严谨性和工程规范意识1集合集合集合类型用于存储无序且不重复的数据,与数学中的集合概念基本吻合。set类集合属于可变数据类型,集合中的数据可以增加或减少,提供了add()、remove()等方法,并且不存在哈希值。frozenset类集合是不可变数据类型,具有哈希性,一旦创建完成,其内部数据便无法增减,因此可以作为字典的键或其他集合的元素。未特别说明的集合类型,默认指数据可变的集合。本节重点探讨可变集合的使用方法。集合集合中的元素无固定顺序,不支持索引和切片等序列操作。在增加和删除元素时集合也不记录新元素位置或者插入点。集合支持union(联合)、intersection(交集)、difference(差集)以及symmetricdifference(对称差集)。集合是一种可遍历结构,可用for循环进行遍历。集合具有确定性,无序性和互异性的特点,基本功能包括关系测试和消除重复元素。集合的创建非空集合可通过将一系列用逗号分隔的数据放在一对大括号中的方法创建。空集合比较特殊,不能直接使用“{}”来创建和表示,而是使用set()创建和表示表示空的集合,使用frozenset()创建和表示空的不可变集合。set()和frozenset()函数又称为集合构造器,分别用来生成可变和不可变的集合。如果不提供任何参数,默认会生成空集合。如果提供一个参数,则该参数必须是可迭代的,即参数必须是序列、列表、元组、推导式、迭代器或字典等支持迭代的对象。集合的创建setA={1,2,3,4,5}#将集合数据赋值给变量,直接创建集合print(setA)#输出{1,2,3,4,5}setB={'吉林','武汉','北京'}print(setB)#输出{'吉林','武汉','北京'}setC=set()#使用函数创建一个空集合,空集合不能使用{}创建和表示print(setC)#输出set()setD=frozenset()#使用frozenset()函数构造器创建一个空的不可变集合print(setD)#输出frozenset()setE=set(range(8))#通过range创建集合{0,1,2,3,4,5,6,7}并赋值给SetEprint(setE)#输出{0,1,2,3,4,5,6,7}将集合类型数据直接赋值给变量即可创建并使用一个集合变量集合的创建setF=set([1,2,3,4,5])#set()将列表转为集合{1,2,3,4,5}print(setF)#输出{1,2,3,4,5}setG=frozenset((1,3,5,7))#用frozenset()函数将元组转为不可变集合print(setG)#输出frozenset({1,3,5,7})print(set('cheeseshop'))#字符串转为集合,去掉重复元素,{'c','p','o','e','s','h'}setH={i*iforiinrange(5)}#利用推导式生成集合print(setH)#{0,1,4,9,16}将集合类型数据直接赋值给变量即可创建并使用一个集合变量集合的创建s={1,2,3,4,5}t=ss.add(6)#集合s增加一个新元素6print(id(s),id(t))#两个对象的id相同,输出17860802048401786080204840print(s,t)#两个集合实际上指向同一对象,输出{1,2,3,4,5,6}{1,2,3,4,5,6}t=s.copy()#创建集合s的一个拷贝s.add(7)#集合s增加一个新元素7print(id(s),id(t))#id不同,是完全不同的两个对象,输出17860802048401786080205064print(s,t)#集合的元素不同,s的变化未影响到t,输出{1,2,3,4,5,6,7}{1,2,3,4,5,6}集合也可以赋值给另一个变量,但这时,两个变量指向相同的内存,当一个集合元素发生变化时,另一个集合的元素同时也会发生变化。如果需要创建一个集合s内容一致的不同集合对象,可以使用s.copy()方法。集合的创建setA=set((90,75,88,65,90))print(setA)#输出{88,65,90,75},重复的90被去掉scores=[80,85,88,93,88,81,96,73,85,77,77,86,89,68,93,82,95,81,80,70]print(sorted(list(set(scores)))[0:4])#输出不重复的4个最低分[68,70,73,77]scores=[80,85,88,93,88,81,96,73,85,77,77,86,89,68,93]print(len(set(scores)))#scores共有11个不重复的数,输出11由于集合数据是不重复的,因此集合构造器常用来对其他序列数据进行“去重操作”。集合支持Python内置函数len(s),用于获取集合s中数据元素的个数。实例6.1奇特的四位数一个四位数,各位数字互不相同,所有数字之和等于6,并且这个数是11的整数倍。满足这种要求的四位数有多少个?各是什么?将这个四位数转为集合,如果各位上有相同数字存在,重复数字会被去掉,则生成的集合长度len(set(str(i)))必小于4,只有长度等于4的集合,其对应的数中才无重复数字。所有数字之和等于6,并不需要从0000遍历到9999,只需要遍历到3210即可。又因为这个数是11的整数倍,则该数对11取模的值应该等于0。其中map(int,str(i))是将数字i转为字符,再映射为整型。实例6.1奇特的四位数#输出各位数字互不相同、所有数字之和等于6,且是11的整数倍的4位数ls=[]foriinrange(1000,3211):#各位数加和为6的最大的无重复数字的数是3210ifi%11==0andsum(map(int,str(i)))==6andlen(set(str(i)))==4:ls.append(i)#符合条件的数字加到列表ls里print(len(ls))#列表长度就是符合条件的数字的个数,输出6print(ls)#输出[1023,1320,2013,2310,3102,3201]实例6.2查找次大值从用户输入的若干数据里找出第二大的数并进行输出①用户输入的数据之间能够用逗号来分隔,要留意用户输入的数据仅有一个的特殊情况。②利用集合的特性,可去除用户输入数据里的重复项,然后对其进行排序,在恰当的位置找出次大值。实例6.2小明的生日datas=list(map(int,input().split(",")))set_data=set(datas)#去重new_datas=list(set_data)iflen(new_datas)<2:print("数据集{}只有一个数".format(new_datas))else:sort_datas=sorted(new_datas,reverse=True)print("数据集中第二大数是:{}".format(sort_datas[1]))可变集合类型的操作可变集合提供了一些关于元素的更新、删除等相关操作的方法,常用操作及其方法描述如表所示方法描述s.add(x)在集合s中添加元素x。s.remove(x)从集合s中删除元素x;如果x不是集合s中的元素(xnotins),将引发KeyError错误。s.discard(x)如果x是集合s的元素,从集合s中删除x,如果s中不存在x也不会报错。s.pop()无参数,从集合中移除并返回任意一个元素,如果集合为空则会引发KeyError。s.clear()删除集合s中的所有元素。可变集合类型的操作s=set('Programming')print(s)#返回集合{'a','P','o','g','r','i','n','m'},元素无序s.add('z')#向集合中添加元素'z'print(s)#{'a','P','z','o','g','r','i','n','m'}s.remove('z')#从集合中删除元素zprint(s)#{'a','P','o','g','r','i','n','m'}s.update('python')#将'python'中的元素添加到集合中,去除重复元素print(s)#{'y','p','a','P','o','h','g','r','i','n','m','t'}可变集合类型的操作s.discard('P')#从集合x中删除元素'P'print(s)#{'y','p','a','o','h','g','r','i','n','m','t'}s.pop()#删除s中的任意一个元素print(s)#{'p','a','o','h','g','r','i','n','m','t'}s.clear()#删除集合中的所有元素print(s)#返回空集合set()dels#删除集合print(s)#集合删除后不再可用,NameError:name's'isnotdefined可变集合类型的操作集合还提供了一系列的标准操作方法以及相应的符号运算。使用集合操作方法时,参数可以是可迭代数据;用符号操作时,参与运算的两个对象必须都是集合。方法符号描述s.update(t)s=s|t用t中的元素修改s,即s现在包含s或t的成员。ersection_update(t)s=s&ts中的成员是共同属于s和t的元素。s.difference_update(t)s=s-ts中的成员是属于s但不包含在t中的元素。s.symmetric_difference_update(t)s=s^ts中的成员更新为仅属于s、t之一的元素,不包含同时属于s和t的元素。可变集合类型的操作s=set('Programming')s=s-set('python')#将'python'中的存在的元素从集合中删除print(s)#输出{'r','P','m','a','i','g'}s=set('Programming')ersection_update('python')#s中的成员是共同属于'Programming'和'python'的元素print(s)#输出{'n','o'}可变集合类型的操作s=set('Programming')s.difference_update('python')#s中的成员是属于'Programming'但不包含在'python'中的元素print(s)#输出{'r','a','i','g','m','P'}s=set('Programming')s.symmetric_difference_update('python')'''s中的成员更新为那些包含在'Programming'或'python'中,但不是'Programming'和'python'共有的元素'''print(s)#输出{'y','h','r','a','i','g','t','p','m','P'}成员关系s=set('Programming')#s={'P','a','i','n','m','r','o','g'}print('k'ins)#s中不存在元素'k',输出Falseprint('P'ins)#s中存在元素'P',输出Trueprint('c'notins)#s中不存在元素'c',输出True集合支持存在性测试,可用xins和xnotins操作判断数据x是否包含在集合s中,是否是该集合的成员集合关系当一个集合s中的元素包含另一个集合t中的所有元素时,称集合s是集合t的超集,或反过来,称t是s的子集。当两个集合中元素相同时,两个集合等价。集合的关系运算方法和含义如表所示。方法符号含义s.issubset(t)s<=ts是否是t的子集,是返回True,否则返回Falses.issuperset(t)s>=ts是否是t的超集,是返回True,否则返回False

s==ts是否和t相等,是返回True,否则返回False

s<ts是否是t的真子集,是返回True,否则返回False

s>ts是否是真包含t,是返回True,否则返回Falses.isdisjoint(t)

s和t是否无共同元素,是返回True,否则返回False集合关系s=set('python')#{'t','n','o','h','p','y'}t={'o','y','p','g'}print(s==t)#输出Falseprint(s!=t)#输出Trueu=frozenset(s)#frozenset({'p','y','t','n','o','h'})print(s==u)#输出Trueprint(set('posh')==set('shop'))#输出True1.集合等价/不等价集合关系s=set('shop')#{'h','s','o','p'}t=set('cheeseshop')#{'o','e','c','h','s','p'}u=set('bookshop')#{'o','k','h','s','b','p'}print(s<t)#s是t的子集,输出Trueprint(u>s)#u是s的超集,输出True2.子集/超集集合运算Python中的集合和数学中的集合概念基本一致,也支持集合的交、差、并等操作。集合运算的方法与含义:操作方法符号含义s.union(t)s|t返回集合s和t的并集ersection(t)s&t返回集合s和t的交集s.difference(t)s–t返回集合s和t的差集s.symmetric_difference(t)s^t返回集合s和t的对称差集,即存在于s和t中的非交集数据集合运算s=set('bookshop')#{'o','k','h','s','b','p'}t=set('cheeseshop')#{'o','e','c','h','s','p'}print(s|t)#属于任意集合的元素,输出{'p','o','c','e','b','h','s','k'}print(s&t)#同属于两个集合的元素,输出{'o','h','s','p'}print(s-t)#s中存在,但t中不存在的元素,输出{'k','b'}print(s^t)#只属于s或只属于t的元素,输出{'c','e','k','b'}使用集合方法union()、intersection()、difference()、issubset()、symmetric_difference()和issuperset()进行集合运算,参数可是任意可迭代对象;使用相应集合运算符进行集合运算,则要求运算符两侧的操作数都是集合。集合运算集合运算中的左右两个操作数集合的类型(set,frozenset)不管相同与否,结果集的类型都是左操作数集合的类型。2字典字典字典(dict)是Python内置的最主要、最常用的映射数据类型(MappingTypes),是一种无序可变数据类型。字典使用一对大括号“{}”来存放数据,元素之间用逗号“,”分隔。每个元素都是一个“键:值”对,用来表示“键”和“值”的映射关系或对应关系。例:{'name':'张明','age':18,'gender':'M'}字典字典中的键不可重复,必须在字典中是独一无二的数据。键必须使用不可变数据类型的数据,如:字符串、整型、浮点型、元组、frozenset等,不可以使用列表和可变集合等可变类型数据。字典的值可以是任意类型的数据,也可以重复。字典的创建创建一个不包含任何值的空字典,可使用以下方法中的一种:①将一对空的大括号赋值给一个变量来创建空字典。②用dict()函数不加任何参数来创建空字典。D1={}#使用一对不包含任何数据的“{}”创建一个空字典D2=dict()#使用字典构造器创建一个空字典print(D1,D2)#输出:{}{}字典的创建③通过给一个变量赋值一个字典类型的数据。D1={'name':'张三','age':19,'gender':'M'}#将一个字典数据赋值给一个变量,从而创建一个非空字典#使用字典构造器,给键名赋值(创建映射),创建字典,注意:此处的键名未加引号,#这种方法不能创建以Python关键字为字符串的键,如'for'键字典的创建④使用字典构造器dict()函数将其他类型的数据转为字典都可以创建一个非空字典。D2=dict(name='张三',age=19,gender='M')#使用字典构造器,通过包含两个元素(键和值)的序列,创建字典D3=dict([('name','张三'),('age',19),('gender','M')])#使用内置zip()函数,产生以二元组元素的序列,通过字典构造器,创建字典D4=dict(zip(('name','age','gender'),('张三',19,'M')))字典的创建⑤创建新字典的方法fromkeys(),使用语法:dict.fromkeys(seq[,value])seq为键的列表,value可选,用于设定键序列的值。该方法会返回一个新的字典,其中每个键都有相同的值,若value未提供,则其值为None。seq=('Python','Java','C')dict1=dict.fromkeys(seq)#value缺省,值均为Noneprint(dict1)#{'Python':None,'Java':None,'C':None}dict2=dict.fromkeys(seq,60)#值均为60print(dict2)#{'Python':60,'Java':60,'C':60}字典的创建⑥和其他序列和集合类数据一样,字典也可以使用推导式快速生成。D1={k:vfork,vin[('李明',),('张宏',)]}#用推导式从列表生成字典print(D1)#输出{'李明':,'张宏':}字典的创建当创建一个字典时,字典数据内部先后出现了键相同的两个及以上键值对时,字典将保留最后一个键值对作为字典中的数据元素。dict={'李明':,'张宏':,'吕京':,'李明':}#当有键相同的两个键值对时,保留后一个键值对print(dict)#{'李明':,'张宏':,'吕京':}字典的创建字典中的键必须是不可变数据类型,整型数值“1”和浮点型数值“1.0”都可以作为字典的键,但由于数字上“1==1.0”为真,所以键为“1”和“1.0”被认为是同一个键。而计算机内部存储浮点型数据时可能引入误差,建议字典的键尽可能不使用浮点型数据。d={1:100,1.0:1000}print(d)#输出{1:1000},1和1.0只保留了一个print(d[1.0])#输出1000,1.0被等同于1进行处理获取字典值字典是一种无序数据类型,不能使用索引的方式获取其值。字典内部的数据具有“键”和“值”的映射关系,字典一般通过“键”来访问其“值”,语法为:dict[key]通过键“key”返回字典“dict”中与该键对应的值。当该键在字典中不存在时返回KeyError错误。实例6.3通讯录查询创建一个字典,用于存放姓名与相应的电话号码,如{'李明':,'张宏':,'吕京':},借助字典实现具备基础通讯录查询功能的程序。(即:输入一个姓名,就能查到对应的电话号码)将通讯录信息以键值对:”姓名:电话号码”进行信息存储。通过“键”与“值”的映射关系(电话号码=dict[姓名])实现查询功能。实例6.3通讯录查询#用字典存储数据的通讯录程序,查询功能dict={'李明':,'张宏':,'吕京':}#索引方法实现查询功能name=input('请输入要查询的联系人姓名:')ifnameindict:#为避免姓名不存在导致异常,先判断是否存在print(name+":"+dict[name])#以输入的人名为键访问字典中该键对应的值else:print("联系人不存在")采用dict[key]方法获取键对应的值时,本质是把“键”当作字典的索引值来使用的,不存在该索引值,则会提示错误。获取字典值为防止在字典中取数据时因访问不存在的键值而引发异常,导致程序意外中断,可以先检查键是否存在,或者采用异常处理机制。另外,还可以利用字典的内置方法get()来获取数据,其语法格式如下:dict.get(k[,default])含义:尝试从字典dict中取得键为“k”的元素中对应的值当字典dict中存在以“k”为键的元素时,则返回该键对应的值;当字典dict中不存在以“k”为键的元素时,则返回值default;如果没有提供default参数,则返回空值None。获取字典值用get()方法修改实例6.3的程序。#get()方法实现查询功能dict={'李明':,'张宏':,'吕京':}name=input('请输入要查询的联系人姓名:')print(name+":"+dict.get(name,'联系人不存在'))获取字典值在存在映射关系的数据中,取出指定数据时,采用字典方法比利用列表、元组等序列型数据更加简单方便。应用列表、元组等数据要遍历全部数据,而字典类型可以直接获取对应的值。字典提供了方法keys()、values()和items()可以获取字典中所有的“键”、“值”和“键-值”对。返回值是一个可迭代对象,其中的数据顺序不确定。方法描述dict.keys()获取字典dict中的所有键组成一个可迭代数据对象。dict.values()获取字典dict中的所有值组成一个可迭代数据对象。dict.items()获取字典dict中的所有键值对,两两组成元组,形成一个可迭代数据对象。获取字典值dict={'李明':,'张宏':,'吕京':}print(dict.keys())#返回可迭代对象print(list(dict.keys()))#将可迭代对象转为列表['李明','张宏','吕京']fornameindict.keys():#对可迭代对象dict_keys()进行遍历输出print(name)print(dict.values())#输出dict_values([,,])print(dict.items())#输出dict_items([('李明',),('张宏',),('吕京',)])forname,phoneindict.items():#对可迭代对象dict.items()进行遍历输出print(name+':'+phone)修改字典字典属于可变的数据类型,能够实现数据元素的增添、移除以及修改操作。1.元素值的修改dict[key]=value

当key在字典中存在时,修改其值,将value值作为字典dict中键key对应的新值。dict.update(k1=v1[,k2=v2,…])字典dict中存在k1、k2…时,将对应的值修改为v1、v2…,当不存在相应的键时,会将对应的k1:v1、k2:v2…键值对加入字典。修改字典示例dict={'李明':,'张宏':,'吕京':}dict['李明']=#将李明的电话更新为dict.update(张宏=)#将张宏的电话更新为dict.update(王晶=)#键‘王晶’不存在,将键值对加入字典print(dict)#输出更新后的字典修改字典2.元素的增加dict[newkey]=value当键名newkey在字典中不存在时,直接给字典dict新添加一个新的键newkey,并赋值为value。dict.setdefault(key[,value])字典dict中存在键key,返回key对应的值不存在键key,在字典中增加key:value键值对;值value缺省时,默认设其值为None。dict.update(anotherdict)一次性把另一个字典anotherdict的内容全部追加到当前字典中。修改字典示例dict={'李明':,'张宏':,'吕京':}dict['赵雪']=#为字典新增元素'赵雪':dict.setdefault('刘飞',)#为字典新增元素'刘飞':dict.setdefault(('程钱'))#值缺省时,默认为None,为字典新增元素'程钱':Noneprint(dict)anotherdict={'john':none,'merry':none}dict.update(anotherdict)修改字典①dict.pop(key[,default])返回字典dict中键key对应的值,并将键为key的键值对删除;若dict中不存在键key返回default,如果没有提供default则将报“KeyValue”异常。dict={'李明':,'张宏':,'吕京':,'赵雪':,'刘飞':,'程钱':None}delkey=dict.pop('李明')#删除键为李明的元素,返回值是键'李明'对应的值print('删除的联系人的电话是:',delkey)#删除的联系人的电话是:139888877773.元素的删除删除字典元素,可采用pop()、popitem()及clear()方法,或者运用del函数。修改字典3.元素的删除②dict.popitem()随机以元组形式返回一个键值对,同时删除dict中该数据,一般删除字典末尾的键值对。③deldict(key):将字典dict中键为key的键值对元素删除;若dict中无key也会报异常。dict={'李明':,'张宏':,'吕京':}delitem=dict.popitem()#随机删除并返回一个键值对print('删除的联系人是:',delitem)#删除的联系人一般是最后一个元素#删除的联系人是:('吕京',)print(dict)#{'李明':,'张宏':}deldict['张宏']#删除键为'张宏'的键值对print(dict)#{'李明':}#deldict

则表示删除dict变量修改字典3.元素的删除④dict.clear():清空dict中所有数据,dict成为空字典。dict={'吕京':,'赵雪':,'刘飞':}dict.clear()#清空字典dict中的所有数据,dict成为一个空字典print(dict)#返回一个空字典{}修改字典4.“视图”可迭代数据使用字典keys()、values()和items()方法生成的可迭代数据是一种特殊的“视图”类数据,这三个方法可以分别获得一个包含字典全部键、值和键值对的对象。它们的值关联至原始字典,当原始字典中的数据发生改变时,其值也会发生变化。dict={'李明':,'张宏':}ks=dict.keys()vs=dict.values()kvs=dict.items()print(ks)#输出dict_keys(['李明','张宏'])print(vs)#输出dict_values([,])print(kvs)#输出dict_items([('李明',),('张宏',)])修改字典dict.update(王晶=)#键‘王晶’不存在,将键值对加入字典print(dict)#输出{'李明':,'张宏':,'王晶':}print(ks)#输出dict_keys(['李明','张宏','王晶'])print(vs)#输出dict_values([,,])print(kvs)#输出dict_items([('李明',),('张宏',),('王晶',)])foriinkvs:print(i,end='')#输出('李明',)('张宏',)('王晶',)相关函数与方法Python内置了许多函数,其中字典处理常用的函数有len()、str()、type()。另外,字典对象自身也有许多处理方法。函数描述len(dict)计算字典元素个数,即键的总数。str(dict)将字典的值转化为适于人阅读的形式,以可打印的字符串表示。type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。相关函数与方法方法名描述dict.clear()删除字典内所有元素dict.copy()返回一个字典的浅复制dict.fromkeys(iterable[,value])创建一个新字典,以序列iterable中元素做字典的键,value为字典所有键对应的初始值dict.get(key,default=None)返回指定键的值,如果值不在字典中返回default值dict.keys()以可迭代数据返回一个字典所有的键dict.values()以可迭代数据返回字典中的所有值dict.items()以可迭代数据返回可遍历的(键,值)元组dict.pop(key[,default])如果键key存在,返回键对应的值并移除键值对,如key不存在,返回default。dict.popitem()按后进先出顺序,移除并返回最后一个键值对(早期的版本随机移除一个元素)dict.setdefault(key,default=None)返回指定键的值,,但如果键不存在于字典中,将会添加键并将值设为defaultdict.update(dict2)把字典dict2的键/值对更新到dict里字典排序输出字典本身是无序的,但可以在输出时,将字典的元素、键或值转为列表再排序输出。dict.keys()、dict.values()、dict.items()都是可迭代对象,可以作为sorted()函数的参数。sorted()函数是python内置函数,可对字典进行排序并返回列表,其语法为:sorted(iterable,key,reverse)参数iterable为一个可以迭代的对象,如列表、元组、dict.items()、dict.keys()等;参数key是一个函数,用其函数值作为排序的依据;参数reverse是用来指定是按升序还是降序进行排序,reverse=True是降序,reverse=False是升序,默认reverse=False。字典排序输出输出时按键排序比较简单使用sorted(dict.keys())就能获得字典所有键并按键升序排序;使用sorted(dict.items())就能获得字典所有键值对并按键升序排序;如果想按照倒序排序的话,则只要将reverse置为true即可。dic={'Tom':21,'Bob':18,'Jack':23,'Ana':20}print(sorted(dic.keys()))#根据键进行排序print(sorted(dic.items()))#根据键值对进行排序print(sorted(dict.keys(),reverse=True)

字典排序输出对字典的值(value)排序则需要用到key参数,可使用lambda表达式的方法dic={'Tom':21,'Bob':18,'Jack':23,'Ana':20}print(sorted(dic.items(),key=lambdaitem:item[1]))#key参数利用lambda函数,根据item[1]的值进行排序

dic.items()将字典dic转换成元素为('Tom':21)、('Bob':18)、('Jack':23)、('Ana':20)的可迭代对象,items()方法将字典的键值对转化为了元组,这里key参数设置为一个lambda表达式:key=lambdaitem:item[1],item作为lambda表达式中参数,item[1]作为lambda的表达式,其值也就是lambda函数的返回值,在此的意义是选取元组中第二个元素作为排序依据。所以采用这种方法不仅可以依据字典的value进行排序,还可以依据字典的value变换的结果进行排序。实例6.4菜单查询某餐馆的菜单信息如下:酸菜鱼68元鱼香肉丝28元脆皮虾58元油渣小白菜20元水煮肉片38元干炸鲜蘑18元葱爆羊肉68元手撕包菜16元编写程序,依据用户输入的菜名,在菜单内进行查找,若菜单中包含则输出其价格;否则,输出“无此菜”。实例6.4菜单查询可以用列表实现,也可以用字典实现字典可以根据键值进行索引,效率远高于列表,所以建议使用字典数据类型存储数据。以菜名为键,以菜价为值进行存储。实例6.4菜单查询menu={"酸菜鱼":68,"脆皮虾":58,"水煮肉片":38,"葱爆羊肉":68,"鱼香肉丝":28,"油渣小白菜":20,"干炸鲜蘑":18,"手撕包菜":16}dish_name=input()ifdish_nameinmenu:print("{}的价格是{}元".format(dish_name,menu[dish_name]))else:print("无此菜")实例6.5单词统计统计用户输入的英文句子各个单词出现次数,并输出统计结果。①组成单词的英文字母在书写时是存在大小写区分,但在单词识别时不区分大小写,此时可用str.lower()将用户输入的单词转换为统一由小写字母组成。②英文句子中的单词之间用空格分隔,即单词与单词之间有至少一个空格。③英文句子中会出现英文标点符号,在此例中假设只出现"."和","两个英文标点符号。实例6.5单词统计text=input()text=text.lower()#英文字母转换为小写words=text.split()#用空格区分单词word_count={}Punctuation=".,"forwordinwords:word=word.strip(Punctuation)#剔除英文标点符号".,"ifwordinword_count:#构建字典存储单词信息,以单词为键,以其出现次数为值word_count[word]+=1else:word_count[word]=1forword,countinword_count.items():print("{}:{}".format(word,count))3DeepSeek的使用DeepSeek的使用信息查询的实现方式包括基于列表和基于字典的实现。我们能够通过DeepSeek完成程序代码的转换。附件中的程序,基于列表实现了省级行政中心信息查询功能;请基于字典实现该附件程序的等价功能(程序代码以附件形式提交)。学习总结集合类型不包含重复数据,常用于去除重复元素、求取交集和差集等操作。其元素排列无序,无法直接对集合进行排序,若需排序输出,可先转换成列表再进行排序。空集合需通过set()函数来创建。在Python里,字典(dict)是最主要、最常用的映射数据类型。空字典能够通过dict()函数或者一对大括号“{}”创建。每个字典元素均为一个“键:值”对,字典中的键不能重复,且必须为不可变数据类型,能通过键获取其对应的值。DeepSeek能够协助将解决问题的代码进行等效转换,从而以不同的实现方式呈现。谢谢大家!Python程序设计第七章

函数与模块Python程序设计本章要点变量的作用域函数的定义,调用与返回值函数的参数传递递归调用内置函数random模块模块化程序设计DeepSeek的使用学习目标了解函数的定义、调用与返回值的基本概念及匿名函数的使用;理解参数传递的不同方式(位置传递、关键字传递、默认值传递、包裹传递及解包裹传递)和变量作用域规则;学习目标掌握递归调用的方法及内置函数、random模块的应用;熟悉模块化程序设计的思想,包括标准库的使用、第三方库的应用,培养良好的代码组织习惯与团队协作精神,增强软件工程规范意识。1函数定义,调用与返回值函数的定义在实际的程序设计过程中,有很多操作是完全相同或非常相似的,可以由一段代码来实现。在需要这个功能的地方复制该代码段就可以实现功能的复制。但从程序设计的角度上讲,这样直接复制代码段并不明智。大量的重复代码不仅会增加程序的代码行数,也会使程序的逻辑变得更加复杂。在面向过程的程序设计方法中,解决这个问题的一个有效方法是设计函数。将可能需要反复执行的代码封装为函数,在需要执行该功能的地方调用该函数,可以实现代码的复用。应用函数的方法也可以保证代码的一致性,对函数的修改可以同时作用到所有调用该函数的位置。函数:用于进行某种计算或具有某种功能的一系列语句的有名称的组合。函数的定义Python程序中函数的使用要遵循先定义后调用的规则。也就是说函数的调用必须位于函数定义之后,一般的作法是将函数的定义放在程序的开头部分,每个函数之间、函数与主程序之间各留一个空行。def函数名([参数列表]):

'''文档注释'''

函数体

return返回值注意01函数体是函数要实现的功能的程序语句,相对于def关键字要缩进一档。函数的定义函数体内尽量写文档注释,方便查看代码功能。文档注释是Python独有的注释方式,用三引号引起来,注释内容可以通过对象的__doc__成员被自动提取,并且被pydoc所用。文档注释的内容主要包括该函数的功能、可接受参数的个数和数据类型、返回值的个数和类型等。文档注释不是必须,但在函数的定义时加上一段用三引号引起来的注释,可以为用户提供更友好的提示和使用帮助。#def开头的是函数的定义,一般放在文件前面,确保函数先定义后调用defadd_number(a,b):#def为定义函数关键字,add_number为函数名"""接收两个参数a和b,计算其加和并输出。"""#以下缩进区域的多条语句为函数体,调用函数时执行的语句result=a+b#处理语句,计算a,b的和print(result)#输出函数处理结果函数的定义函数名称要遵循标识符命名规则,且不能是关键字。通常推荐函数名有一定含义,能简明表达函数功能。例如,“factorial”表示阶乘。函数名一般建议使用小写字母,若包含多个单词,则用下划线隔开以提高可读性。例如:“add_number”“find_number”之类的。函数名后需紧跟一个小括号,括号里为形式参数列表。形参的值在函数调用时传入。参数可以没有、有1个或者多个。形参个数为0的函数称为无参函数;否则称为有参函数。函数体是实现函数功能的程序语句集合,相较于def关键字需缩进一级。定义函数时,如果希望把函数的处理结果返回给调用函数以进行更进一步的处理,可以使用return语句向调用函数提供该函数的处理结果。函数的返回值语句由return关键词开头,返回值没有类型和个数限制,当函数返回值为多个时,会以元组形式返回。当函数无return语句或return不带参数时,函数返回“None”。函数的调用定义好的函数可以通过名字来进行调用,函数的调用方法如下:函数调用时,括号里要给出与函数定义时数量相同的参数,这些参数称为实际参数,实际参数必须具有确定的值,这些值会被传递给函数定义中的形式参数,相当于一个赋值的过程。函数名(参数)#以下为主函数,一般将输入、输出和函数调用放在主函数中m=float(input())

#输入一个浮点数5n=float(input())

#输入一个浮点数7s=add_number(m,n)

#调用函数,实际参数为m,n,函数返回值赋值给sprint(s)

#输出s的值

12.0print(add_number(m,n))

#函数调用语句做print()的参数,直接输出函数返回值12.0函数的返回值一般情况下无返回值的函数其处理结果应该以其他形式呈现,如在add_number(a,b)函数中就用print()直接在本函数内将两参数相加的结果输出,也可能利用绘图语句直接将结果绘制成图形。#def开头的是函数的定义,一般放在文件前面,确保函数先定义后调用defadd_number(a,b):

#def为定义函数关键字,add_number为函数名

"""接收两个参数a和b,计算其加和并输出。"""

#以下缩进区域的多条语句为函数体,调用函数时执行的语句

result=a+b

#处理语句,计算a,b的和

print(result)

#输出函数处理结果函数的返回值函数定义时希望可以将函数的处理结果返回给调用函数,以便更进一步的处理,此时可以使用return语句向调用函数提供该函数的处理结果。函数的返回值语句由return关键词开头,返回值没有类型限制,也没有个数限制,当函数返回值为多个时,以元组形式返回,此时元组可以看成是一个对象。当返回值个数为0时,返回“None”。defadd_number(a,b):

#def为定义函数关键字,add_number为函数名

"""接收两个参数a和b,计算其加和并返回。"""

#以下缩进区域的多条语句为函数体,调用函数时执行的语句

result=a+b

#处理语句,计算a,b的和

returnresult

#返回函数处理结果实例7.1求阶乘函数定义一个计算整数n的阶乘的函数fact(n),即输入一个正整数,输出其阶乘值。‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬#定义计算整数阶乘的无参函数#在函数内部输入要计算阶乘的整数deffact():"""接收一个非负整数n为参数,返回n的阶乘值"""num=int(input())#输入一个正整数numresult=1#设定初值,n值为0时返回1foriinrange(1,num+1):#n>0时进入循环,计算阶乘result=result*i#每个循环乘上i,计算阶乘returnresult#返回计算结果给函数调用处#函数体外无需输入,直接将函数调用语句作为print()的参数,输出计算结果print(fact())#在输出语句中调用fact()函数,输出阶乘结果无参函数定义函数时,可以将输入置于函数体中,此时不需要外部传入参数,此时定义函数称为无参函数。返回值:None函数的返回值语句return可有可无,无return语句时,可以在函数体内直接用print()函数输出计算结果,此时函数的返回值为None。函数调用时直接用函数名调用即可,不需要再用print()输出。实例7.1阶乘函数调用:#定义计算整数阶乘的有参、有返回值函数deffact(n):"""接收一个非负整数n为参数,返回n的阶乘值"""result=1#设定初值,n值为0时返回1foriinrange(1,n+1):#n>0时进入循环,计算阶乘result=result*i#每个循环乘上i,计算阶乘returnresult#返回计算结果给函数调用处num=int(input())#输入一个正整数numprint(fact(num))#在输出语句中调用fact()函数,调用函数时,把num的值传给n#函数体外无需输入,直接将函数调用语句作为print()的参数,输出计算结果print(fact())#在输出语句中调用fact()函数,输出阶乘结果实例7.1阶乘函数if__name__=='main':的作用就是控制执行过程,该语句下面的代码只有在文件作为脚本直接执行时才会被执行,而当这个文件被其他程序用import导入时,if__name__=='main':下面的代码不被执行。#定义计算整数阶乘的有参、有返回值函数deffact(n):"""接收一个非负整数n为参数,返回n的阶乘值"""result=1#设定初值,n值为0时返回1foriinrange(1,n+1):#n>0时进入循环,计算阶乘result=result*i#每个循环乘上i,计算阶乘returnresult#返回计算结果给函数调用处if__name__=='__main__':num=int(input())#输入一个正整数numprint(fact(num))#在输出语句中调用fact()函数,调用函数时,把num的值传给n实例7.2

素数判定函数定义一个函数,判定传入正整数是否为素数。‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬defis_prime(n):"""判断参数n是否为素数的函数,返回布尔值"""ifn<2:#0和1以及负数都不是素数returnFalse#False为假,代表不是素数

foriinrange(2,int(n**0.5)+1):ifn%i==0:#当存在能整除的数时,不是素数returnFalse#False为假,代表不是素数else:returnTrue#True为真,代表是素数if__name__=='__main__':num=int(input())#输入一个正整数print(is_prime(num))#输出素数函数判定结果素数定义:大于1,除1和自身外不能被其他自然数整除的自然数。素数判定:依据素数的定义,遍历[2,n-1]区间内的整数,若整数n在[2,n-1]内有因子存在,那它不是素数;若在[2,n-1]内找不到因子,则该数仅能被1与它自身整除,是素数。素数判定优化:约数总是成对存在的,由此可将遍历范围缩减至[2,int(n**0.5)+1),从而提升算法效率。实例7.2

素数判定函数若将素数判定程序代码保存为Prime.py,便可将其作为模块导入到其他需要素数判定的程序中。下面给出回文素数、反素数和哥德巴赫猜想的示例代码。(1)回文素数。回文素数是指一个数既是素数又是回文数。例如,131,既是素数又是回文数。用户输入一个正整数n,在一行内从小到大输出小于n的回文素数,空格分隔。fromPrimeimportis_prime#导入自定义的模块Prime.py中的函数is_prime()

defpalindromic(num):

"""接收一个数字为参数,判定其是否为回文数,返回布尔值。"""

ifstr(num)==str(num)[::-1]:

returnTrue

else:

returnFalse实例7.2

素数判定函数defpalindromic_prime(number):"""接收一个正整数参数number,遍历从0到number之间的所有整数,

若某个数是素数,且转为字符串后是回文字符串,则称其是回文素数。

找出并在同一行中从小到大输出小于number的所有回文素数,每个输出后加一个空格,

函数无返回值。"""foriinrange(number):

温馨提示

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

评论

0/150

提交评论