38569-00陆朝俊-pythonCh3-1_第1页
38569-00陆朝俊-pythonCh3-1_第2页
38569-00陆朝俊-pythonCh3-1_第3页
38569-00陆朝俊-pythonCh3-1_第4页
38569-00陆朝俊-pythonCh3-1_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

数据处理的流程控制,分支控制结构,LuChaojun,SJTU,2,LuChaojun,SJTU,2,2,流程控制,数据是被加工处理的原材料,而处理过程要用流程控制结构来描述类比:烹调=食材+烹制过程烹制过程:先炒再煮;如果淡了则加盐;反复翻炒5分钟;.常见的流程控制结构顺序,跳转,分支,循环,子程序等好的流程:结构清晰,易理解,易验证,易维护,LuChaojun,SJTU,3,LuChaojun,SJTU,3,3,顺序控制结构,按语句的自然先后顺序执行,LuChaojun,SJTU,4,LuChaojun,SJTU,4,4,编程实例,温度转换程序eg3_1.py:华氏转换成摄氏流程图:用标准化的图形符号来表示程序步骤流程图中的步骤可以是不同抽象级的,LuChaojun,SJTU,5,LuChaojun,SJTU,5,5,分支控制结构(1),可以选择不同的执行路径单分支结构if:布尔表达式:语句序列.左边需要缩进一些空格.语义:计算的真假.若为真,则执行,并把控制转向下一条语句;若为假,则直接把控制转向下一条语句.,LuChaojun,SJTU,6,LuChaojun,SJTU,6,布尔表达式(1),是一个布尔表达式.结果为布尔值True或False简单布尔表达式:关系运算:=,!=数值比较字符串比较:按字典序.字符序由编码(ASCII等)决定.如:大写字母在小写字母前.列表,元组的比较,LuChaojun,SJTU,布尔表达式(2),复杂布尔表达式:布尔运算:and,or,notandornot,LuChaojun,SJTU,7,LuChaojun,SJTU,8,8,and的定义,and表示“并且”:PandQ为真iffP和Q都为真真值表见右例(32)and(21)True(32)and(23)False,LuChaojun,SJTU,9,9,or的定义,or表示“或者”:PorQ为假iffP和Q都为假真值表见右与日常用语中互斥的“或”不同!例(32)or(3(23)or(24)False,LuChaojun,SJTU,10,10,not的定义,not表示“否定”:notP为真iffP为假.真值表见右例not32Falsenotnot32True,布尔运算符的优先级,not最高,and次之,or最低Q:aornotbandc何意?A:aor(notb)andc)最好使用括号!,LuChaojun,SJTU,11,例:一局乒乓球比赛的结束,双方任何人先得11分a=11orb=11更准确的:一方至少要多2分才胜(a=11anda-b=2)or(b=11andb-a=2)或者写成(a=11orb=11)andabs(a-b)=2,LuChaojun,SJTU,12,LuChaojun,SJTU,13,LuChaojun,SJTU,13,13,编程实例,温度转换程序:eg3_2.py增加热浪告警功能f=input(TemperatureindegreesFarenheit:)c=(f32)*5.0/9printTemperatureindegreesCelsius:,cifc35:printWarning:HeatWave!,LuChaojun,SJTU,14,LuChaojun,SJTU,14,14,编程实例,温度转换程序:eg3_3.py增加热浪和寒潮告警功能f=input(TemperatureindegreesFarenheit:)c=(f32)*5.0/9printTemperatureindegreesCelsius:,cifc=35:printWarning:HeatWave!ifc=35:printWarning:HeatWave!else:printWarning:ColdWave!,LuChaojun,SJTU,15,多路分支:嵌套if-else,if语句可以嵌套多重嵌套不好难读代码松散ifc=35:printWarning:HeatWave!else:ifc=35:printWarning:HeatWave!elifc=0:discRoot=math.sqrt(discrim)root1=(-b+discRoot)/(2*a)root2=(-b-discRoot)/(2*a)printThesolutionsare:,root1,root2else:printTheequationhasnorealroots!,LuChaojun,SJTU,22,提高健壮性:利用调用返回码,程序中调用其他代码(如函数),那些代码可利用返回值作为执行正常与否的标志码.调用者调用后通过检测返回值来判断是否正常例如,为了解决sqrt函数的问题,设计robustSqrt():defrobustSqrt(x):ifxa=Helloprinta5Traceback(mostrecentcalllast):File,line1,inIndexError:stringindexoutofrange,LuChaojun,SJTU,26,程序员自定义异常处理,Python提供try-except语句,可用来自定义异常处理代码.a=Hellotry:printa5exceptIndexError:printIndexwrong!Indexwrong!,LuChaojun,SJTU,27,异常处理机制的优点,既保持核心算法的清晰,又能提高程序的健壮性.,LuChaojun,SJTU,28,算法清晰但不健壮:doStep1()doStep2()doStep3(),健壮但算法不清晰:ifdoStep1()=ERROR:错误处理代码1elifdoStep2()=ERROR:错误处理代码2elifdoStep3()=ERROR:错误处理代码3,算法清晰且健壮:try:doStep1()doStep2()doStep3()exceptERROR:错误处理代码,异常处理语句,可以对不同类型的错误分别指定处理代码try:except:.except:except:,LuChaojun,SJTU,29,编程实例,解方程程序的改进:用异常处理语句来捕获math.sqrt的溢出错误.(eg3_7.py)importmathtry:a,b,c=input(Enter(a,b,c):)discRoot=math.sqrt(b*b-4*a*c)root1=(-b+discRoot)/(2*a)root2=(-b-discRoot)/(2*a)printThesolut

温馨提示

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

评论

0/150

提交评论