资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,计算机编程导论,本章主讲 赵家刚,第4章 循环结构 程序设计,2,计算机编程导论,4.3.3,while语句用于无限循环,要点:,循环结构理解,二重循环结构理解,二重循环的应用,计算机编程导论,4.3.3,while语句用于无限循环,当while语句的“表达式”永远不会为布尔假时,循环将永远不会结束,形成无限循环,也称死循环。,使用while语句构成无限循环的格式通常为:,while True:,循环体,可以在循环体内使用,break语句,强制结束死循环。,计算机编程导论,【例4-5】使用无限循环的方法编程实现例4-2。,a=input(请输入字符,如果输入#号则结束输入操作:),while True:,print(您输入的字符是:,a),a=input(请输入字符,如果输入#号则结束输入操作:),if a=#:,break,程序:,计算机编程导论,【例4-6】求以下表达式的值,其中n值从键盘输入。参考值:当n=11时,s=1.833333。,计算机编程导论,【分析】,(1)以上问题属于数学中的级数求和问题,是使用循环结构解决的一类常见问题。,(2)级数求和问题编程的重点在于通过观察表达式的规律,分析每次循环都要完成的事件。通常将这些事件进行局部分解,称为“,通式,”。,该题的通式有以下几个:,(,1,)分母的通式:,(,2,)变量,i,的通式:,(,3,)当前项的通式:,(,4,)求和的通式:,mu=mu+i,i=i+1,t=1.0/mu,s=s+t,计算机编程导论,i=1,mu=0,s=0.0,n=input(请输入n值:)#或用书上的代码,while i=1e-8:,s=s+t,zi=zi*i,mu=mu*(2*i+1),t=zi*1.0/mu,i+=1,print PAI=,(2*s),计算机编程导论,【例4-8】,求1 100之间能被7整除,但不能同时被5整除的所有整数,。,【分析】,(1)本题需要对1 100范围内的所有数一一进行判断。,(2)本题的循环次数确定是100次。,(3)在每次循环过程中需要用 if 语句进行条件判断。因此本题是循环嵌套选择的结构。,计算机编程导论,i=1,#i 既是循环变量,同时又是被判断的数,print(1100之间能被7整除,但不能同时被5整除的所有数是:),while i=100:,#判断循环是否结束,if i%7=0 and i%5!=0:,#判断本次的i是否满足条件,print i,t,#打印满足条件的i,i+=1,#每次循环 i 应自增,程序:,提问:,请问语句“i+=1”可以和语句“print i,t ”对齐吗?,计算机编程导论,【例4-,9,】输出“水仙花数”。所谓水仙花数是指1个3位的十进制数,其各位数字的立方和等于该数本身。例如:153是水仙花数,因为153=1,3,+5,3,+3,3,。,【分析】,(1)本题需要对100 999范围内的所有数一一进行判断。,(2)本题的变量 i 既是循环变量,同时也是被判断的数。,(3)每次循环过程中需要用 if 语句进行条件判断。因此本题也是循环嵌套选择的结构。,计算机编程导论,提问:,变量 i 是一个三位整数,例如 i=123,(1)请写出分离 i 的百位数的表达式。,(2)请写出分离 i 的十位数的表达式。,(3)请写出分离 i 的个位数的表达式。,i=100,print(所有的水仙花数是:),while i score=70,90,78,85,97,94,65,80,score,70,90,78,85,97,94,65,80,aver=sum(score)/8.0,aver,82.375,计算机编程导论,方法二:使用,for,语句,循环计算列表元素之和。,【,分析,】,(,1,)以上列表,score,有,8,个元素,这些元素的序列索引范围是“,0 7”,。,(,2,)本题用到成员测试运算符“,in,”,如果成员在序列中,测试结果为“,True”,,否则为“,False”,。,(,3,)本题用到计算序列长度的内建函数,len(),。,(,4,)本题用到内建函数,range(),,,range(),函数的完整语法要求提供,2,个或,3,个整型参数:,range(start,end,step),计算机编程导论,score=70,90,78,85,97,94,65,80,print,所有的分数值是:,print score,#,打印列表,sum=0,for i in range(len(score):,print scorei,sum+=scorei,#,循环体,对列表元素求和,aver=sum/8.0,#,循环之后,求平均值,print naver=,aver,程序:,计算机编程导论,循环的嵌套是指在一个循环中又包含另外一个完整的循环,即循环体中又包含循环语句。,while,循环和,for,循环可以相互嵌套。,循环嵌套的执行过程是:一次外循环对应着完整的一轮内循环。,利用,for,语句实现双层循环嵌套,计算机编程导论,【,例,4-13】,使用,for,循环的嵌套结构打印,9-9,乘法表,【,分析,】9-9,乘法表由,9,行组成,每行的列数有规律地递增。通过观察可以看出,表达式“,X*Y=Z”,中的,X,是内循环变量,j,的取值,,Y,是外循环变量,i,的取值,,Z,是,X,乘以,Y,的结果。,计算机编程导论,for i in range(1,10,1):,#,控制行,for j in range(1,i+1,1):,#,控制列,print i,*,j,=,i*j,t,print n,#,每行末尾的换行,程序:,计算机编程导论,【,课堂练习,】,使用,for,循环的嵌套结构编程,打印以下图形。,(1),矩形,(2),直角三角形,(3),正三角形,计算机编程导论,Python,提供了一条提前结束循环的语句,break,语句。,当在循环过程中,某个条件被触发(一般通过,if,语句检查),需要立即停止循环时使用。,break,语句可以用在,while,和,for,循环中。,4.4 break,语句,计算机编程导论,【,例,4-15】,求,200,以内能被,17,整除的最大正整数。,【,分析,】,这个查找过程将以递减的方式遍历,200,至,1,之间的整数,当找到第,1,个能被,17,整除的数时,循环过程立即停止,后续还没有遍历的数将无需再进行判断,因此可以使用,break,语句将循环提前终止。,for i in range(200,1,-1):,if i%17=0:,break,print(200,以内能被,17,整除的最大数是:,i),程序:,计算机编程导论,【,例,4-16】,从键盘输入一个整数,判断该数是否为素数。,计算机编程导论,#Exp4_16.py,x=input(,请输入,1,个整数:,),for i in range(2,x,1):,if x%i=0:,break,if i=x-1:,print x,是素数,elif ix-1:,print x,不是素数,计算机编程导论,4.6 continute,语句,continue,语句的作用是终止当前循环,并忽略,continue,之后的语句,然后回到循环的顶端,继续执行下一次循环。,计算机编程导论,【,例,4-17】,求,200,以内能被,17,整除的所有正整数,并统计满足条件的数的个数。,#Exp4_17_2.py,s=0,print 200,以内能被,17,整除的所有数是:,for i in range(1,201,1):,if i%17!=0:,continue,print i,s+=1,print n,数的个数是:,s,计算机编程导论,计算机编程导论,第,7,次上机作业:,1.,利用以下公式求,的近似值,直到最后一项的绝对值小于等于,10,-6,为止。,2.,使用循环的嵌套结构编程输出以下图形,计算机编程导论,第,7,次上机作业:,3,.,利用三重循环完成例4-9 求水仙花数,4.从键盘输入两个矩阵,求其和、,*,其积。,*,5,.,改造例1-4,使之能解n元一次方程组,n由用户输入。,
展开阅读全文