《Python程序设计基础(第2版)》课件 04程序控制结构_第1页
《Python程序设计基础(第2版)》课件 04程序控制结构_第2页
《Python程序设计基础(第2版)》课件 04程序控制结构_第3页
《Python程序设计基础(第2版)》课件 04程序控制结构_第4页
《Python程序设计基础(第2版)》课件 04程序控制结构_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

Python程序设计基础第4章程序控制结构教师:XXX第4章

程序控制结构4.1顺序结构4.2选择结构4.3循环结构4.4异常处理结构4.1顺序结构计算机的程序流程通常由:顺序、选择、循环三种基本结构组成。程序设计语言并不提供专门的控制流语句来表达顺序控制结构,而用程序语句的自然排列(即从上到下、从左至右)顺序来表达。顺序结构的流程图如下图所示:4.1顺序结构【例1】设计一个程序从键盘读入圆的半径,计算圆周长和圆面积并输出。程序如下:pi=3.14159 #所有语句同级别,顶格对齐r=eval(input('输入圆的半径:'))#eval将字符串转浮点d=2*pi*rs=pi*r*rprint(f'd={d:.2f}')print(f's={s:.2f}')补充Python编码规范pep8

pep8代码规范官网说明/dev/peps/pep-0008//doraman/p/11623455.html分号:行尾不要加分号,也不要用分号将两条命令写在同一行。行长度:每行不超过80个字符。Python会将圆括号中的行隐式的连接起来,超长的一行可用圆括号括起来分为多行书写。括号:宁缺毋滥的使用括号。缩进:用4个空格来缩进代码。空行:顶级定义之间空两行(例如类或函数定义),类内部的方法定义之间空一行。空格:按照pep8规范使用空格。赋值号两侧应有空格,括号内不要有空格,不要在逗号/分号/冒号前面加空格。参数列表,索引或切片的左括号前不应加空格,间隔多个参数的逗号后加1个空格。在二元运算符两边各空一格。注释和代码最少隔2个空格。

简单示例见下页。编程时提倡遵循pep8(PythonEnhancementProposals,Python改进提案)代码规范,这样不同程序员编写的代码可以保持最大程度的相似性。易于阅读,易于交流。补充autopep8autopep8用于自动调整代码格式,使代码符合pep8规范。

spyder中,执行"source"菜单下面的"Autopep8"子菜单可自动调整代码格式,如下图。#不好的格式x=1;y=2*xprint(x,y)z=max(1,2,3)#调整后符合pep8的格式x=1y=2*xprint(x,y)z=max(1,2,3)4.2选择结构4.2.1二分支选择结构二分支选择结构执行时先计算条件表达式1的值以判断其真假。若为真则执行语句块1,若为假则执行语句块2。选择结构(也称分支结构)包含条件表达式和可选择执行的语句块。if条件表达式1:

语句块1else:

语句块2注:if和else要对齐,行末加冒号,语句块1和2要缩进。4.2选择结构if语句示例a,b=eval(input('输入两个数:'))ifa>=b:

print('a大于等于b')else:print('a小于b')注:1.输入时两个数一定要逗号分隔,eval将输入字符串转换为一个元组,然后a,b=元组,自动拆包赋值给两个变量。2.下级语句要缩进,不要混用空格和Tab键产生缩进(错误如下图)。网上粘贴的代码可能存在此问题,可删除所有空白,重新缩进。4.2选择结构if语句示例s=[1,2,3]ifs:#非空列表可视为True print('不是空列表')else: print('空列表')注:不需要写为ifs!=[]:4.2选择结构4.2.2单分支选择结构当条件表达式1的逻辑值为真时,计算机执行语句块1,否则计算机将跳过语句块1而执行后续的语句。if条件表达式1:

语句块14.2选择结构单分支if语句示例:下面程序的功能是将输入的两个数按从大到小的顺序输出。a,b=eval(input('输入两个数(逗号分隔):'))ifa<b: a,b=b,a#交换两个变量print(a,b)注:a,b=b,a#右边视为元组,元组自动拆包赋给左边两个变量4.2选择结构[例2]个人所得税规则:收入超出3000元需交个人所得税,税率为超出部分的5%,否则无需交税。写一个程序,输入收入值,计算并输出该交的所得税。income=float(input('输入一个收入值:'))tax=0.0ifincome>3000:over=income-3000tax=over*0.05print('您的收入超出标准:',over,'元。')print('应交个人所得税:',tax,'元。')4.2选择结构4.2.3多分支选择结构

if

表达式1:

语句块1elif

表达式2:

语句块2…elif

表达式n:

语句块nelse:

语句块n+14.2选择结构下面的代码是一个有三个分支的多分支选择结构程序段,它根据a和b的值输出不同的信息。a,b=eval(input("输入两个整数:"))ifa>b:print("a大于b")elifa<b: #elif不能写为elseif:print("a小于b")else:print("a等于b")4.2选择结构[例3]编写程序,实现下表的分段函数计算。x=eval(input('Pleaseinputx:'))ifx<0orx>=20:y=0elif0<=x<5:y=xelif5<=x<10:y=3*x-5elif10<=x<20:y=0.5*x-2print(f'x={x},y={y}')xyx<000<=x<5x5<=x<103x–510<=x<200.5x–220<=x04.2选择结构在python3.10版中针对多分支增加了一种新语法"match..case",可将上例改写如下。x=eval(input('Pleaseinputx:'))matchx:#需Python3.10版支持

casexifx<0orx>=20:y=0

casexif0<=x<5:y=xcasexif5<=x<10:y=3*x-5casexif10<=x<20:y=0.5*x-2print(f'x={x}y={y}')“match..case”类似C语言中的“switch..case”结构,但其提供了强大的模式匹配功能,可以更方便灵活地表达各分支的匹配情况。4.2选择结构4.2.4多分支(嵌套)选择结构

如果选择结构的语句块中包含选择结构,就形成了嵌套的选择结构。嵌套选择结构的一般形式如下:if条件表达式1:

if

条件表达式2:

语句块1

else:

语句块2

语句块3else:

if

条件表达式3:

语句块4

else:

语句块5

语句块6嵌套选择结构可能形成多层次的缩进,因此要注意确定不同层次语句块的缩进深度。4.2选择结构【例4】编写程序:根据输入的三个边长(整型),判断能否构成三角形。若能构成等边三角形则输出“等边三角形”,若能构成等腰三角形则输出“等腰三角形”,若构成一般三角形则输出“一般三角形”,若不能构成三角形,则输出“非三角形”。a,b,c=eval(input('输入边长a,b,c='))ifa+b<cora+c<borb+c<a:print('非三角形')else:ifa==bandb==c:print('等边三角形')elifa==bora==corb==c:print('等腰三角形')else:print('一般三角形')4.2选择结构编程练习1.输入三个整数,按降序输出。要求:不能用列表排序完成,练习使用基本的if语句进行比较。2.生成10个随机分数(范围在[40,100]),计算平均分。若平均分>=90,输出'优秀';平均分>=75,输出'良好';平均分>=60,输出'中等';平均分<60输出'不及格'参考代码见下页4.2选择结构编程练习#第2题fromrandomimportrandintlst=[randint(40,100)for_inrange(10)]avg=sum(lst)/len(lst)ifavg>=90:s='优秀'elifavg>=75:s='良好'elifavg>=60:s='中等'else:s='不及格'print(f'平均分:{avg:.1f},{s}')#第1题a,b,c=eval(input('输入三个数:'))ifa<b:a,b=b,aifa<c:a,c=c,aifb<c:b,c=c,bprint('降序:',a,b,c)4.3循环结构循环是指多次重复执行某个代码段。循环有三个要素:循环变量、循环体和循环终止条件。循环结构的执行过程如下:先判断条件表达式1,若其逻辑值为真则执行语句块1,然后继续判断……若条件表达式的逻辑值为假则退出循环。Python有while和for两种循环语句。4.3循环结构4.3.1while循环while条件表达式:

语句块1[else:

语句块2]注:else子句是可选的,较少使用。#求10以内奇数的和i=1s=0 whilei<=10: #冒号s=s+i #缩进i=i+2 print("sum=",s) #此语句应在while循环外面4.3循环结构【例5】编写循环程序,从键盘每次输入单个整数,存入列表中,直至输入0结束,列表中不存储0。lst=[]x=-1#先预设一个不等于0的数whilex:x=int(input('x='))ifx:lst.append(x)print(lst)上题略显繁琐,可用Python3.8新增的海象运算符“:=”简化如下。lst=[]whilex:=int(input('x=')):lst.append(x)print(lst)海象运算符“:=”因形如海象的长牙而得名,其特点是完成变量赋值的同时还会返回变量值,以方便程序做后续的判断。4.3循环结构【例6】编程,判断两个列表是否是循环列表。例如有4个列表:lst1=[3,4,7,8],lst2=[4,7,8,3],lst3=[7,8,3,4]和lst4=[3,8,4,7]。则lst1,lst2,lst3彼此互为循环列表,而lst4和前三个列表都不是循环列表的关系。lst1=[3,4,7,8]lst2=[4,7,8,3]iflen(lst1)!=len(lst2):print('不是循环列表')else:i=0whilei<len(lst1):t=lst1[i:]+lst1[:i]#依次将后i项移到前面ift==lst2:break #是循环列表i+=1ifi<len(lst1):print('是循环列表')else:print('不是循环列表')4.3循环结构4.3.2for循环(最常用)适用于需要对组合数据或迭代对象进行遍历的情况。格式如下:for变量in组合数据或迭代对象:

语句块1迭代对象:/eastonliu/p/9156418.htmls=0#求1到10的累加和forxinrange(1,11):s=s+xprint('sum=',s)注:循环中的变量x无需事先定义,可用任何变量名。如x不实际使用,习惯用_代替。4.3循环结构下面程序段的功能是输入一个字符串,然后遍历字符串。若字符是大写字母则转换为小写字母输出,若是其他字符则直接输出。st=input('InputaString:')forsinst:if'A'<=s<='Z':print(s.lower(),end='')else:print(s,end='')注:while遍历一般要借助下标,for遍历通常不需下标。4.3循环结构下面程序的功能是生成一个含20个随机整数的元组,整数范围为[1,100],遍历元组并输出其中的偶数及对应的索引。fromrandomimportrandinta=tuple((randint(1,100)foriinrange(20)))#生成元组fori,vinenumerate(a):#i是索引ifv%2==0:print(i,'-',v)enumerate()函数返回一个由"(索引,值)"组成的迭代对象。4.3循环结构4.3.3

break语句和continue语句这两条语句只能在循环内使用。break语句的功能是结束循环,继续执行循环结构后续的语句。下面程序段的功能是从成绩表score中查找第一个优秀学生(达到90分),并输出他的学号和成绩。fromrandomimportrandintscore=[randint(1,100)forxinrange(50)]#随机成绩fori,sinenumerate(score):ifs>=90:print("第一个优秀学生是{},他的成绩为{}".format(i,s))

break #找到第一个后,即跳出循环4.3循环结构continue语句是结束本次循环,跳过循环体中本次循环还未执行的剩余语句,重新判断循环条件以确定是否开启下一轮循环。下面程序的功能是输入一个数,若该数是负数则执行continue语句而跳过它后面的语句,即不输出该负数。若输入的是非负数则不会执行continue语句而执行输出语句,将输出该非负数。t=1whilet<=5:#输入5个>=0的数才能结束a=eval(input('Inputanumber:'))ifa<0:

continue

#负数会跳过,不会输出print(a)t=t+14.3循环结构【例9】斐波那契数列f(n)的定义为:f(1)=1,f(2)=1,f(n)=f(n-1)+f(n-2)。编程,输入正整数n,求数列中大于n的最小一个数,并输出该数。n=eval(input("Inputanumber:"))a,b,c=1,1,1whileTrue:ifc<=n:c=a+ba,b=b,celse:breakprint("c=",c)4.3循环结构4.3.4

循环的嵌套while语句和for语句构成的循环可以互相嵌套4.3循环结构循环的嵌套中,内层循环的执行次数可能会受到外层循环的控制。foriinrange(10):#外forjinrange(i):#内print('*',end='')#不换行print()#在内层循环后换行4.3循环结构双重循环编程示例:输出九九乘法表。forrowinrange(1,10):#外

forcolinrange(1,row+1):#内

print(f'{col}*{row}={col*row:<4}',end='')#<4左对齐4位宽

print()#内层循环结束后换行4.4异常处理结构异常处理(又称错误处理)是为防止错误引发程序崩溃而采取的处理措施。Python异常处理结构一般形式如下:try:

语句块1exceptException:

语句块2[else:

语句块3][finally:

语句块4]执行流程:先执行语句块1;若块1出现异常,则中断块1而转去执行块2;若块1未出现异常且有else子句,则执行块3。若有finally子句,则无论块1有无异常都会执行块4。try:s=60num=int(input('输入人数:'))print('平均数:',s/num)f=open('my.txt','r')exceptArithmeticErrorase:print('算术错误',e)exceptValueErrorase:print('ValueError错误',e)exceptExceptionase:print('错误',e)else:print('没错才执行')finally:print('有无错误都会执行')print('程序结束')4.4异常处理结构下面程序段是将字符串列表values中可以转换成整数的字符串筛选出来。函数isInt在try语句块中调用函数int尝试将字符串转换成整数,如能转换则返回True,否则产生异常并由except语句捕获,返

温馨提示

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

评论

0/150

提交评论