版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python程序设计
第三章流程控制本章知识点导图流程控制是用来控制程序中各语句的执行顺序,即程序运行时,个别的指令(或是陈述、子程序)运行或求值的顺序。主要可以分为以下三种结构:顺序结构、判断结构和循环结构。
一、顺序结构顺序结构指程序从上向下依次执行每条语句的结构,顺序结构是整个程序执行的主干。
采用顺序结构的程序将直接按行顺序执行代码,直到程序结束。流程图如下3-2所示。图3-2
顺序结构流程图【例3-1】如我们从键盘输入两个变量a=1和b=2,并将a除以b的值赋值给c1,再将a、b的值交换,再次计算a除以b的值赋值给c2,并将c1和c2的值输出显示在一行,中间用分号隔开。分析上面要求:1.从键盘输入a和b两个变量的值;2.转换a和b的值为数值型;3.将a除以b的值赋值给c1;4.将a、b的值互换;5.计算a除以b的值赋值给c2;6.将c1和c2的值打印输出在屏幕上为一行。以上就是一个按顺序执行代码的例子,具体的实现代码如下。In[1]:a=input("pleaseinputa:")...:b=input("pleaseinputb:")...:...:a=int(a)...:b=int(b)...:...:c1=a/b...:...:a,b=b,a...:...:c2=a/b...:...:print('c1=',c1,';','c2=',c2)代码1:执行代码并输入1和2,结果显示如下。pleaseinputa:1pleaseinputb:2c1=0.5;c2=2.0input()函数的功能是接收来自键盘的输入,如代码1首先要接收来自键盘的输入a和b的值。
为了给用户一个友好的界面,提醒用户输入,可以在input()函数的括号内写入一些信息,如本例input("pleaseinputa:")。input()函数将用户输入的内容作为字符串形式返回,也就是说,就算输入的是数字,但返回的“数字”的类型仍然是字符型,如输入的是数字1,input()接收到的也确实显示的是“1”,是加了引号的“1”!当用type()函数查一下它的类型时会显示是str型。在input()函数接收到的“数字”参与计算时,需要将接收到的“数字”转换为数值型。若需要整型,则使用int()函数转换,若需要小数浮点型,则使用float()函数转换。例如,将接收到的数字转化为浮点型,可以写成float(input("请输入小数:"))。>>>a=input("请您输入数字:")请您输入数字:12>>>a'12'>>>type(a)<class'str'>>>>b=input('等您输入呢:')等您输入呢:abc>>>b'abc'>>>type(b)<class'str'>二、判断结构判断结构也称选择结构,增加了在程序中的判断机制,执行条件代码,看它的结果是真还是假,真则执行,假则不执行,或者执行其他的代码。常使用if/else或者if/elif/…/else结构。if-else判断结构句式如下,代码流程图如图3-3所示。if
条件:block1else:block2图3-3
判断结构流程图在执行时先执行“if
条件:”,如果结果为真,则执行其下的“block1”,否则执行“block2”,当判断分支不止一个时,可选择“if-elif-else”结构,这里的elif可以有多个。if
条件:block1elif
条件2:block2else:block3对于一元二次方程来说,判断解的个数是根据Δ的值来判断的,对于如下方程:解的情况如下。当:无解程序代码流程如下:1)输入A、B、C2)计算Δ
3)判断解的个数4)计算解
5)输出解代码2:#输入A、B、CIn[2]:A=float(input("输入A:"))...:B=float(input("输入B:"))...:C=float(input("输入C:"))...:...:#计算delta...:delta=B**2-4*A*C...:...:#判断解的个数...:ifdelta<0:...:print("该方程无解!")...:elifdelta==0:...:x=B/(-2*A)...:print("x1=x2=",x)...:else:...:#计算x1、x2...:x1=(B+delta**0.5)/(-2*A)...:x2=(B-delta**0.5)/(-2*A)...:print("x1=",x1)...:print("x2=",x2)【例3-2】运行上面的代码,求下面三个方程的解。1、不存在解:执行代码2,输入系数1,2,6,运行结果输出如下:输入A:1输入B:2输入C:6该方程无解!2、存在一个解:再次执行代码2,输入系数1,-4,4,运行结果输出如下:输入A:1输入B:-4输入C:4x1=x2=2.0输入A:1输入B:4输入C:2x1=-3.414213562373095x2=-0.58578643762690493、存在两个解:再次执行代码2,输入系数1,4,2,运行结果输出如下:三、循环结构当反复执行某个或某些操作直至条件为假或为真才停止的一个过程,这个重复的过程称之为循环结构。循环结构包括while循环与for循环。1.for循环
for循环常用来遍历一个序列的类型,如列表、集合、字符串、字典等,for循环较while循环而言,在程序中用到的会更为普遍。
假设A是一个集合,element代表A中的元素,for循环可以将A中的元素逐个地取出,每取一次A中的元素element都执行一次“循序块”动作,格式如下。forelementinA:
循环块代码执行流程图如图3-4所示。图3-4
for循环流程图【例3-3】接收一个键盘输入的数字,计算从1加到该数字的和。In[5]:n=int(input("请输入结束的数:"))...:s=0...:foriinrange(n+1):...:s+=i...:print("从1加到%d的结果是:%d"%(n,s))请输入结束的数:15从1加到15的结果是:120代码说明:range(n)函数表示产生一个从0到n-1的n个连续整数的一个序列,不包含n。如range(5)表示产生从0到5但不包含5的一个序列:0、1、2、3、4。当然,可以自定义需要的起始点和结束点,如range(2,5)代表从2到5(不包含5),即产生2、3、4。Python中的索引号一般都是左闭右开,即不包含右边的数据。range()函数还可以定义步长,如用range(1,30,3)可以定义一个从1开始到30结束,步长为3的序列,即:1、4、7、10、13、16、19、22、25、28。range()函数可以作为一个容器(在Python中,可包含其他对象的对象,称之为“容器”,容器是一种数据结构)存在,当需要将容器中序列转换为列表时,只需要在其外面包裹一个list()函数即可;同理,如果要将其转换为元组时,只需要用tuple()函数进行转换。>>>a=range(5)#产生一个范围是[0,5)的序列>>>list(a)#将a转化为列表[0,1,2,3,4]>>>tuple(a)#将a转化为元组(0,1,2,3,4)2.while循环While循环不同于for循环,在每次执行while时,都会判断一次其后的条件,当条件为假时,则停止循环。几乎所有程序语言中都存在while循环这种结构,while循环结构如下。while条件:
代码块代码执行流程图如图3-5所示。图3-5
while循环流程图下面编写一个从1加到n的程序来体验while循环。【例3-4】接收一个键盘输入的数字,计算从1加到该数字的和。In[6]:n=int(input("请输入结束的数:"))...:i=1...:s=0...:whilei<=n:...:s+=i...:i+=1...:print("从1加到%d结果是:%d"%(n,s))#%d的作用类似于占位符请输入结束的数:10从1加到10结果是:55代码说明:print("从1加到%d结果是:%d"%(n,su))这里是格式化输出,后面还会讲到。%d在这里相当如占位符,类似的还有%s和%f等。%d表示整数占位,%s表示字符串占位,%f表示浮点数占位。这里的第一个%d就表示在这个位置上应该显示的是整数。同理,第二个%d也表示在这个位置上显示整数。而%(n,s)则表示对前面的两处%占位符的赋值,表示在第一个%d位置上要输出的是n,第%d位置上输出的是s!3.break和continuebreak表示结束循环,然后执行循环体之后的语句。continue语句和break语句的用法是相同的,即也可以用于for和while语句,不能用于if。出现的位置也一样,区别在于break用于结束循环,而continue用于跳出当前循环,执行下一次循环。
【例3-5】超过三次退出循环。In[1]:i=0
...:whileTrue:
...:i+=1
...:ifi>3:
...:break
...:print("第%d次"%i)第1次第2次第3次【例3-6】输出0到4的平方,跳过3。In[2]:foriinrange(5):
...:ifi==3:
...:continue
...:print(i**2)014164.异常
在Python中,try/except语句主要用于捕获和处理程序正常运行过程中出现的一些异常情况,如语法错误、数据除零错误、从未定义的变量上取值等。除了try/except外,话可以与else、finally的组合来实现更好的稳定性和灵活性,其一般格式如下。try:Normalexecutionblockexcept:exceptionhandleelse:ifnoexception,getherefinally:print("finally")无论发生异常与否,若有finally语句,以上try/except/else代码块运行的最后一步总是运行finally所对应的代码块。其中,try-except,
这是最简单的异常处理结构,其结构如下:try:
需要处理的代码exceptExceptionase:
处理代码发生异常,在这里进行异常处理
例如,先来看一下1/0会出现什么情况:>>>1/0Traceback(mostrecentcalllast):File"<ipython-input-11-05c9758a9c21>",line1,in<module>1/0ZeroDivisionError:divisionbyzero报错!下面继续触发除以0的异常,然后捕捉并处理。In[1]:try:
...:print(1/0)
...:exceptExceptionase:
...:print('代码出现除0异常,这里进行处理!')
...:print("这里是e的信息:"%e)
...:print("我还在运行")测试及运行结果如下:代码出现除0异常,这里进行处理!这里是e的信息:divisionbyzero我还在运行try-except-finally,这种异常处理结构通常用于无论程序是否发生异常,对必须要执行的操作进行运行,例如关闭数据库资源、关闭打开的文件资源等,但必须运行的代码需要放在finally块中。【例3-7】finally在try语块中的应用。In[7]:try:...:print(1/0)...:exceptExceptionase:...:print("除0异常")...:finally:...:print("必须执行")...:print("-----------------")...:...:try:...:print("这里没有异常")...:exceptExceptionase:...:print("这句话不会输出")...:finally:...:print("这里是必须执行的")除0异常必须执行-----------------这里没有异常这里是必须执行的测试及运行结果如下:除0异常必须执行-----------------这里没有异常这里是必须执行的try-except-else,该结构运行过程如下:程序进入try部分,当try部分发生异常则进入except部分,若不发生异常则进入else部分。【例3-8】else在try语块中的应用。In[8]:try:...:print("正常代码!")...:exceptExceptionase:...:print("将不会输出这句话")...:else:...:print("这句话将被输出")...:print("-------------------")In[9]:try:...:print(1/0)...:exceptExceptionase:...:print("进入异常处理")...:else:...:print("不会输出")正常代码!这句话将被输出进入异常处理输出结果为:再看下面这段代码。输出结果为:try-except-else-finally,这是try-except-else的升级版,在原有的基础上增加了必须要执行的部分,示例代码如下:【例3-9】else和finally同时在try语块中的应用。In[10]:try:...:print("没有异常!")...:exceptExceptionase:...:print("不会输出!")...:else:...:print("进入else")...:finally:...:print("必须输出!")...:...:print("-------------------")没有异常!进入else必须输出!-------------------In[11]:try:...:print(1/0)...:exceptExceptionase:...:print("引发异常!")...:else:...:print("不会进入else")...:finally:...:print("必须输出!")引发异常!必须输出!注意:1.在上面所示的完整语句中try/except/else/finally所出现的顺序必须是try→exceptx→except→else→finally,即所有的except必须在else和finally之前,else(若有)必须在finally之前,而exceptx又必须在except之前。否则会出现语法错误。2.对于上面所展示的try/except完整格式而言,else和finally都是可选的,而不是必需的。但若存在else,则必须在finally之前,finally(如果存在)必须在整个语句的最后位置。3.在上面的完整语句中,else语句的存在必须以exceptx或者except语句为前提,如果在没有except语句而而使用else,会引发语法错误,即有else则必有exceptx或者except语句。异常处理的完整格式如下。try:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 审计局严格落实基本制度
- 审计局出差管理制度
- 审计局守信践诺制度
- 审计局科室内部管理制度
- 审计机关采购制度
- 审计现场安全保密制度
- 审计红黄线管理制度
- 审计绿色通道制度
- 岗位安全教育培训制度
- 介护特定技能2022考试真题预测题库及参考答案
- 2026年教育局思想政治工作科工作计划
- 2025年安徽卫生健康职业学院单招职业适应性测试试题及答案解析
- 医保村卫生室管理制度
- 陕西从优 秀村干部中考录乡镇公务员考试真题
- 2025年军事设施建设与管理规范
- 儿科学营养性vitD缺乏
- “党的二十届四中全会精神”专题题库及答案
- 脱硝催化剂安装施工方案1026
- GB 24790-2009电力变压器能效限定值及能效等级
- 火电工程项目建设程序和内容课件
- 红色绘本小故事爱国教育-长征路上的红小丫课件
评论
0/150
提交评论