Python电子教案61组合数据类型课件

上传人:痛*** 文档编号:171893793 上传时间:2022-11-29 格式:PPT 页数:72 大小:392KB
收藏 版权申诉 举报 下载
Python电子教案61组合数据类型课件_第1页
第1页 / 共72页
Python电子教案61组合数据类型课件_第2页
第2页 / 共72页
Python电子教案61组合数据类型课件_第3页
第3页 / 共72页
资源描述:

《Python电子教案61组合数据类型课件》由会员分享,可在线阅读,更多相关《Python电子教案61组合数据类型课件(72页珍藏版)》请在装配图网上搜索。

1、Python语言程序设计1Python电子教案6-1组合数据类型保湿成分:甘油,维他命B5,维他命E,乳酸,矿脂,海藻提取物,丙二醇,聚乙二醇,透明质酸(玻尿酸),荷荷芭油,氨基酸,水解胶原蛋白,天然保湿因子NMF,卵磷脂,神经酰胺,胆固醇,硬脂酸酯,豆蔻酸酯,棕榈酸酯,甘油酸酯,山梨醇,尿素,羟基酸和糖类等,不饱和亚油酸,亚麻酸,花生四烯酸,各种维生素等,各种植物油脂。美白成分:维他命B3,维他命C,果酸,曲酸,乳酸,鞣花酸,熊果苷,甘草、桑树的提取物,氨基酸多肽,VC及其衍生物、水杨酸及其衍生物、凝血酸、VB3、甘草黄酮、光苷草定,芦荟,樱桃,柠檬。抗皱成分:维他命A,维他命C,维他命E,

2、胶原蛋白,弹力蛋白,植物胎盘素,六元胜肽,透明质酸(玻尿酸),氨基酸多肽(胜肽),石榴多酚,辅酶Q10,虾青素,原花青素,葡萄籽,橄榄叶,石榴,绿茶,白茶。还有中草药的人参,银杏,灵芝等。橄榄油、香料、皂基橄榄油、香料、皂基2Python电子教案6-1组合数据类型第6章 组合数据类型3Python电子教案6-1组合数据类型组合数据类型概述4Python电子教案6-1组合数据类型序列类型计算机不仅对单个变量表示的数据进行处理,更多情况,计算机需要对一组数据进行批量处理。一些例子包括:给定一组单词python,data,function,list,loop,计算并输出每个单词的长度;给定一个学院学

3、生信息,统计一下男女生比例;一次实验产生了很多组数据,对这些大量数据进行分析;5Python电子教案6-1组合数据类型序列类型 组合数据类型能够将多个同类型或不同类型的数据组织起来,通过单一的表示使数据操作更有序更容易。根据数据之间的关系,组合数据类型可以分为三类:序列类型、集合类型和映射类型。6Python电子教案6-1组合数据类型序列类型 序列类型是一个元素向量,元素之间存在先后关系,通过序号访问,元素之间不排他。集合类型是一个元素集合,元素之间无序,相同元素在集合中唯一存在。映射类型是“键-值”数据项的组合,每个元素是一个键值对,表示为(key,value)。7Python电子教案6-1

4、组合数据类型序列类型8Python电子教案6-1组合数据类型序列类型序列类型是一维元素向量,元素之间存在先后关系,通过序号访问。当需要访问序列中某特定值时,只需要通过下标标出即可。1-n0Sii9Python电子教案6-1组合数据类型序列类型由于元素之间存在顺序关系,所以序列中可以存在相同数值但位置不同的元素。序列类型支持成员关系操作符(in)、长度计算函数(len())、分片(),元素本身也可以是序列类型。10Python电子教案6-1组合数据类型序列类型 Python语言中有很多数据类型都是序列类型,其中比较重要的是:str(字符串)、tuple(元组)和list(列表)。元组是包含0个或

5、多个数据项的不可变序列类型。元组生成后是固定的,其中任何数据项不能替换或删除。列表则是一个可以修改数据项的序列类型,使用也最灵活 11Python电子教案6-1组合数据类型序列类型序列类型有12个通用的操作符和函数操作符描述x in s如果x是s的元素,返回True,否则返回Falsex not in s如果x不是s的元素,返回True,否则返回Falses+t连接s和ts*n 或 n*s将序列s复制n次si索引,返回序列的第i个元素si:j分片,返回包含序列s第i到j个元素的子序列(不包含第j个元素)si:j:k步骤分片,返回包含序列s第i到j个元素以j为步数的子序列len(s)序列s的元素

6、个数(长度)min(s)序列s中的最小元素max(s)序列s中的最大元素s.index(x,i,j)序列s中从i开始到j位置中第一次出现元素x的位置s.count(x)序列s中出现x的总次数12Python电子教案6-1组合数据类型序列类型元组(tuple)是序列类型中比较特殊的类型,因为它一旦创建就不能被修改。元组类型在表达固定数据项、函数多返回值、多变量同步赋值、循环遍历等情况下十分有用。Python中元组采用逗号和圆括号(可选)来表示。creature=cat,dog,tiger,humancreature(cat,dog,tiger,human)color=(red,0 x001100

7、,blue,creature)color(red,4352,blue,(cat,dog,tiger,human)color2bluecolor-12tiger13Python电子教案6-1组合数据类型序列类型def func(x):#函数多返回值return x,x*3a,b=dog,tiger#多变量同步赋值a,b=(b,a)#多变量同步赋值,括号可省略import mathfor x,y in(1,0),(2,5),(3,8):#循环遍历 print(math.hypot(x,y)#求多个坐标值到原点的距离14Python电子教案6-1组合数据类型集合类型集合类型与数学中集合的概念一致,即

8、包含0个或多个数据项的无序组合。集合中元素不可重复,元素类型只能是固定数据类型,例如:整数、浮点数、字符串、元组等,列表、字典和集合类型本身都是可变数据类型,不能作为集合的元素出现。15Python电子教案6-1组合数据类型集合类型由于集合是无序组合,它没有索引和位置的概念,不能分片,集合中元素可以动态增加或删除。集合用大括号()表示,可以用赋值语句生成一个集合。S=425,BIT,(10,CS),424S424,425,(10,CS),BITT=425,BIT,(10,CS),424,425,BITT424,425,(10,CS),BIT16Python电子教案6-1组合数据类型集合类型由于

9、集合元素是无序的,集合的打印效果与定义顺序可以不一致。由于集合元素独一无二,使用集合类型能够过滤掉重复元素。set(x)函数可以用于生成集合。W=set(apple)e,p,a,lV=set(cat,dog,tiger,human)cat,human,dog,tiger17Python电子教案6-1组合数据类型集合类型集合类型有10个操作符 操作符描述S T 或 S.difference(T)返回一个新集合,包括在集合S中但不在集合T中的元素S-=T或S.difference_update(T)更新集合S,包括在集合S中但不在集合T中的元素S&T或S.intersection(T)返回一个新集

10、合,包括同时在集合S和T中的元素S&=T或S.intersection_update(T)更新集合S,包括同时在集合S和T中的元素。ST或s.symmetric_difference(T)返回一个新集合,包括集合S和T中元素,但不包括同时在其中的元素S=T或s.symmetric_difference_update(T)更新集合S,包括集合S和T中元素,但不包括同时在其中的元素S|T或S.union(T)返回一个新集合,包括集合S和T中所有元素S=|T或S.update(T)更新集合S,包括集合S和T中所有元素S=T或S.issubset(T)如果S与T相同或S是T的子集,返回True,否则返

11、回False,可以用S=T或S.issuperset(T)如果S与T相同或S是T的超集,返回True,否则返回False,可以用ST判断S是否是T的真超集18Python电子教案6-1组合数据类型集合类型 上述操作符表达了集合类型的4种基本操作,交集(&)、并集(|)、差集(-)、补集(),操作逻辑与数学定义相同19Python电子教案6-1组合数据类型集合类型集合类型有10个操作函数或方法 函数或方法描述S.add(x)如果数据项x不在集合S中,将x增加到sS.clear()移除S中所有数据项S.copy()返回集合S的一个拷贝S.pop()随机返回集合S中的一个元素,如果S为空,产生Key

12、Error异常S.discard(x)如果x在集合S中,移除该元素;如果x不在,不报错S.remove(x)如果x在集合S中,移除该元素;不在产生KeyError异常S.isdisjoint(T)如果集合S与T没有相同元素,返回Truelen(S)返回集合S元素个数x in S如果x是S的元素,返回True,否则返回Falsex not in S如果x不是S的元素,返回True,否则返回False20Python电子教案6-1组合数据类型集合类型集合类型主要用于三个场景:成员关系测试、元素去重和删除数据项,例子如下。BIT in PYTHON,BIT,123,GOOD#成员关系测试成员关系测试

13、Truetup=(PYTHON,BIT,123,GOOD,123)#元素去重元素去重set(tup)123,GOOD,BIT,PYTHONnewtup=tuple(set(tup)PYTHON)#去重同时删除数据项去重同时删除数据项(GOOD,123,BIT)集合类型与其他类型最大的不同在于它不包含重复元素,因此,当需要对一维数据进行去重或进行数据重复处理时,一般通过集合来完成。21Python电子教案6-1组合数据类型映射类型映射类型是“键-值”数据项的组合,每个元素是一个键值对,即元素是(key,value),元素之间是无序的。键值对(key,value)是一种二元关系。在Python中,

14、映射类型主要以字典(dict)体现。22Python电子教案6-1组合数据类型列表类型和操作23Python电子教案6-1组合数据类型列表类型的概念列表(list)是包含0个或多个对象引用的有序序列,属于序列类型。与元组不同,列表的长度和内容都是可变的,可自由对列表中数据项进行增加、删除或替换。列表没有长度限制,元素类型可以不同,使用非常灵活。24Python电子教案6-1组合数据类型列表类型的概念由于列表属于序列类型,所以列表也支持成员关系操作符(in)、长度计算函数(len())、分片()。列表可以同时使用正向递增序号和反向递减序号,可以采用标准的比较操作符(、=、)进行比较,列表的比较实

15、际上是单个数据项的逐个比较。25Python电子教案6-1组合数据类型列表类型的概念列表用中括号()表示,也可以通过list()函数将元组或字符串转化成列表。直接使用list()函数会返回一个空列表。ls=425,BIT,10,CS,425ls425,BIT,10,CS,425ls2-10Clist(425,BIT,10,CS,425)425,BIT,10,CS,425list(中国是一个伟大的国家中国是一个伟大的国家)中,国,是,一,个,伟,大,的,国,家list()26Python电子教案6-1组合数据类型列表类型的概念与整数和字符串不同,列表要处理一组数据,因此,列表必须通过显式的数据赋

16、值才能生成,简单将一个列表赋值给另一个列表不会生成新的列表对象。ls=425,BIT,1024#用数据赋值产生列表用数据赋值产生列表lslt=ls#lt是是ls所对应数据的引用,所对应数据的引用,lt并不包含真实数据并不包含真实数据ls0=0 lt0,BIT,102427Python电子教案6-1组合数据类型列表类型的概念28Python电子教案6-1组合数据类型列表类型的操作函数或方法描述lsi=x替换列表ls第i数据项为xlsi:j=lt用列表lt替换列表ls中第i到j项数据(不含第j项,下同)lsi:j:k=lt用列表lt替换列表ls中第i到j以k为步的数据del lsi:j删除列表ls

17、第i到j项数据,等价于lsi:j=del lsi:j:k删除列表ls第i到j以k为步的数据ls+=lt或ls.extend(lt)将列表lt元素增加到列表ls中ls*=n更新列表ls,其元素重复n次ls.append(x)在列表ls最后增加一个元素xls.clear()删除ls中所有元素ls.copy()生成一个新列表,复制ls中所有元素ls.insert(i,x)在列表ls第i位置增加元素xls.pop(i)将列表ls中第i项元素取出并删除该元素ls.remove(x)将列表中出现的第一个元素x删除ls.reverse(x)列表ls中元素反转29Python电子教案6-1组合数据类型列表类型

18、的操作vlist=list(range(5)vlist0,1,2,3,4len(vlist2:)#计算从第3个位置开始到结尾的子串长度32 in vlist#判断2是否在列表vlist中Truevlist3=python#修改序号3的元素值和类型vlist 0,1,2,python,4vlist1:3=bit,computer vlist 0,bit,computer,3,430Python电子教案6-1组合数据类型列表类型的操作当使用一个列表改变另一个列表值时,Python不要求两个列表长度一样,但遵循“多增少减”的原则,例子如下。vlist1:3=new_bit,new_computer,

19、123vlist0,new_bit,new_computer,123,python,4vlist1:3=fewervlist0,fewer,123,python,431Python电子教案6-1组合数据类型列表类型的操作 与元组一样,列表可以通过forin语句对其元素进行遍历,基本语法结构如下:for in :语句块 32Python电子教案6-1组合数据类型列表类型的操作for e in vlist:print(e,end=)0 fewer 123 python 4 列表是一个十分灵活的数据结构,它具有处理任意长度、混合类型的能力,并提供了丰富的基础操作符和方法。当程序需要使用组合数据类型管

20、理批量数据时,请尽量使用列表类型。33Python电子教案6-1组合数据类型基本统计值计算34Python电子教案6-1组合数据类型基本统计值的计算 以最简单的统计问题为例,求解一组不定长数据的基本统计值,即平均值、标准差、中位数。一组数据表示为S=s0,s1,sn-1,其算术平均值、标准差分别表示为:nmii/)s(1-n0)1/())(s(21-n0nmdii和35Python电子教案6-1组合数据类型基本统计值的计算 由于平均数、标准差和中位数是三个不同的计算目标,使用函数方式编写计算程序。getNum()函数从用户输入获得数据 mean()函数计算平均值 dev()函数计算标准差 me

21、dian()函数计算中位数36Python电子教案6-1组合数据类型基本统计值的计算实例代码9.1e9.1CalStatistics.py 123456789101112131415#e9.1CalStatistics.pyfrom math import sqrtdef getNum():#获取用户输入获取用户输入 nums=iNumStr=input(请输入数字请输入数字(直接输入回车退出直接输入回车退出):)while iNumStr!=:nums.append(eval(iNumStr)iNumStr=input(请输入数字请输入数字(直接输入回车退出直接输入回车退出):)return

22、 numsdef mean(numbers):#计算平均值计算平均值 s=0.0 for num in numbers:s=s+num return s/len(numbers)37Python电子教案6-1组合数据类型基本统计值的计算实例代码9.1e9.1CalStatistics.py 15161718192021222324252627282930 def dev(numbers,mean):#计算方差计算方差 sdev=0.0 for num in numbers:sdev=sdev+(num-mean)*2 return sqrt(sdev/(len(numbers)-1)def m

23、edian(numbers):#计算中位数计算中位数 sorted(numbers)size=len(numbers)if size%2=0:med=(numberssize/2-1+numberssize/2)/2 else:med=numberssize/2 return medn=getNum()#主体函数主体函数m=mean(n)print(平均值平均值:,方差方差:.2,中位数中位数:.format(m,dev(n,m),median(n)38Python电子教案6-1组合数据类型基本统计值的计算 请输入数字(直接输入回车退出):99请输入数字(直接输入回车退出):98请输入数字(直

24、接输入回车退出):97请输入数字(直接输入回车退出):96请输入数字(直接输入回车退出):95请输入数字(直接输入回车退出):平均值:97.0,方差:1.6,中位数:97.程序先后调用getNum()、mean()、dev()和median()函数。利用函数的模块化设计能够复用代码并增加代码的可读性。每个函数内部都采用了简单的语句。39Python电子教案6-1组合数据类型基本统计值的计算列表在实现基本数据统计时发挥了重要作用,表现在:列表是一个动态长度的数据结构,可以根据需求增加或减少元素;列表的一系列方法或操作符为计算提供了简单的元素运算手段;列表提供了对每个元素的简单访问方式及所有元素的

25、遍历方式。40Python电子教案6-1组合数据类型字典类型的计算41Python电子教案6-1组合数据类型字典类型的基本概念通过任意键信息查找一组数据中值信息的过程叫映射,Python语言中通过字典实现映射。Python语言中的字典可以通过大括号()建立,建立模式如下::,:,:其中,键和值通过冒号连接,不同键值对通过逗号隔开。42Python电子教案6-1组合数据类型字典类型的基本概念Dcountry=中国:北京,美国:华盛顿,法国:巴黎print(Dcountry)中国:北京,法国:巴黎,美国:华盛顿字典打印出来的顺序与创建之初的顺序不同,这不是错误。字典是集合类型的延续,各个元素并没有

26、顺序之分。43Python电子教案6-1组合数据类型字典类型的基本概念 字典最主要的用法是查找与特定键相对应的值,这通过索引符号来实现。Dcountry中国中国北京 一般来说,字典中键值对的访问模式如下,采用中括号格式:=字典中对某个键值的修改可以通过中括号的访问和赋值实现:Dcountry中国中国=大北京大北京print(Dcountry)中国:大北京,法国:巴黎,美国:华盛顿44Python电子教案6-1组合数据类型字典类型的操作通过中括号可以增加新的元素 Dcountry=中国:北京,美国:华盛顿,法国:巴黎Dcountry英国=伦敦print(Dcountry)中国:北京,法国:巴黎,

27、美国:华盛顿,英国:伦敦直接使用大括号()可以创建一个空的字典,并通过中括号()向其增加元素。Dp=Dp210=1024print(Dp)210:102445Python电子教案6-1组合数据类型字典类型的操作函数和方法描述.keys()返回所有的键信息.values()返回所有的值信息.items()返回所有的键值对.get(,)键存在则返回相应值,否则返回默认值.pop(,)键存在则返回相应值,同时删除键值对,否则返回默认值.popitem()随机从字典中取出一个键值对,以元组(key,value)形式返回.clear()删除所有的键值对del 删除字典中某一个键值对 in 如果键在字典中

28、返回True,否则返回False46Python电子教案6-1组合数据类型字典类型的操作Dcountry=中国:北京,美国:华盛顿,法国:巴黎Dcountry.keys()dict_keys(中国,美国,法国)list(Dcountry.values()北京,华盛顿,巴黎Dcountry.items()dict_items(中国,北京),(美国,华盛顿),(法国,巴黎)中国中国 in Dcountry#只对键进行判断只对键进行判断TrueDcountry.get(美国美国,悉尼悉尼)#美国美国在字典中存在在字典中存在华盛顿Dcountry.get(澳大利亚澳大利亚,悉尼悉尼)#澳大利亚澳大利亚

29、在字典中不存在在字典中不存在悉尼47Python电子教案6-1组合数据类型字典类型的操作与其他组合类型一样,字典可以通过forin语句对其元素进行遍历,基本语法结构如下:for in :语句块for key in Dcountry:print(key)中国美国法国48Python电子教案6-1组合数据类型字典类型的操作字典是实现键值对映射的数据结构,请理解如下基本原则:字典是一个键值对的集合,该集合以键为索引,一个键信息只对应一个值信息;字典中元素以键信息为索引访问;字典长度是可变的,可以通过对键信息赋值实现增加或修改键值对。49Python电子教案6-1组合数据类型jieba库的使用50Py

30、thon电子教案6-1组合数据类型jieba库的概述jieba是Python中一个重要的第三方中文分词函数库import jiebajieba.lcut(中国是一个伟大的国家中国是一个伟大的国家)中国,是,一个,伟大,的,国家jieba库是第三方库,不是安装包自带,需要通过pip指令安装:pip install jieba#或者或者 pip3 install jieba51Python电子教案6-1组合数据类型jieba库的解析函数描述jieba.cut(s)精确模式,返回一个可迭代的数据类型jieba.cut(s,cut_all=True)全模式,输出文本s中所有可能单词jieba.cut_

31、for_search(s)搜索引擎模式,适合搜索引擎建立索引的分词结果jieba.lcut(s)精确模式,返回一个列表类型,建议使用jieba.lcut(s,cut_all=True)全模式,返回一个列表类型,建议使用jieba.lcut_for_search(s)搜索引擎模式,返回一个列表类型,建议使用jieba.add_word(w)向分词词典中增加新词w52Python电子教案6-1组合数据类型jieba库的解析import jiebajieba.lcut(中华人民共和国是一个伟大的国家中华人民共和国是一个伟大的国家)中华人民共和国,是,一个,伟大,的,国家jieba.lcut(中华人民

32、共和国是一个伟大的国家中华人民共和国是一个伟大的国家,cut_all=True)中华,中华人民,中华人民共和国,华人,人民,人民共和国,共和,共和国,国是,一个,伟大,的,国家jieba.lcut_for_search(中华人民共和国是一个伟大的国家中华人民共和国是一个伟大的国家)中华,华人,人民,共和,共和国,中华人民共和国,是,一个,伟大,的,国家53Python电子教案6-1组合数据类型文本词频统计54Python电子教案6-1组合数据类型Hamlet英文词频统计实例代码10.1e10.1CalHamlet.py 1234567891011121314151617#e10.1CalHam

33、let.pydef getText():txt=open(hamlet.txt,r).read()txt=txt.lower()for ch in!#$%&()*+,-./:;?_|:txt=txt.replace(ch,)#将文本中特殊字符替换为空格将文本中特殊字符替换为空格return txthamletTxt=getText()words =hamletTxt.split()counts=for word in words:countsword=counts.get(word,0)+1items=list(counts.items()items.sort(key=lambda x:x1,

34、reverse=True)for i in range(10):word,count=itemsi print(0:5.format(word,count)55Python电子教案6-1组合数据类型Hamlet英文词频统计 the 1138and 965to 754of 669you 550a 542i 542my 514hamlet 462in 436观察输出结果可以看到,高频单词大多数是冠词、代词、连接词等语法型词汇,并不能代表文章的含义。进一步,可以采用集合类型构建一个排除词汇库excludes,在输出结果中排除这个词汇库中内容。56Python电子教案6-1组合数据类型实例代码10.2

35、e10.2CalHamlet.py 1234567891011121314151617181920#e10.2CalHamlet.pyexcludes=the,and,of,you,a,i,my,indef getText():txt=open(hamlet.txt,r).read()txt=txt.lower()for ch in!#$%&()*+,-./:;?_|:txt=txt.replace(ch,)#将文本中特殊字符替换为空格将文本中特殊字符替换为空格return txthamletTxt=getText()words =hamletTxt.split()counts=for wor

36、d in words:countsword=counts.get(word,0)+1for word in excludes:del(countsword)items=list(counts.items()items.sort(key=lambda x:x1,reverse=True)for i in range(10):word,count=itemsi print(0:5.format(word,count)57Python电子教案6-1组合数据类型Hamlet英文词频统计运行程序后,输出结果如下 to 754hamlet 462it 416that 391is 340not 314lor

37、d 309his 296this 295but 26958Python电子教案6-1组合数据类型三国演义人物出场统计 实例代码10.3e10.3CalThreeKingdoms.py 123456789101112131415#e10.3CalThreeKingdoms.pyimport jiebatxt=open(三国演义三国演义.txt,r,encoding=utf-8).read()words =jieba.lcut(txt)counts=for word in words:if len(word)=1:#排除单个字符的分词结果排除单个字符的分词结果 continue else:coun

38、tsword=counts.get(word,0)+1items=list(counts.items()items.sort(key=lambda x:x1,reverse=True)for i in range(15):word,count=itemsiprint(0:5.format(word,count)59Python电子教案6-1组合数据类型三国演义人物出场统计 曹操 953孔明 836将军 772却说 656玄德 585关公 510丞相 491二人 469不可 440荆州 425玄德曰 390孔明曰 390不能 384如此 378张飞 35860Python电子教案6-1组合数据类

39、型三国演义人物出场统计 观察输出结果,同一个人物会有不同的名字,这种情况需要整合处理。同时,与英文词频统计类似,需要排除一些人名无关词汇,如“却说”、“将军”等。61Python电子教案6-1组合数据类型三国演义人物出场统计 实例代码10.4e10.4CalThreeKingdoms.py 1234567891011121314151617#e10.4CalThreeKingdoms.pyimport jiebaexcludes=将军将军,却说却说,荆州荆州,二人二人,不可不可,不能不能,如此如此txt=open(三国演义三国演义.txt,r,encoding=utf-8).read()wor

40、ds =jieba.lcut(txt)counts=for word in words:if len(word)=1:continue elif word=诸葛亮诸葛亮 or word=孔明曰孔明曰:rword=孔明孔明 elif word=关公关公 or word=云长云长:rword=关羽关羽 elif word=玄德玄德 or word=玄德曰玄德曰:rword=刘备刘备 elif word=孟德孟德 or word=丞相丞相:rword=曹操曹操”62Python电子教案6-1组合数据类型三国演义人物出场统计 实例代码10.4e10.4CalThreeKingdoms.py 18192

41、021222324252627else:rword=word countsrword=counts.get(rword,0)+1for word in excludes:del(countsword)items=list(counts.items()items.sort(key=lambda x:x1,reverse=True)for i in range(5):word,count=itemsi print(0:5.format(word,count)63Python电子教案6-1组合数据类型三国演义人物出场统计 输出排序前5的单词,运行程序后,输出结果如下:曹操 1451孔明 1383刘备

42、 1252关羽 784张飞 358请继续完善程序,排除更多无关词汇干扰,总结出场最多的20个人物都有哪些。这里,给出参考答案。曹操(1451)、孔明(1383)、刘备(1252)、关羽(784)、张飞(358)、吕布(300)、赵云(278)、孙权(264)、司马懿(221)、周瑜(217)、袁绍(191)、马超(185)、魏延(180)、黄忠(168)、姜维(151)、马岱(127)、庞德(122)、孟获(122)、刘表(120)、夏侯惇(116)64Python电子教案6-1组合数据类型Python之禅65Python电子教案6-1组合数据类型Python之禅 什么样的程序是好的?如何编写

43、漂亮的代码?这都是学习编程一段时间最经常提出的问题,却最难回答。程序设计语言如同自然语言,好的代码就像文学作品,不仅达意,更要优美。那什么是“好”?什么是“优美”?领悟编程代码优美的过程类似参禅,除了不断练习,也需要理解一些原则。66Python电子教案6-1组合数据类型Python之禅 Python编译器以函数库的形式内置了一个有趣的文件,被称为“Python之禅”(The Zen of Python)。当调用如下一行语句后,会出现一段有趣的运行结果。import this 67Python电子教案6-1组合数据类型The Zen of Python,by Tim Peters Beauti

44、ful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated.Flat is better than nested.Sparse is better than dense.Readability counts.Special cases arent special enough to break the rules.Although practicality beats purity.Errors should n

45、ever pass silently.Unless explicitly silenced.In the face of ambiguity,refuse the temptation to guess.There should be one-and preferably only one-obvious way to do it.Although that way may not be obvious at first unless youre Dutch.Now is better than never.Although never is often better than*right*n

46、ow.If the implementation is hard to explain,its a bad idea.If the implementation is easy to explain,it may be a good idea.Namespaces are one honking great idea-lets do more of those!68Python电子教案6-1组合数据类型Python之禅 Python之禅 作者:Tim Peters 优美胜于丑陋明了胜于隐晦简洁胜于复杂复杂胜于凌乱扁平胜于嵌套间隔胜于紧凑可读性很重要即便假借特例的实用性之名,也不要违背上述规则除

47、非你确定需要,任何错误都应该有应对当存在多种可能,不要尝试去猜测只要你不是Guido,对于问题尽量找一种,最好是唯一明显的解决方案做也许好过不做,但不假思索就动手还不如不做如果你无法向人描述你的实现方案,那肯定不是一个好方案如果实现方案容易解释,可能是个好方案命名空间是绝妙的理念,要多运用译者心得 以编写优美代码为目标,不多解释优美代码应该清晰明了,规范统一优美代码应该逻辑简洁,避免复杂逻辑如果必须采用复杂逻辑,接口关系也要清晰优美代码应该是扁平的,避免太多层次嵌套优美代码间隔要适当,每行代码解决适度问题优美代码必须是可读且易读的上述规则是至高无上的 捕获异常,不让程序留有因错误退出的可能 不

48、要试图给出多种方案,找到一种实现它,几乎所有人都没有Guido那么牛编程之前要有思考 能说清楚的往往才是对的 适合复杂程序编程69Python电子教案6-1组合数据类型Python之禅 除了Python之禅所表达的Python设计理念,该程序还有另一段魅力:实例代码11.1this.py 12345678910111213s=Gur Mra bs Clguba,ol Gvz Crgref Ornhgvshy vf orggre guna htyl.Rkcyvpvg vf orggre guna vzcyvpvg.Fvzcyr vf orggre guna pbzcyrk.Pbzcyrk vf

49、orggre guna pbzcyvpngrq.Syng vf orggre guna arfgrq.Fcnefr vf orggre guna qrafr.Ernqnovyvgl pbhagf.Fcrpvny pnfrf nerag fcrpvny rabhtu gb oernx gur ehyrf.Nygubhtu cenpgvpnyvgl orngf chevgl.Reebef fubhyq arire cnff fvyragyl.Hayrff rkcyvpvgyl fvyraprq.70Python电子教案6-1组合数据类型Python之禅 实例代码11.1this.py 141516

50、17181920212223242526272829Va gur snpr bs nzovthvgl,ershfr gur grzcgngvba gb thrff.Gurer fubhyq or bar-naq cersrenoyl bayl bar-boivbhf jnl gb qb vg.Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbher Qhgpu.Abj vf orggre guna arire.Nygubhtu arire vf bsgra orggre guna*evtug*abj.Vs gur vzcyrzragn

51、gvba vf uneq gb rkcynva,vgf n onq vqrn.Vs gur vzcyrzragngvba vf rnfl gb rkcynva,vg znl or n tbbq vqrn.Anzrfcnprf ner bar ubaxvat terng vqrn-yrgf qb zber bs gubfr!d=for c in(65,97):for i in range(26):dchr(i+c)=chr(i+13)%26+c)print(.join(d.get(c,c)for c in s)71Python电子教案6-1组合数据类型Python之禅 密文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z原文:N O P Q R S T U V W X Y Z A B C D E F G H I J K L M密文:a b c d e f g h i j k l m n o p q r s t u v w x y z原文:n o p q r s t u v w x y z a b c d e f g h i j k l m 这个算法可以看作是凯撒密码的一种扩展,相比凯撒密码,采用循环移动13个位置,加密和解密可以用同一个程序。72Python电子教案6-1组合数据类型

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!