python程序的控制结构ppt课件

上传人:仙*** 文档编号:187227395 上传时间:2023-02-12 格式:PPT 页数:64 大小:1.51MB
收藏 版权申诉 举报 下载
python程序的控制结构ppt课件_第1页
第1页 / 共64页
python程序的控制结构ppt课件_第2页
第2页 / 共64页
python程序的控制结构ppt课件_第3页
第3页 / 共64页
资源描述:

《python程序的控制结构ppt课件》由会员分享,可在线阅读,更多相关《python程序的控制结构ppt课件(64页珍藏版)》请在装配图网上搜索。

1、Python语言程序设计1第4章 程序的控制结构2程序的基本结构3程序的流程图程序流程图用一系列图形、流程线和文字说明描述程序的基本操作和控制流程,它是程序分析和过程描述的最基本方式。流程图的基本元素包括7种4程序的流程图程序流程图示例:由连接点程序流程图示例:由连接点A连接的一个程序连接的一个程序 5程序的基本结构 顺序结构是程序的基础,但单一的顺序结构不可能解决所有问题。程序由三种基本结构组成:n 顺序结构n 分支结构n 循环结构 这些基本结构都有一个入口和一个出口。任何程序都由这三种基本结构组合而成6程序的基本结构 顺序结构是程序按照线性顺序依次执行的一种运行方式,其中语句块1S1和语句

2、块S2表示一个或一组顺序执行的语句 7程序的基本结构分支结构是程序根据条件判断结果而选择不同向前执行路径的一种运行方式,包括单分支结构和二分支结构。由二分支结构会组合形成多分支结构 8程序的基本结构循环结构是程序根据条件判断结果向后反复执行的一种运行方式,根据循环体触发条件不同,包括条件循环和遍历循环结构9程序的基本结构实例对于一个计算问题,可以用IPO描述、流程图描述或者直接以Python代码方式描述 微实微实例例4.1:圆面:圆面积和周长的计算。积和周长的计算。输入输入:圆半径R处理处理:圆面积:S=*R*R圆周长:L=2*R输出输出:圆面积S、周长L 1234R=eval(input(请

3、输入圆半径请输入圆半径:)S=3.1415*R*RL=2*3.1415*R print(面积和周长面积和周长:,S,L)问题IPO描述 Python代码描述 10程序的基本结构实例微实例微实例4.2:实数绝对值的计算。:实数绝对值的计算。1234R=eval(input(输入实输入实数数:)if(R 0):R=-Rprint(绝对值绝对值,R)(a)问题IPO描述(b)流程图描述(c)Python代码描述 11程序的基本结构实例微实例微实例4.3:整数累加。:整数累加。输入:正整数R处理:S=1+2+3+R输出:输出S123456R=eval(input(请输入正请输入正整数整数:)i,S=0

4、,0while(i=R):S=S+ii=i+1print(累加求和累加求和,S)(a)问题IPO描述(b)流程图描述(c)Python代码描述 12程序的基本结构实例IPO描述主要用于区分程序的输入输出关系,重点在于结构划分,算法主要采用自然语言描述流程图描述侧重于描述算法的具体流程关系,流程图的结构化关系相比自然语言描述更进一步,有助于阐述算法的具体操作过程Python代码描述是最终的程序产出,最为细致。13程序的分支结构14单分支结构:if语句Python中if语句的语法格式如下:if :语句块 语句块是if条件满足后执行的一个或多个语句序列 语句块中语句通过与if所在行形成缩进表达包含关

5、系 if语句首先评估的结果值,如果结果为True,则执行语句块里的语句序列,然后控制转向程序的下一条语句。如果结果为False,语句块里的语句会被跳过。15布尔类型(bool)TrueFlasebool函数:bool(2)A=12type(A)数字非零为True字符串为True,空字符串为False 16关系运算符 if语中部分可以使用任何能够产生True或False的语句 形成判断条件最常见的方式是采用关系操作符 Python语言共有6个关系操作符 操作符数学符号操作符含义 小于=大于等于 大于=等于!=不等于17逻辑操作符(not and or)优先级是notandor 逻辑操作符and

6、和or 也称作短路操作符(short-circuitlogic):它们的参数从左向右解析,一旦结果可以确定就停止。例如,如果A 和C 为真而B 为假,A and B and C 不会解析C 3 and 4 ,4 and 3 3 or 4(3),4 or 3(4)18单分支结构:if语句if语句的控制流程图语句的控制流程图 if语句中语句块执行与否依赖于条件判断。但无论什么情况,控制都会转到if语句后与该语句同级别的下一条语句 19单分支结构:if语句微实例4.4:PM 2.5空气质量提醒(1)输入:接收外部输入PM2.5值处理:if PM2.5值=75,打印空气污染警告if 35=PM2.5值

7、 75,打印空气污染警告if PM2.5值 35,打印空气质量优,建议户外运动输出:打印空气质量提醒 微实例4.4m4.4PM25Warning.py 1234567PM=eval(input(请输入请输入PM2.5数值数值:)if 0=PM 35:print(空气优质,快去户外运动空气优质,快去户外运动!)if 35=PM 75:print(空气良好,适度户外活动!空气良好,适度户外活动!)if 75=PM:print(空气污染,请小心!空气污染,请小心!)20二分支结构:if-else语句Python中if-else语句用来形成二分支结构,语法格式如下:if :else:是在if条件满足后

8、执行的一个或多个语句序列 是if条件不满足后执行的语句序列 二分支语句用于区分的两种可能True或者False,分别形成执行路径21二分支结构:if-else语句微实例4.5:PM 2.5空气质量提醒(2)微实例4.5m4.5PM25Warning.py 12345PM=eval(input(请输入请输入PM2.5数值数值:)if PM=75:print(空气存在污染,请小心!空气存在污染,请小心!)else:print(空气没有污染,可以开展户外运动空气没有污染,可以开展户外运动!)22二分支结构:if-else语句二分支结构还有一种更简洁的表达方式,适合通过判断返回特定值,语法格式如下:i

9、f else 12PM=eval(input(请输入请输入PM2.5数值数值:)print(空气空气污染污染!.format(存在存在 if PM=75 else 没有没有)23二分支结构:if-else语句count=2count if count!=0 else 不存在不存在2count=0count if count!=0 else 不存在不存在不存在不存在ifelse的紧凑结构非常适合对特殊值处理的情况,如下:24多分支结构:if-elif-else语句Python的if-elif-else描述多分支结构,语句格式如下:if:elif:.else:25多分支结构:if-elif-els

10、e语句多分支结构是二分支结构的扩展,这种形式通常用于设置同一个判断条件的多条执行路径。Python依次评估寻找第一个结果为True的条件,执行该条件下的语句块,同时结束后跳过整个if-elif-else结构,执行后面的语句。如果没有任何条件成立,else下面的语句块被执行。else子句是可选的 26多分支结构:if-elif-else语句微实例4.4通过多条独立的if语句对同一个变量PM进行判断,这种情况更适合多分支结构,改造后的代码如下 1234567PM=eval(input(请输入请输入PM2.5数值数值:)if 0=PM 35:print(空气优质,快去户外运动空气优质,快去户外运动!

11、)elif 35=PM 75:print(空气良好,适度户外活动!空气良好,适度户外活动!)else:print(空气污染,请小心!空气污染,请小心!)27身体质量指数BMIBMI的定义如下:BMI=体重(kg)身高2(m2)例如,一个人身高1.75米、体重75公斤,他的BMI值为24.4928身体质量指数BMI分类国际BMI值(kg/m2)国内BMI值(kg/m2)偏瘦 18.5=30=28编写一个根据体重和身高计算BMI值的程序,并同时输出国际和国内的BMI指标建议值29身体质量指数BMI实例代码5.1e5.1CalBMI.py 123456789101112131415161718192

12、02122#e5.1CalBMI.pyheight,weight=eval(input(请输入身高请输入身高(米米)和体重和体重(公斤公斤)逗号隔开逗号隔开:)bmi=weight/pow(height,2)print(BMI数值为:数值为::.2f.format(bmi)wto,dom=,if bmi 18.5:#WTO标准标准 wto=偏瘦偏瘦elif bmi 25:#18.5=bmi 25 wto=正常正常elif bmi 30:#25=bmi 30 wto=偏胖偏胖else:wto=肥胖肥胖if bmi 18.5:#我国卫生部标准我国卫生部标准 dom=偏瘦偏瘦elif bmi 24:

13、#18.5=bmi 24 dom=正常正常elif bmi 28:#24=bmi 请输入身高(米)和体重(公斤)逗号隔开:1.75,75BMI数值为:24.49BMI指标为:国际正常,国内偏胖30实例代码5.2e5.2CalBMI.py 123456789101112131415161718#e5.2CalBMI.pyheight,weight=eval(input(请输入身高请输入身高(米米)和体重和体重(公斤公斤)逗号隔开逗号隔开:)bmi=weight/pow(height,2)print(BMI数值为:数值为::.2f.format(bmi)wto,dom=,if bmi 18.5:w

14、to,dom=偏瘦偏瘦,偏瘦偏瘦elif 18.5=bmi 24:wto,dom=正常正常,正常正常elif 24=bmi 25:wto,dom=正常正常,偏胖偏胖elif 25=bmi 28:wto,dom=偏胖偏胖,偏胖偏胖elif 28=bmi 30:wto,dom=偏胖偏胖,肥胖肥胖else:wto,dom=肥胖肥胖,肥胖肥胖print(BMI指标为指标为:国际国际0,国内国内1.format(wto,dom)31程序的循环结构32遍历循环:for语句遍历循环:根据循环执行次数的确定性,循环可以分为确定次数循环和非确定次数循环。确定次数循环指循环体对循环次数有明确的定义循环次数采用遍历

15、结构中元素个数来体现Python通过保留字for实现“遍历循环”:for in :33遍历循环:for语句遍历结构可以是字符串、文件、组合数据类型或range()函数:循环N次for i in range(N):遍历文件fi的每一行for line in fi:遍历字符串s for c in s:遍历列表ls for item in ls:遍历循环还有一种扩展模式,使用方法如下:for in :else:34遍历循环:for语句 当for循环正常执行之后,程序会继续执行else语句中内容。else语句只在循环正常执行之后才执行并结束,因此,可以在中放置判断循环执行情况的语句。12345for

16、s in BIT:print(循环进行中循环进行中:+s)else:s=循环正常结束循环正常结束print(s)循环进行中:B循环进行中:I循环进行中:T循环正常结束35无限循环:while语句无限循环:无限循环一直保持循环操作直到特定循环条件不被满足才结束,不需要提前知道确定循环次数。Python通过保留字while实现无限循环,使用方法如下:while :语句块36无限循环:while语句 无限循环也有一种使用保留字else的扩展模式:while :else:1234567s,idx=BIT,0while idx 循环进行中:B循环进行中:I循环进行中:T循环正常结束37循环保留字:bre

17、ak和continue 循环结构有两个辅助保留字:break和continue,它们用来辅助控制循环执行 break用来跳出最内层for或while循环,脱离该循环后程序从循环后代吗继续续执行 12345for s in BIT:for i in range(10):print(s,end=)if s=I:break BBBBBBBBBBITTTTTTTTTT其中,break语句跳出了最内层for循环,但仍然继续执行外层循环。每个break语句只有能力跳出当前层次循环 38循环保留字:break和continue continue用来结束当前当次循环,即跳出循环体中下面尚未执行的语句,但不跳出

18、当前循环。对于while循环,继续求解循环条件。而对于for循环,程序流程接着遍历循环列表 对比continue和break语句,如下 1234for s in PYTHON:if s=T:continue print(s,end=)1234for s in PYTHON:if s=T:break print(s,end=)PYHON PY39循环保留字:break和continuecontinue语句和break语句的区别是:continue语句只结束本次循环,而不终止整个循环的执行。break语句则是结束整个循环过程,不再判断执行循环的条件是否成立 1234for s in PYTHON:

19、if s=T:continue print(s,end=)1234for s in PYTHON:if s=T:break print(s,end=)PYHON PY40循环保留字:break和continue for循环和while循环中都存在一个else扩展用法。else中的语句块只在一种条件下执行,即for循环正常遍历了所有内容没有因为break或return而退出。continue保留字对else没有影响。看下面两个例子 123456for s in PYTHON:if s=T:continue print(s,end=)else:print(正常退出正常退出)123456for s

20、in PYTHON:if s=T:break print(s,end=)else:print(正常退出正常退出)PYHON正常退出 PY41random库的使用42random库概述 随机数在计算机应用中十分常见,Python内置的random库主要用于产生各种分布的伪随机数序列。random库采用梅森旋转算法(Mersenne twister)生成伪随机数序列,可用于除随机性要求更高的加解密算法外的大多数工程应用。使用random库主要目的是生成随机数,因此,读者只需要查阅该库的随机数生成函数,找到符合使用场景的函数使用即可。这个库提供了不同类型的随机数函数,所有函数都是基于最基本的rand

21、om.random()函数扩展而来。43random库解析函数描述seed(a=None)初始化随机数种子,默认值为当前系统时间random()生成一个0.0,1.0)之间的随机小数randint(a,b)生成一个a,b之间的整数getrandbits(k)生成一个k比特长度的随机整数randrange(start,stop,step)生成一个start,stop)之间以step为步数的随机整数uniform(a,b)生成一个a,b之间的随机小数choice(seq)从序列类型(例如:列表)中随机返回一个元素shuffle(seq)将序列类型中元素随机排列,返回打乱后的序列sample(pop

22、,k)从pop类型中随机选取k个元素,以列表类型返回44random库解析对random库的引用方法与math库一样,采用下面两种方式实现:import random 或 from random import*from random import*random()0.2922089114412476uniform(1,10)1.5913082783598524uniform(1,20)7randrange(0,100,4)#从从0开始到开始到100以以4递增的递增的元素中随机返回元素中随机返回96choice(range(100)97ls=list(range(10)print(ls)0,1,

23、2,3,4,5,6,7,8,9shuffle(ls)print(ls)5,8,4,7,6,9,3,0,2,10,1,2,3,4,5,6,7,8,945random库解析生成随机数之前可以通过seed()函数指定随机数种子,随机种子一般是一个整数,只要种子相同,每次生成的随机数序列也相同。这种情况便于测试和同步数据 seed(125)#随机种子赋值随机种子赋值125.format(randint(1,10),randint(1,10),randint(1,10)4.4.10.format(randint(1,10),randint(1,10),randint(1,10)5.10.3seed(12

24、5)#再次给随机种子赋值再次给随机种子赋值125.format(randint(1,10),randint(1,10),randint(1,10)4.4.1046的计算47的计算的计算 (圆周率)是一个无理数,即无限不循环小数。精确求解圆周率是几何学、物理学和很多工程学科的关键。对的精确求解曾经是数学历史上一直难以解决的问题之一,因为无法用任何精确公式表示,在电子计算机出现以前,只能通过一些近似公式的求解得到,直到1948年,人类才以人工计算方式得到的808位精确小数。48的计算的计算 随着计算机的出现,数学家找到了另类求解的另类方法:蒙特卡罗(Monte Carlo)方法,又称随机抽样或统计

25、试验方法。当所要求解的问题是某种事件出现的概率,或者是某个随机变量的期望值时,它们可以通过某种“试验”的方法,得到这种事件出现的频率,或者这个随机变数的平均值,并用它们作为问题的解。这就是蒙特卡罗方法的基本思想。49的计算的计算 应用蒙特卡罗方法求解的基本步骤如下:随机向单位正方形和圆结构,抛洒大量“飞镖”点 计算每个点到圆心的距离从而判断该点在圆内或者圆外 用圆内的点数除以总点数就是/4值。随机点数量越大,越充分覆盖整个图形,计算得到的值越精确。实际上,这个方法的思想是利用离散点值表示图形的面积,通过面积比例来求解值。50的计算的计算 计算使用的正方形和圆结构 计算使用的1/4区域和抛点过程

26、 51的计算的计算 实例代码6.1e6.1CalPi.py 123456789101112131415#e6.1CalPi.pyfrom random import randomfrom math import sqrtfrom time import clockDARTS=10000hits=0.0clock()for i in range(1,DARTS+1):x,y=random(),random()dist=sqrt(x*2+y*2)if dist Pi值是3.144.运行时间是:0.016477s52的计算的计算 DARTS运行时间2103.1093750.011s2113.1386

27、710.012s2123.1503900.014s2133.1435540.018s2143.1413570.030s2153.1478270.049s2163.1419670.116s2183.1445770.363s2203.14266967771.255s2253.141697883640.13s不同抛点数产生的精度和运行时间 53异常处理机制54异常处理异常处理:try-except语句语句 12num=eval(input(请输入一个整数请输入一个整数:)print(num*2)观察下面这段小程序:当用户输入的不是数字呢?请输入一个整数:10010000 请输入一个整数:NOTrac

28、eback(mostrecentcalllast):FileD:/PythonPL/echoInt.py,line1,innum=eval(input(请输入一个整数:)File,line1,inNameError:nameNoisnotdefined55异常处理异常处理:try-except语句语句(接管错误)Python解释器返回了异常信息,同时程序退出56异常处理异常处理:try-except语句语句 Python异常信息中最重要的部分是异常类型,它表明了发生异常的原因,也是程序处理异常的依据。Python使用try-except语句实现异常处理,基本的语法格式如下:try:except

29、:57异常处理异常处理:try-except语句语句 12try:num=eval(input(请输入一个整数请输入一个整数:)print(num*2)except:print(输入错误,请输入一个整数输入错误,请输入一个整数!)该程序执行效果如下:请输入一个整数:NO输入错误,请输入一个整数!58异常的高级用法异常的高级用法 try-except语句可以支持多个except语句,语法格式如下:try:except:.except:except:59异常的高级用法异常的高级用法 最后一个except语句没有指定任何类型,表示它对应的语句块可以处理所有其他异常。这个过程与if-elif-else

30、语句类似,是分支结构的一种表达方式,一段代码如下 12345678try:alp=ABCDEFGHIJKLMNOPQRSTUVWXYZ idx=eval(input(请输入一个整数请输入一个整数:)print(alpidx)except NameError:print(输入错误,请输入一个整数输入错误,请输入一个整数!)except:print(其他错误其他错误)60异常的高级用法异常的高级用法该程序将用户输入的数字作为索引从字符串alp中返回一个字符,当用户输入非整数字符时,except NameError异常被捕获到,提示升用户输入类型错误,当用户输入数字不在01到256之间时,异常被ex

31、cept捕获,程序打印其他错误信息,执行过程和结果如 下:请输入一个整数:NO输入错误,请输入一个整数!请输入一个整数:100其他错误61异常的高级用法异常的高级用法 除了try和except保留字外,异常语句还可以与else和finally保留字配合使用,语法格式如下:try:except:else:finally:62异常的高级用法异常的高级用法63异常的高级用法异常的高级用法采用else和finally修改代码如下:12345678910try:alp=ABCDEFGHIJKLMNOPQRSTUVWXYZ idx=eval(input(请输入一个整数请输入一个整数:)print(alpidx)except NameError:print(输入错误,请输入一个整数输入错误,请输入一个整数!)else:print(没有发生异常没有发生异常)finally:print(程序执行完毕,不知道是否发生了异常程序执行完毕,不知道是否发生了异常)执行过程和结果如下:请输入一个整数:5F没有发生异常程序执行完毕,不知道是否发生了异常 请输入一个整数:NO输入错误,请输入一个整数!程序执行完毕,不知道是否发生了异常64

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