Python程序设计-从基础到应用 课件 第3、4章 程序控制结构、组合数据类型_第1页
Python程序设计-从基础到应用 课件 第3、4章 程序控制结构、组合数据类型_第2页
Python程序设计-从基础到应用 课件 第3、4章 程序控制结构、组合数据类型_第3页
Python程序设计-从基础到应用 课件 第3、4章 程序控制结构、组合数据类型_第4页
Python程序设计-从基础到应用 课件 第3、4章 程序控制结构、组合数据类型_第5页
已阅读5页,还剩193页未读 继续免费阅读

下载本文档

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

文档简介

程序控制结构程序控制结构知识CONTENT要点选择结构程序设计循环结构程序设计异常处理算法算法是解决问题的一系列操作步骤的集合。程序流程图用一系列图形、流程线和文字说明描述程序的基本操作和控制流程,它是程序分析和过程描述的最基本方式。流程图的基本元素包括7种:程序控制结构顺序结构选择结构循环结构顺序结构顺序结构是程序按照线性顺序依次执行的一种运行方式。语句块1语句块2选择结构选择结构是程序根据条件判断结果,选择不同向前执行路径的一种运行二分支结构条件语句块1语句块2TrueFalse循环结构循环结构是程序根据条件判断结果,反复执行语句块的一种运行方式。遍历循环取遍历结构的第i个元素语句块元素i遍历结束条件?语句块TrueFalse条件循环顺序程序设计举例输入三角形的三条边a,b,c,根据公式计算并输出三角形的面积。

顺序程序设计举例start输入a,b,cs=(a+b+c)/2输出areaend顺序程序设计举例1234a,b,c=eval(input("输入三角形的三条边长:"))s=(a+b+c)/2area=(s*(s-a)*(s-b)*(s-c))**0.5print("area=",area)输入三角形的三条边长:3,4,5area=6.0>>>选择结程序设计猜拳游戏赢了输了平手知识要点选择结构选择结构嵌套多分支结构双分支结构单分支结构目CONTENT录单分支结构单分支结构:if语句判断条件,若为真,执行语句块;否则跳过语句块。语法格式如下:if<条件>:

语句块条件语句块TrueFalse单分支结构:if语句判断用户输入数字的奇偶性请输入一个整数:8这是个偶数1234#判断用户输入数字的奇偶性n=eval(input(“请输入一个整数:"))ifn%2==0:print("这是个偶数")n%2==0?FalseTrue输出:这是个偶数startend输入n目CONTENT录双分支结构双分支结构:if-else语句根据条件判断结果,为真选择执行语句块1,为假选择执行语句块2。语法格式如下:if<条件>:<语句块1>else:<语句块2>条件语句块1FalseTrue语句块2双分支结构:if-else语句n%2==0?FalseTrue输入n输出:这是个偶数输出:这是个奇数startend双分支结构:if-else语句判断用户输入数字的奇偶性12345#判断用户输入数字的奇偶性n=eval(input("请输入一个整数:"))ifn%2==0:print("这是个偶数")else:print("这是个奇数")6请输入一个整数:7这是个奇数>>>双分支结构:if-else语句双分支结构还有一种更简洁的表达方式,语法格式如下:<表达式1>if<条件>else<表达式2>123n=int(input(""))s=“是偶数”ifn%2==0else“是奇数"print(n,s)55是奇数>>>目CONTENT录多分支结构多分支结构:if-elif-else语句Python的if-elif-else描述多分支结构。语法格式如下:if<条件1>:<语句块1>elif<条件2>:<语句块2>...else:<语句块N>条件1语句块1True语句块NFalse…条件N-1语句块N-1TrueFalse多分支结构:if-elif-else语句编程计算函数的值,格式如下:-404

多分支结构:if-elif-else语句x<-4?y=x+9Truey=2*x-15False输入xx<4?y=x*x+2*x+9TrueFalse输出y

多分支结构:if-elif-else语句编程计算函数的值,格式如下:1#计算分段函数x=eval(input("输入x的值:"))ifx<-4:y=x+9elifx<4:y=x*x+2*x+1else:y=2*x-15print("y=",y)23456789输入x的值:6y=-3>>>

目CONTENT录选择结构的嵌套选择结构的嵌套if语句可以嵌套if语句,两种选择结构嵌套语句格式如下:语法二:if<条件1>:<语句块1>else:

if<条件2>:<语句块2>语法一:if<条件1>:

if<条件2>:<语句块1>else:<语句块2>选择结构的嵌套编程计算函数的值,格式如下:1x=int(input("输入x值:"))ifx<-4:y=x+9else:

ifx<4:y=x**2+2*x+1else:y=2*x-15print("y={}".format(y))234567891x=int(input("输入x值:"))ifx<4:

ifx<-4:y=x+9else:y=x**2+2*x+1else:y=2*x-15print("y={}".format(y))23456789

实例解析输入学生成绩,判定成绩等级。85以上为优秀,70分以上为良好,60分以上为及格,60分以下为不及格。1score=eval(input("请输入学生成绩:"))ifscore>=85:print("优秀")elifscore>=70:print("良好")elifscore>=60:print("及格")else:print("不及格")23456789请输入学生成绩:67及格>>>实例解析从键盘输入一个字符ch,判断它是英文字母、数字或其他字符。1ch=input("请输入一个字符:")if'a'<=ch<='z'or'A'<=ch<='Z':print("英文字母")elif'0'<=ch<='9':print("数字字符")else:print("其他字符")234567请输入一个字符:8数字字符>>>实例解析从键盘输入一个字符ch,判断它是英文字母、数字或其他字符。1ch=input("请输入一个字符:")ifch.isalpha():print("英文字母")elifch.isnumeric():print("数字字符")else:print("其他字符")234567请输入一个字符:?其他字符>>>选择结构——应用实战应用实战BMI计算器应用实战身体质量指数(BodyMassIndex,简称BMI),是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。BMI值超标,意味着你必须减肥了。BMI计算公式:体质指数(BMI)=体重(kg)/身高2(m)应用实战中国BMI指数标准表BMI指数结果<18.5偏瘦18.5~24正常24~28超重>=28肥胖应用实战设计一个BMI计算器,输入体重(kg)及身高(m),计算BMI指数,判定身体质量。根据bmi指数标准表,采用if-elif-else多分支进行判别;计算bmi指数;输入体重和身高;输出身体质量结果;应用实战BMI计算器程序代码a=eval(input("请输入您的体重(kg):"))b=eval(input("请输入您的身高(m):"))bmi=a/b**2ifbmi<=18.5:print("BMI指数={:.2f},您的身体偏瘦!".format(bmi))elifbmi<=24:print("BMI指数={:.2f},您的身体正好,请继续保持!".format(bmi))elifbmi<=28:print("BMI指数={:.2f},您的身体超重,要稍微控制并管理一下身材哦!".format(bmi))else:print("BMI指数={:.2f},您的身体肥胖,该减肥了!".format(bmi))BMI指数结果<18.5偏瘦18.5~24正常24~28超重>=28肥胖应用实战BMI计算器运行效果请输入您的体重(kg):47请输入您的身高(m):1.5BMI指数=20.89,您的身体正好,请继续保持!循环结构程序设计猜数字游戏①生成目标数字target②输入猜的数字guess③判断猜数字情况:猜小了,重复②③步,继续游戏猜大了,重复②③步,继续游戏猜中了,游戏结束知识要点break和continue循环控制语句循环的嵌套条件循环遍历循环循环结构程序的循环结构遍历循环使用保留字for依次提取序列对象各元素进行处理;条件循环使用保留字while根据判断条件执行程序。条件?语句块TrueFalse条件循环遍历循环取遍历结构的第i个元素语句块元素i遍历结束目CONTENT录取遍历结构的第i个元素语句块元素i遍历结束遍历循环遍历循环:for从遍历结构中逐一提取元素,放在循环变量中,对于每个所提取的元素执行一次语句块。for<循环变量>in<遍历结构>:<语句块>遍历循环取遍历结构的第i个元素语句块元素i遍历结束遍历循环:for遍历结构可以是字符串、列表、range()函数等。>>>forcin"Python":print(c)Python对于字符串,可以逐一遍历字符串的每个字符,基本使用方式如下:for<循环变量>in<字符串>:<语句块>遍历循环:for使用range()函数,返回可迭代对象:start表示开始,默认值为0。stop表示结束,但不包含。step表示步长,默认值为1。range([start,]stop[,step]),表示[start,stop)范围遍历循环:forfor<循环变量>inrange(<参数>):<语句块>用range(1,101)产生迭代数据1、2、3、4、5……100遍历循环:for计算s=1+2+3+……+1001234s=0foriinrange(1,101):s=s+iprint("s=",s)s=5050>>>range(1,101)变量is=0输出ss=s+i遍历循环:for遍历循环还有一种扩展模式,使用方法如下:for<循环变量>in<遍历结构>:<语句块1>else:

<语句块2>当for循环正常执行之后,程序会继续执行else语句中内容;即遍历结构中所有元素都被访问过了才执行else语句。遍历循环:for计算s=1+2+3+……+100s=5050>>>1234s=0foriinrange(1,101):s=s+ielse:print("s=",s)5目CONTENT录条件?语句块TrueFalse条件循环当程序执行到while语句时,判断条件如果为True,执行循环体,语句结束后返回再次判断循环条件;当条件为False时,循环终止。while<条件>:<语句块>条件循环:while条件?语句块TrueFalse条件循环语法格式条件循环:whilei<=100?TrueFalse输出ss=0i=1s=s+ii=i+1计算s=1+2+3+……+100计算s=1+2+3+……+100条件循环:while1234s=0#和值i=1#加数whilei<=100:#当加数<=100s=s+i#累加求和

i=i+1#产生下一个加数print("s=",s)56s=5050>>>条件循环:while条件循环也有一种扩展模式,使用方法如下:while<条件>: <语句块1>else: <语句块2>当while循环正常执行之后,程序会继续执行else语句中内容。else语句只在循环正常执行后才执行。s=5050>>>条件循环:while计算s=1+2+3+……+1001234s=0#和值i=1#加数whilei<=100:#当加数<=100s=s+i#累加求和

i=i+1#产生下一个加数else:print("s=",s)567break与continue循环控制:break和continuebreak用来跳出最内层for或while循环,从循环之后的代码继续执行。输入一个整数m,判断m是否是素数。m234……m-1i:循环控制:break和continue输入一个整数m,判断m是否是素数。用i遍历2~m-1,判断m%i==0?m234……m-1i:若为真,判定不是素数,使用break语句中断循环;若正常遍历结束,则判定是素数。循环控制:break和continue输入一个整数m,判断是否是素数。1234m=int(input("请输入整数m:"))foriinrange(2,m):ifm%i==0:print(“不是素数")breakelse:print("是素数")567循环控制:break和continue输入一个整数m,判断是否是素数。1m=int(input("请输入整数m:"))ifm==1:print(“不是素数”)elifm==2:print(“是素数”)else:foriinrange(2,m):ifm%i==0:print(“不是素数")breakelse:print("是素数")请输入整数m:5353是素数>>>23456789101112循环控制:break和continuecontinue用来提前结束当前当次循环,即跳过循环体中下面尚未执行的语句,直接进入下一次循环,但不跳出整个循环。循环控制:break和continue求1~100之间全部奇数之和1234s=0foriinrange(1,101):ifi%2==0:continues=s+iprint("s={}".format(s))56s=2500>>>循环控制:break和continueContinue语句和break语句的区别是:continue语句只结束本次循环,不终止整个循环的执行,而break具备结束整个循环的能力。循环的嵌套循环的嵌套输出100~200之间的全部素数,每行输出10个。循环的嵌套问题分析:外循环:用i遍历100~200之间的每个数内循环:用j遍历2~i-1之间的每个数循环体:判定当前i值,是否是素数:若i%j==0为真:则i不是素数,中断内循环内循环遍历正常结束,则i是素数,输出i,同时计数加1。循环的嵌套输出100~200之间的全部素数,每行输出10个。1count=0#计数foriinrange(101,200,2):#外循环,遍历区间100~200的所有奇数

forjinrange(2,i):#内循环,对当前i,遍历区间2~i-1ifi%j==0:#若i能被j整除,不是素数

break#跳出内循环

else:#若内循环完整结束,输出i,是素数

print(i,end=",")count=count+1#计数加1ifcount%10==0:#处理分行

print("")2345678910101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,循环结构——应用实战应用实战

猜数字游戏猜数字游戏①生成目标数字target(1~1000之间)②输入猜的数字guess③判断猜数字情况:猜小了,重复②③步,继续游戏猜大了,重复②③步,继续游戏猜中了,游戏结束应用实战①生成目标数字target,1~1000之间使用随机库的randint()函数,生成一个随机整数。导入随机库:importrandom生成随机数target:target=random.randint(1,1000)应用实战重复②③步,循环控制条件,whileTrue②输入猜的数字guessguess=eval(input("输入一个整数:"))③判断猜数字情况:猜小了、猜大了、猜中了if-elif-else实现应用实战猜数字游戏importrandomtarget=random.randint(1,1000)whileTrue:guess=eval(input("输入一个整数:"))ifguess<target:print("猜小了")elifguess>target:print("猜大了")else:print("猜中了")break程序的异常处理程序的异常异常是程序运行运行时引发的错误。比如除数为0,会产生运行错误。>>>n=3/0Traceback(mostrecentcalllast):File"<pyshell#3>",line1,in<module>n=3/0ZeroDivisionError:divisionbyzero>>>程序的异常异常是程序运行运行时引发的错误。比如输入异常,会产生运行错误。>>>n=eval(input("请输入一个数字:"))请输入一个数字:pythonTraceback(mostrecentcalllast):File"<pyshell#4>",line1,in<module>n=eval(input("请输入一个数字:"))File"<string>",line1,in<module>NameError:name'python'isnotdefined>>>程序的异常处理基本思路先尝试运行代码,如果没有问题就正常执行;如果发生了错误就尝试着去捕获和处理;上述均无法处理,程序才崩溃。try…except…语句try…except…else…语句try…except…finally…语句try…except语句基本的语法格式如下:try:<语句块>except:<异常处理语句块>执行try中的语句块,如果执行正常,则转向try-except语句之后的语句执行。若发生异常,则执行except中的异常处理语句块。try…except语句处理异常,比如除数为0。12345x=eval(input())try:n=1.0/xprint(n)except:print("除数不能为0")620.5>>>0除数不能为0try…except语句处理异常,比如输入错误。12345try:n=eval(input("请输入数字n:"))y=n**2print(y)except:print("输入错误,请输入数字!")6请输入数字n:39>>>请输入数字n:python输入错误,请输入数字!>>>try…except…else语句基本的语法格式如下:try:<语句块>except:<异常处理语句块>else:<没有引发异常时的处理语句块>执行try中的语句块,如果执行正常,则执行else中的语句块;若发生异常,则执行except中的异常处理语句块,不会执行else中的代码。try…except…else语句处理异常,比如除数为0。12345x=eval(input())try:n=1.0/xexcept:print("除数不能为0")else:print(n)620.5>>>0除数不能为07try…except…else语句输入异常,比如要求输入数字,却输入的是英文字符串。12345try:n=eval(input("请输入数字n:"))except:print("输入错误,请输入数字!")else:y=n**2print(y)6请输入数字n:39>>>请输入数字n:python输入错误,请输入数字!7try…except…finally语句基本的语法格式如下:try:<语句块>except:<异常处理语句块>finally:<无论是否发生异常,都要执行的语句块>执行try中的语句块,如果执行正常,则继续执行finally中的语句块;若发生异常,则执行except中的异常处理语句块,然后继续执行finally中的代码。try…except…finally语句运行异常,比如除数为0。12345x=eval(input())try:n=1.0/xprint(n)except:print("除数不能为0")finally:print("这是一则除法运算题!")60除数不能为0这是一则除法运算题!>>>20.5这是一则除法运算题!78try…except…finally语句输入异常,比如要求输入数字,却输入的是英文字符串。12345try:n=eval(input("请输入数字n:"))y=n**2print(y)except:print("输入错误,请输入数字!")finally:print(“这是一道输入数字并计算平方值的题目!")6请输入数字n:39这是一道输入数字并计算平方值的题目!>>>请输入数字n:python输入错误,请输入数字!这是一道输入数字并计算平方值的题目!>>>78单元小结本单元,我们学习了程序基本控制结构:顺序结构、选择结构、循环结构;理解了循环控制语句break和continue的运用和区别。并学习了程序异常处理的几种语法形式。最后,通过程序实例帮助大家理解程序基本控制结构的运用。第4章组合数据类型序列类型概述列表类型:定义、操作元组类型:定义、操作集合类型:定义、操作知识要点字符串类型:定义、操作字典类型:定义、操作序列类型概述序列类型概述序列由一组存在先后关系的元素组成。元素通过索引访问,索引从0开始。如:序列名[索引]索引体系有:正向递增序号和反向递减序号。“hello”123(3,4)[3,4,5]3.14-5-4-3-2-101234正向递增序号反向递减序号列表类型创建列表列表(list)是元素的有序集合,元素放在中括号[]中,元素类型可以不同赋值方式>>>ls=['Hello',[1,2],"Python"]>>>ls['Hello',[1,2],'Python']>>>ls=list("Hello")>>>ls['H','e','l','l','o']>>>列表内建函数list()读取、修改列表元素使用索引读取列表的一个元素。形式如:通过赋值运算符=,修改列表元素值>>>ls=['Hello',[1,2],"Python"]>>>ls[0]'Hello'>>>ls[-1]'Python'>>>ls[0]='Hi'>>>ls['Hi',[1,2],'Python']>>>列表名[索引]遍历列表元素使用for循环对列表的元素进行遍历,基本使用方式如下:>>>ls=['Hello',[1,2],"Python"]>>>foriinls:

print(i)

Hello[1,2]Pythonfor<循环变量>in<列表>:<语句块>遍历列表元素结合索引方式对列表的元素进行遍历:>>>ls=['Hello',[1,2],"Python"]>>>foriinrange(len(ls)): print(ls[i])

Hello[1,2]Pythonfor<循环变量>inrange(len(<列表>)):<语句块>列表的切片切片用于获得列表的一个片段,切片后的结果也是列表类型<列表名>[N:M:K]切片获取列表索引从N到M(不包含M),以K为步长的元素组成新的列表,切片使用方式:N:开始索引,正索引默认为0,负索引默认为-len(列表名)M:结束索引,不包含K:步长,默认为1列表的切片切片获取列表类型从N到M(不包含M)的元素组成新的列表。当K存在时,切片获取列表类型从N到M(不包含M)以K为步长所对应元素组成的列表。>>>ls=['Hello',[1,2],"Python",99]>>>ls[0:4:2]['Hello','Python']>>>ls[:3]['Hello',[1,2],'Python']>>>ls[:-1]['Hello',[1,2],'Python']>>>ls[:]['Hello',[1,2],'Python',99]>>>ls[::-1][99,'Python',[1,2],'Hello']列表的操作函数列表通用的操作函数操作函数描述len(ls)列表ls的元素个数(长度)min(ls)列表ls中的最小元素,元素类型可比较max(ls)列表ls中的最大元素,元素类型可比较list(x)将x转变成列表类型,x可以是字符串或字典类型sorted(ls)对列表ls进行排序,默认升序排序。不会改变原列表的顺序sum(ls)列表ls中元素求和列表通用的操作函数>>>ls=[1,3,4,2,5]>>>max(ls)5>>>sum(ls)15>>>sorted(ls)[1,2,3,4,5]>>>sorted(ls,reverse=True)[5,4,3,2,1]>>>ls==['Hello',[1,2],'Python',99]>>>len(ls)4>>>x="Python">>>ls=list(x)>>>ls['P','y','t','h','o','n']>>>列表的操作方法列表的操作方法使用语法形式:<列表名>.<方法名称>(<方法参数>)方法描述ls.append(x)在列表ls最后增加一个元素xls.insert(i,x)在列表ls第i位置插入元素xls.clear()删除ls中所有元素ls.pop(i)将列表ls中第i项元素取出并删除该元素ls.remove(x)将列表中出现的第一个元素x删除ls.reverse()列表ls中元素反转ls.copy()生成一个新列表,复制ls中所有元素ls.index(x)在ls中检索元素x首次出现的下标ls.sort()列表ls中元素排序,默认升序reverse=False。ls.count(x)统计列表ls中元素x出现的次数列表元素的追加ls.append(x)在列表ls最后增加一个元素x>>>ls=['Hello',[1,2],'Python',99]>>>ls.append(45)>>>ls['Hello',[1,2],'Python',99,45]>>>ls.append([3,4])>>>ls['Hello',[1,2],'Python',99,45,[3,4]]>>>列表元素的扩展ls.extend(x),将列表x元素的值,扩展到列表ls中,相当于列表的合并>>>ls=['Hello',[1,2],'Python',99]>>>ls.extend([3,4])>>>ls['Hello',[1,2],'Python',99,3,4]>>>列表元素的插入ls.insert(i,x)在列表ls中序号i位置上增加元素x>>>ls=['Hello',[1,2],'Python',99]>>>ls.insert(1,'Love')>>>ls['Hello','Love',[1,2],'Python',99]>>>列表元素的删除ls.remove(x)将删除列表ls中第一个出现的x元素>>>ls=['Hello','Love',[1,2],'Python',99]>>>ls.remove("Love")>>>ls['Hello',[1,2],'Python',99]>>>列表元素的取出并删除ls.pop(i)将返回列表ls中第i位元素,并将该元素从列表中删除;缺省i,则删除最后一个元素>>>ls=['Hello',[1,2],'Python',99]>>>ls.pop(1)[1,2]>>>ls['Hello','Python',99]>>>>>>ls=['Hello','Python',99]>>>ls.pop()99>>>ls['Hello','Python']>>>列表的清空ls.clear()将列表ls的所有元素删除,清空列表>>>ls=['Hello',[1,2],'Python',99]>>>ls.clear()>>>ls[]列表元素的反转ls.reverse()将列表ls中元素进行逆序反转。>>>ls=['Hello',[1,2],'Python',99]>>>ls.reverse()>>>ls[99,'Python',[1,2],'Hello']列表元素的排序ls.sort()将列表ls中元素进行排序,默认升序。排序后的列表,覆盖原列表>>>ls=[1,3,4,2,5]>>>ls.sort()>>>ls[1,2,3,4,5]>>>ls=[1,3,4,2,5]>>>ls.sort(reverse=True)>>>ls[5,4,3,2,1]列表的复制若只是简单的赋值语句,是无法实现列表的复制的>>>ls=['Hello',[1,2],'Python',99]>>>lt=ls>>>lt['Hello',[1,2],'Python',99]>>>ls[0]="hi">>>ls['hi',[1,2],'Python',99]>>>lt['hi',[1,2],'Python',99]>>>['Hello',[1,2],'Python',99]ls引用对象lt列表的复制若只是简单的赋值语句,是无法实现列表的复制的>>>ls=['Hello',[1,2],'Python',99]>>>lt=ls>>>lt['Hello',[1,2],'Python',99]>>>ls[0]="hi">>>ls['hi',[1,2],'Python',99]>>>lt['hi',[1,2],'Python',99]>>>[‘Hi',[1,2],'Python',99]ls引用对象lt列表元素的复制ls.copy()将列表ls中元素进行复制,返回新列表>>>ls=['Hello',[1,2],'Python',99]>>>lt=ls.copy()>>>lt['Hello',[1,2],'Python',99]>>>ls[0]="Hi">>>ls['Hi',[1,2],'Python',99]>>>lt['Hello',[1,2],'Python',99]>>>['Hello',[1,2],'Python',99]ls引用对象['Hello',[1,2],'Python',99]lt引用新对象列表元素的复制ls.copy()将列表ls中元素进行复制,返回新列表>>>ls=['Hello',[1,2],'Python',99]>>>lt=ls.copy()>>>lt['Hello',[1,2],'Python',99]>>>ls[0]="Hi">>>ls['Hi',[1,2],'Python',99]>>>lt['Hello',[1,2],'Python',99]>>>[‘Hi',[1,2],'Python',99]ls引用对象['Hello',[1,2],'Python',99]lt引用新对象列表元素的索引ls.index(x)在列表ls中检索元素x第一次出现的序号>>>ls=['Hello',[1,2],'Python',99]>>>ls.index(99)3列表元素的统计ls.count(x)在列表ls中统计元素x出现的次数。>>>ls=['Hello',[1,2],99,'Python',99]>>>ls.count(99)2列表的其他操作列表元素的合并可以使用+号,将两个列表合并,增加多个元素。>>>ls=["Hello","Python"]>>>lt=[1,2,3]>>>ls=ls+lt>>>ls['Hello','Python',1,2,3]>>>del保留字,删除列表内容使用Python保留字del对列表元素或片段进行删除,使用方法如下:del<列表名>[<索引序号>]或del<列表名>[<索引起始>:<索引结束>]>>>ls=['Hello',[1,2],'Python',99]>>>dells[0]>>>ls[[1,2],'Python',99]>>>ls=['Hello',[1,2],'Python',99]>>>dells[1:3]>>>ls['Hello',99]>>>列表——

实例解析列表——实例解析编程生成一个1~99数字的列表,输入一个2-9之间的正整数,从列表上删除这个数的倍数或者数位上包含这个数字的数,并输出列表。问题分析:如何生成1~99数字的列表?遍历列表,如何查找指定数的倍数或数位上包含指定数的数?如何删除满足条件的数?列表——实例解析实现方法:方法1:使用列表的append()方法

ls=[]foriinrange(1,100):ls.append(i)方法2:使用list()内建函数与range()函数实现

ls=list(range(1,100))方法3:直接给列表赋值

ls=[iforiinrange(1,100)]更多…如何生成1~99数字的列表?列表——实例解析实现方法:方法1:综合使用算术运算符foriinls:ifi%eval(x)==0ori//10==eval(x)ori%10==eval(x):方法2:使用字符串的相关操作foriinls:ifi%eval(x)==0orxinstr(i):

更多…遍历列表,如何查找指定数x的倍数或数位上包含指定数x的数?x=input(“输入指定的数:”)列表——实例解析实现方法:方法1:使用remove()方法ls.remove(i)方法2:借助于新的列表lt,把不符合删除条件的数据暂存到lt中。lt=[]foriinls:ifnot(i%eval(x)==0orxinstr(i)):lt.append(i)ls=lt.copy()更多…如何删除满足条件的数?列表——实例解析运行效果辨析方法1:使用remove()方法,出现数据未删除干净。方法2:借助于新的列表lt,成功删除满足条件的数据。列表——实例解析运行效果辨析方法1:使用remove()方法,出现数据未删除干净。由于remove()删除数据时,后续数字会填充到原位置,导致遍历遗漏。改进方法:逆序遍历列表。foriinls[::-1]:ifi%eval(x)==0orxinstr(i):ls.remove(i)列表——实例解析编程生成一个1~99数字的列表,输入一个2-9之间的正整数,从列表上删除这个数的倍数或者数位上包含这个数字的数,并输出列表。较为简洁程序代码:12345ls=list(range(1,100))x=input("输入指定的数字:")foriinls[::-1]:ifi%eval(x)==0orxinstr(i):ls.remove(i)print(ls)6列表——

应用实例约瑟夫环背后的故事约瑟夫环问题41个人排成一个圆圈,从第1个人开始报数,报数到3,该人就必须出列,然后再由下一个重新报数,依次重复,直到剩下约瑟夫和他的朋友为止。输出依次出列的人的编号,以及约瑟夫和他的朋友的编号。约瑟夫环问题问题焦点:如何实现满足条件的元素出列?如何依次考察后续元素,实现列表的“环状”处理?求解思路:首先生成一个列表ls,存放41个人的编号。约瑟夫环问题循环处理:用count作为报数器,报到3数字的,将列表元素值置为0,表示该元素出列。通过元素下标的计算,实现列表“环状”处理。或者,用index作为元素的索引,采用del操作,让列表元素出列。通过元素索引的计算,实现列表“环状”处理。或者,借助另一个列表,结合pop()方法,让列表元素出列。通过列表的extend()方法,实现列表的“队列化”处理。约瑟夫环问题解决方案1用count作为报数器,报到3数字的,将列表元素值置为0,表示该元素出列。ls=list(range(1,42))count=0sum=41i=0print("依次出列的人员编号是:")whileTrue:ifsum<3:breakifcount<3andls[i]!=0:count=count+1ifcount==3:#元素出列

print(ls[i],end="")ls[i]=0count=0sum=sum-1i=(i+1)%41#列表“环状”处理print("\n幸存者编号是:")foriinls:ifi!=0:print(i,end="")约瑟夫环问题解决方案2或者,用index作为元素的索引,采用del操作,让列表元素出列。ls=list(range(1,42))index=2print("依次出列的人员编号是:")foriinrange(39):print(ls[index],end="")dells[index]#元素出列

index=(index+2)%len(ls)#列表“环状”处理print("\n幸存者编号是:")print(ls)约瑟夫环问题解决方案3或者,借助另一个列表,结合pop()方法,让列表元素出列。ls=list(range(1,42))print("依次出列的人员编号是:")whileTrue:iflen(ls)<3:breakprint(ls[2],end="")ls.pop(2)#元素出列

lt=ls[0:2]ls.pop(0)ls.pop(0)ls.extend(lt)#列表“队列化”处理print("\n幸存者编号是:")print(ls)元组类型创建元组元组(tuple)是Python的重要序列结构,所有的元素放在圆括号()中,但元素不可改变赋值=方式>>>tup1=('Hello',[1,2],'Python',99)>>>tup1('Hello',[1,2],'Python',99)>>>tup3=(3,)>>>tup3(3,)>>>tup2=tuple("hello")>>>tup2('h','e','l','l','o')内建函数tuple()读取元组使用索引可以读取元组的元素,中括号作为索引操作符。形式如:元组名[索引]元组元素值不允许修改>>>tup=('Hello',[1,2],'Python',99)>>>tup[1][1,2]>>>tup[1]=[3,4]Traceback(mostrecentcalllast):File"<pyshell#2>",line1,in<module>tup[1]=[3,4]TypeError:'tuple'objectdoesnotsupportitemassignment>>>元组与列表的区别对元组的操作函数和操作方法,与列表相似。元组有不可修改的特性。元组的主要运算有合并、遍历、求最小值、最大值等操作方法。用于对列表的排序、添加等方法,不适用于元组。元组是列表数据的一种补充。参数传递,可以设置为元组类型。字符串类型字符串的创建字符串(str)是字符的有序集合,所有的字符放在单引号’’或双引号””或三引号’’’‘’’中赋值=方式>>>str1="Hello">>>str1'Hello'转义字符python用\开头的转义字符表示特殊字符。>>>print("Hello\nWorld")HelloWorld>>>print("\123")S>>>print("Isay:\"Yes!\"")Isay:"Yes!"字符形式含义\n表示换行\t制表符\b退格\\反斜杠\\’单引号\”双引号\ddd1-3位八进制数代表的字符\xhh1-2位八进制数代表的字符字符串的索引使用索引读取字符串的一个元素,中括号作为索引操作符,形式如:字符串名[索引]>>>str='ProgramPython'>>>str[-1]'n'字符串切片切片获取字符串从N到M(不包含M)的片段,切片使用方式:>>>str='ProgramPython'>>>str[8:]'Python'>>>str[0::2]'PormPto'>>><字符串>[N:M:K]字符串的连接、重复通过运算符+,实现字符串的连接>>>str1="Hello">>>str2='ProgramPython'>>>str=str1+str2>>>str'HelloProgramPython'>>>通过运算符*,实现字符串的重复>>>str="Hello">>>str*3'HelloHelloHello'>>>字符串的关系运算、成员运算通过关系运算符,实现字符串的比较>>>str1="Hello">>>str2="Python">>>str1>str2False>>>str1==str2False>>>str1<str2True通过成员运算符,判断字符串是否属于另一个字符串>>>str1="He">>>str2="Hello">>>str1instr2True字符串处理函数常用的字符串处理函数>>>len("IlovePython")13>>>chr(65)'A'>>>ord('a')97函数描述len(x)计算字符串x的长度str(x)返回x对应的字符串形式chr(x)返回Unicode编码x对应的单字符ord(x)返回单字符x表示的Unicode编码hex(x)返回整数x对应的十六进制数oct(x)返回整数x对应的八进制数>>>hex(100)'0x64'>>>oct(100)'0o144'>>>字符串的操作方法字符串操作方法,使用语法形式是:<字符串>.<方法名称>(<方法参数>)方法描述str.find(x[,start[,end]])定位子串x在str中第一次出现的位置str.replace(old,new)用字符串new,代替str中的oldstr.split([sep])以sep为分隔符,把str分隔成一个列表sep.join(seq)将序列seq中的元素用连接符sep连接起来str.count(substr[,start[,end]])统计str中子串substr的个数str.lower()将str全部改为小写str.upper()将str全部改为大写str.strip(chars)去掉str两端chars字符子串的查找str.find(substr[,start[,end]])查找子串substr在str中区间[start,end)上第一次出现的位置;查找不到,返回-1>>>s1="abca">>>s1.find('a')0>>>s1.find('a',1)3>>>子串的统计str.count(substr[,start[,end]])统计子串substr在str中区间[start,end)上出现的次数>>>s1="abcabc">>>s1.count("bc")2>>>子串的替换str.replace(old,new),用字符串new,代替str中的old>>>s1="helloprogram">>>s1.replace("program","python")'hellopython'字符串的分割str.split([sep]),以sep为分隔符,把str分割成一个列表>>>s1="blueredyellow">>>s1.split("")['blue','red','yellow']>>>字符串的连接sep.join(seq),将序列seq中的元素用连接符sep连接起来>>>ls=['blue','red','yellow']>>>",".join(ls)'blue,red,yellow'>>>字符的移除str.strip(chars),将字符串str两端指定的字符chars移除>>>s1="aaabbcdea">>>s1.strip('a')'bbcde'>>>str.lstrip(chars),str.rstrip(chars),分别将字符串左端或右端指定的字符chars移除实例解析:统计单词个数统计单词个数输入一行英文文字,统计其中单词的个数。例如,Ilovepython.Andyou?问题分析:为去除杂乱的标点符号,如何对英文字符串进行清洗?如何将一个个英文单词,从字符串中分离出来?如何统计单词的个数?统计单词个数例如,s=“Ilovepython.Andyou?”实现方法:遍历字符串s,将特殊字符替换为空字符串forchins:ifchin"~!@#$%^&*()_+|}{:\"<>?;',./":s=s.replace(ch,"")如何对英文字符串进行清洗?去除标点符号?统计单词个数例如,s=“IlovepythonAndyou”实现方法:采用split()方法,将字符串以空格分割,形成列表

ls=s.split()如何将一个个英文单词,从字符串中分离出来?统计单词个数例如,ls=['I','love','Python','And','you']实现方法:采用len()函数,计算列表的长度并输出

print(len(ls))如何统计单词的个数?统计单词个数12345s=input("输入一行文字:")forchins:ifchin"~!@#$%^&*()_+|}{:\"<>?;',./":s=s.replace(ch,"")s=s.strip()ls=s.split("")print("单词个数:",len(ls))67输入一行文字:Ilovepython.Andyou?单词个数:5>>>集合类型集合集合1集合2交集集合类型集合是无序、不重复的数据组合,用花括号{}表示。集合类型,类似于数学中的集合,可以进行并、交、差等运算。集合的创建赋值=方式使用内建函数set()>>>s1={1,2,3,4,3,6,6}>>>s1{1,2,3,4,6}>>>s2=set("hello")>>>s2{'l','o','h','e'}>>>集合的运算集合类型有:并(|)、交(&)、差(-)、补(^)4种运算,操作逻辑与数学定义相同。操作符的运算描述S|T返回一个新集合,包括集合S和T中所有元素S&T返回一个新集合,包括同时在集合S和T中的元素S–T返回一个新集合,包括在集合S中但不在集合T中的元素S^T返回一个新集合,包括集合S和T中非共同元素S<=T或S<T判断S是否是T的子集S>=T或S>T判断S是否是T的超集集合的运算>>>A={1,2,3,4,5}>>>B={4,5,6,7,8}>>>A|B{1,2,3,4,5,6,7,8}>>>A&B{4,5}>>>A-B{1,2,3}>>>A^B{1,2,3,6,7,8}>>>A>=BFalse>>>A<BFalse>>>集合的操作集合常用的操作函数及方法函数及方法描述S.add(x)将元素x增加到集合SS.remove(x)删除集合S中的元素xS.clear()清空S中所有数据项len(S)返回集合S中元素的个数xinS如果x是S的元素,返回True,否则返回FalsexnotinS如果x不是S的元素,返回True,否则返回FalsedelS删除集合S集合的操作>>>s={1,2,3,4,5}>>>s.add(6)>>>s{1,2,3,4,5,6}>>>s.remove(6)>>>s{1,2,3,4,5}>>>len(s)5>>>6insFalse>>>6notinsTrue>>>s.clear()>>>sset()>>>dels>>>sTraceback(mostrecentcalllast):File"<pyshell#29>",line1,in<module>sNameError:name's'isnotdefined集合1集合2交集利用集合去除重复元素将列表内容去除重复元素。例如ls=[‘p','p',‘t',‘t',123]问题分析:第一步:将其他类型转换为集合类型。第二步:将集合类型转换为原类型。>>>ls=['p','p',‘t',‘t',123]>>>s=set(ls)>>>ls=list(s)>>>ls[123,'p',‘t']>>>字典类型字典类型字典是Python语言中唯一的映射类型。映射类型是“键-值”数据项的组合,每个元素是一个键值对,表示为(key,value)。键值对的基本思想是将“值”信息关联一个“键”信息,进而通过键信息查找对应值信息,这个过程叫映射。定义字典时,键和值用:分隔。键不能重复,值可以重复。字典的定义字典使用大括号{}建立,每个元素是一个键值对,格式如下:

{<键1>:<值1>,<键2>:<值2>,…,<键n>:<值n>}每个键值对用冒号:分隔,每对之间用逗号分隔。{'TOM':95,'JERRY':87,'LUCY':64}字典的创建赋值=方式使用使用内建函数dict()>>>d1={‘TOM’:95,‘JERRY’:87,‘LUCY’:64}#赋值方式创建>>>d1{'LUCY':64,'TOM':95,'JERRY':87}>>>d2=dict(ROSE=90,JACK=76)#关键字形式创建>>>d2{'JACK':76,'ROSE':90}>>>d3=dict([('LUCY',64),('TOM',95),('JERRY',87)])>>>d3#元组列表的方式创建{'JERRY':87,'TOM':95,'LUCY':64}>>>访问字典元素的值要访问字典中某个元素的值,可以通过键来索引字典中键值对的索引模式如下,采用中括号格式:>>>d1={'TOM':95,'JERRY':87,'LUCY':64}>>>d1['JERRY']87>>><值>=<字典变量>[<键>]字典的元素的修改和增加利用索引和赋值(=)配合,可以对字典进行元素的修改或增加。>>>d1={'TOM':95,'JERRY':87,'LUCY':64}>>>d1[‘TOM’]=99#字典元素的修改>>>d1{'LUCY':64,'JERRY':87,'TOM':99}>>>d1[‘ROSE’]=78#字典元素的增加>>>d1{'ROSE':78,'LUCY':64,'JERRY':87,'TOM':99}>>>字典类型的操作字典的操作方法字典类型操作方法,使用语法形式是:<字典变量>.<方法名称>(<方法参数>)操作方法描述d.keys()返回字典所有键的列表d.values()返回字典所有值的列表d.items()返回字典所有键值对的列表d.get(key,default)若键存在,返回字典中键对应的值;否则返回default值d.pop(key,default)若键存在,则删除并返回相应值;否则返回default值d.popitem()随机从字典中删除一个键值对,以元组(key,value)形式返回d.clear()删除字典所有的键值对返回字典的键、值、键值对列表d.keys()、d.values()、d.items()这三个方法分别返回字典中的所有键、值、键值对列表>>>d1={'TOM':95,'JERRY':87,'LUCY':64}>>>d1.keys()dict_keys(['LUCY','JERRY','TOM'])>>>d1.values()dict_values([64,87,95])>>>d1.items()dict_items([('LUCY',64),('JERRY',87),('TOM',95)])>>>以键查值d.get(key,default)根据键信息查找并返回值信息。如果key存在则返回相应值,否则返回默认值>>>d1={'TOM':95,'JERRY':87,'LUCY':64}>>>d1.get('JERRY'','不存在')87>>>d1.get('ROSE','不存在')'不存在'>>>查找并删除指定元素d.pop(key,default)根据指定的键,返回相应值的信息,并予以删除;否则返回default值>>>d1={'TOM':95,'JERRY':87,'LUCY':64}>>>d1.pop('JERRY','不存在'

温馨提示

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

评论

0/150

提交评论