资源简介 (共27张PPT)专题三 程序的三种结构考纲要求(1)掌握分支语句、循环语句的使用方法;(2)了解常用算法的实现:累加、累乘、求平均、求最大/最小值等。一.顺序结构按程序的执行顺序来划分,程序分为以下三种基本结构,它们的流程图如图6-3-1所示。由这三种基本结构可以组成各种更加复杂的程序。图6-3-1 程序基本结构顺序结构分支结构条件真假假循环结构条件真顺序结构描述的程序是从第一条语句开始按自上往下顺序执行,直到最后一条语句结束。顺序结构是最基本的结构,其它两种结构也要用到顺序结构。一.顺序结构例1:输入语文、数学两科成绩,输出总分和平均分。a=float(input("请输入语文:"))b=float(input ("请输入数学:"))s=a+bv=s/2print("总分是:",s, "平均分是:", v) 例2:输入一个三位数,输出各位数码的和,如输入234,输出9。算法分析:①键盘上输入一个三位数n,变成数值;②取出百位上的数字存入变量a,a=n//100;③取出十位上的数字存入变量b,b=n//10%10或b=n%100//10; ④取出个位上的数字存入变量c,c=n%10;⑤对个、十、百位上的数字求和,s=a+b+c;⑥输出和s。程序代码如下:n=int(input("请输入一个三位数:"))a=n//100 #取百位上数字b=n//10%10 #取十位上数字c=n%10 #取个位上数字s=a+b+cprint("个十百位数码的和是:",s)一.顺序结构【实践体验】根据以下题目要求设计程序。(1)有一根长度为c厘米的绳子,用它围成一个边长为整数的最大等边三角形,输入c的值输出三角形的边长(厘米)。(2)输入一个秒数,把它转化成“×小时×分钟×秒”的形式输出,如输入3723,输出1小时2分钟3秒。(3)输出两个整数,计算它们的平方和及平方差并输出结果。(4)通过键盘输入变量a,b的值,交换它们的值并输出结果。(5)输入某物体匀速运动的速度v和运动时间t,计算并输出运动的路程s,s=v×t。二.分支结构现实生活或工作中的问题复杂多样,并不是所有问题都可以用编写顺序执行的计算机程序语句来解决。经常需要对某些条件进行判断和选择。例如,根据学生的分数判断成绩是否合格。在程序设计中,要实现判断和选择需要使用分支语句,同时还需要使用关系运算符和逻辑运算符。分支语句也叫选择语句,分支语句会根据对条件判断的结果来执行不同的语句块。1.单分支if语句。其语法形式如下: if <条件>: 语句块 使用说明:语句块中包含的语句必须缩进,缩进一般使用4个空格,缩进是Python程序结构的标志。条件可以是一个布尔型常量或变量,也可以是关系表达式或逻辑表达式。如果条件的值为True,则执行语句块里的语句序列;如果条件的值为False,则语句块里的语句会被跳过,继续执行if后面的语句。这种形式的if语句相当于汉语里的“如果……就……”,其流程图如图6-3-2所示。图6-3-2 单分支结构例如:输入一个整数,判断是否为偶数,若是输出“是偶数”,代码如下: a=int(input("请输入一个数:")) if a%2==0: print("是偶数")【补充说明】使用if语句时,如果只有一条语句,语句可以直接写到冒号的右侧,上面例子中的if语句可以写成如下格式:if a%2==0:print("是偶数")2.双分支if语句。其语法形式如下: if <条件>: 语句块1 else: 语句块2使用说明:如果条件是True,则执行if后面的语句块1,执行完语句块1后退出if语句;否则执行else后面的语句块2。这种形式的if语句相当于汉语里的“如果……否则……”,其流程图如图6-3-3所示。图6-3-3 双分支结构二.分支结构二.分支结构例1:输入一个数输出它的绝对值。x=float(input("请输入一个数:"))if x>=0: y=xelse: y=-xprint("绝对值是:",y)【使用技巧】if…else…语句可以使用条件表达式进行简化,如上例中求绝对值的代码可简写成:y=x if a>=0 else -x例2:输入两个数,输出较大的一个数。a=float(input("输入第一个数:"))b=float(input("输入第二个数:"))if a>b: max=aelse: max=bprint("较大的数是:",max)二.分支结构【实践体验】根据以下题目要求设计程序。(1)输入一个数判断奇偶并输出“是偶数”或“是奇数”。(2)输入一个年份,判断是闰年还是平年,若是闰年就输出“是闰年”,否则输出是“平年”。闰年的条件是:年份能被4整除,但不能被100整除或者年份能被400整除。(3)输入两个数a,b,若a>b输出a-b的值,否则输出b-a的值。(4)输入两个数m,n,按从小到大的顺序输出这两个数。(5)输入语文的成绩a,若a不小于60分,输出“合格”,否则输出“不合格”。二.分支结构3.多重分支if语句。if <条件 1>: 语句块1elif <条件 2>: 语句块2……else: 语句块n使用说明:若条件1是True,则执行语句块1,执行完后退出if-elif-else结构;否则,若条件2为True,则执行语句块2,执行完后退出if-elif-else结构;条件1和条件2均为假,再判断条件3,依此类推;只有在所有条件都为假的情况下,才会执行else下的语句块。elif结构的多个分支只会执行一个语句组,其它分支的语句组都不会被执行。其流程图如图6-3-4所示。图6-3-4 多分支结构二.分支结构例1:输入一个数,判断并输出“正数”“零”“负数”。a=float(input("请输入一个数:"))if a>0: b="正数"elif a==0: b="零"else: b="负数"print(b)例2:输入成绩(cj),判断并输出“优”“良”“及格”“不及格”。优的条件是:cj≥90;良的条件是:80≤cj<90;及格的条件是:60≤cj<80;不及格的条件是:cj<60。cj=float(input("请输入成绩:"))if cj>=90: print("优")elif cj>=80: print("良")elif cj>=60: print("及格")else: print("不及格")【实践体验】某加油站做促销活动,加油满500元享受85折,满200元享受95折,200以内不享受优惠,编程实现:输入加油量(升)和单价,输出应付款。三.循环结构我们将计算机程序中某些代码的重复执行称为循环,循环结构会根据给定的条件反复执行某些代码,它可以减少代码书写的工作量,使程序变得简洁。Python中的循环分为两种:一种是重复一定次数的计数循环;另一种是重复到某种情况结束的条件循环。1.计数循环Python中使用for语句来创建计数循环,for 语句的基本格式如下。for 循环变量 in 序列: 语句块 下面先来看一个简单的例子,该例子通过for语句输出序列中的每个元素。 for i in ["My","Heigt","is",160, "cm"]: print(i,end=" ") 运行结果是: My Heigt is 160 cm 通常我们将一组重复执行的语句称为循环体。Python对循环体约定的格式是:循环体必须相对关键词for有缩进。本例中循环体只有一条语句,即print(i)。循环执行时,依次将列表中的元素赋给i(称为取项),并且执行循环体(输出i的值),直到整个序列的元素被取完,循环结束。 for语句中,in后面的序列可以是任何有序的序列,即列表、字符串、元组及range()函数。例如计算1+2+3+4+5的和,可以使用如表6-3-1所示的三种序列,结果都一样。三.循环结构表6-3-1 序列在for语句中的使用range(初值,终值,步长)函数,用于生成特定区间的整数序列,从初值开始,到小于终值的最大整数结束,一个左闭右开的区间。初值默认是0,步长默认是1,都可以省略,步长是两个数之间的间隔。例如range(1,6) 会生成列表 [1,2,3,4,5];range(6)会生成列表[0,1,2,3,4,5];range(1,10,3)会生成列表[1,4,7]。可以使用list()函数将range()表示的序列将化为一个列表。方法如下:a=list(range(4))print(a)显示结果为:[0,1,2,3]【问题思考】(1)列表函数range(100)包含的元素个数是多少?(2)列表函数range(2,6)包含哪些元素?(3)构造100以内(内含100)偶数列表。三.循环结构实例1:计算并输出s=1+2+3+…10。算法分析:本题属于累加问题,计算机算法的处理是逐项将 1,2,3,…,10累加到一个变量中,累加过程如下面操作步骤所示。1.令 s=0;2. s=s+1;3. s=s+2;……11. s=s+10。 观察上面的算法,可以发现每一步的操作都是在做加法。虽然加的数据不同,但是这些数据的变化是有规律的,可以得到通项公式:s=s+i。因此,设计如下算法:①10以内的自然数用列表函数range(1,11)表示;②求和要使用累加器,刚开始累加器置0,如s=0;③用for循环从列表中取数,累加到累加器中,如s=s+i,直到10个数全部取完就结束循环;④输出和s。程序代码如下:s=0for i in range(1,11): s=s+iprint("和是:",s)三.循环结构实例2:计算s=5!(即s=1×2×3×4×5)。算法分析:本题属于累乘问题,和累加问题类似,设计算法如下:①5以内的自然数用列表函数range(1,6)表示;②累乘要设置一个累乘器变量,初值为1,如s=1②用for循环从列表中取数,累乘到累乘器中,如s=s*i,直到5个数全部取完就结束循环;④输出累乘积s。程序代码如下:s=1for i in range(1,6): s=s*iprint("累乘积:",s)【实践体验】根据以下题目要求设计程序。(1)从键盘上输入5个数,统计并输出它们的和及平均值。(2)计算10以内(含10)的偶数的和。三.循环结构2.条件循环 条件循环一般用于循环次数未知的情况,不过计数循环也可以用条件循环来实现。条件循环是通过条件控制循环,只有当循环条件成立时,才执行循环体。循环结构的三要素是:循环变量、循环体、循环终止条件。条件循环的基本语法格式如下:while <条件表达式>: <语句组>图6-3-5 求和流程图i<=100 s=0,i=1开始输出ss=s+i,i=i+1结束是否实例1:计算100以内(含100)自然数的和。算法分析:①累加器初始值s=0,循环变量初始值i=1②判断i<=100成立吗?③若条件成立,则s=s+i,i=i+1,返回②④若条件不成立,输出s,结束。其算法流程图如图6-3-5所示。三.循环结构程序代码如下:s=0i=1while i<=100: s=s+i i=i+1print("s=",s)实例2:输入一个自然数,输出它的所有因数,如输入18,输出1 2 3 6 9 18。算法分析:①输入自然数n②循环变量i=1③判断i<=n成立吗?④若条件成立,判断n能被i整除吗?若能则输出i⑤i=i+1,返回③⑥若条件不成立,就结束。其算法流程图如图6-3-6所示。i=i+1是i<=n i=1开始输入n结束是i整除n?输出i否否图6-3-6 求因数流程图三.循环结构程序代码如下:n=int(input("请输入一个自然数:"))i=1while i<=n: if n%i==0: print(i,end=" ") i=i+1 【补充说明】跳转语句 跳转语句可以改变程序的执行顺序,如break和continue语句。break语句的作用是强制退出循环体,不再执行循环内的语句;而continue语句的作用是结束本次的循环,跳过循环体中尚未执行的语句,接着进行循环条件的判断,以决定是否继续执行循环体。exit语句用于结束整个程序的运行。【实践体验】根据以下题目要求设计程序。1.有n名学生参加珠算比赛,根据键盘输入的n名学生的成绩,统计最高分并输出。2.从键盘上输入若干个数值,输入0为止,分别统计输入的总个数、正数的个数和负数的个数。知识拓展(了解)二重循环二重循环是指一个循环中嵌套另一个循环。格式:for 循环变量1 in 序列1: 语句块1 for 循环变量2 in 序列2: 语句块2例如,使用以下的二重循环代码,可输出如图6-3-7所示的图形。程序代码如下:for i in range(1,6): for j in range(1,i+1): print("*",end="") print()图6-3-7 效果图形课后练习一、单项选择题1.结构化程序设计的三种基本结构不包括( )。A.顺序结构 B.选择结构 C.树型结构 D.循环结构2.以下不属于选择语句的是( )。A.if B.else C.elif D.def3.设计判断一元二次方程有几个解的程序,其结构应用使用( )。A.顺序结构 B.分支结构 C.循环结构 D.混合结构4.以下程序代码执行后,输出的结果是( )。 a=1;b=2 if bn C.m==n D.m>=n课后练习6.已知a=6,b=7,以下程序段执行后变量c的值为( )。if (a%3==0)or(b%3==0): c=a*belse: c=a+bA.6 B.7 C.13 D.427.执行以下程序段后,输出的结果是( )。a,b=1,2if b<2: a=-1else: a=0print(a)A.-1 B.0 C.1 D.28.10以内的奇数可用列表函数表示为( )。A.range(10,2) B.range(1,10) C.range(1,10,2) D.range(0,11,2)课后练习9.语句“i=i+1”的意思是( )。A.没有意义B.既是赋值语句也是判断语句 C.判断i与i+1是否相等D.将i的原值加1再赋给i,即i自增110.下列语句用于计算s=1+3+…+19并输出结果。①for i in range(1,20,2): ②print(s) ③s=0 ④s=s+i正确的语句顺序是( )。A.①②③④ B.①②④③ C.③①④② D.③④②①11.下列语句用于在屏幕上输出10个“★”,其中横线处应该填入( )。for i in : print("★",end=" ")A.10 B.range(1,10) C.(1,10) D.range(10)12.执行如下代码,print语句被执行的次数是( )。for j in range(10):print(j)A.1 B.8 C.9 D.10课后练习13.下列循环语句用法不正确的是( )。A.for i in "1234":B.for i in [1,2,3,4]:C.for i in range(10,5):D.for i in range(5):14.下列程序运行后的结果是( )。for i in range(2,6,2): a=i+1print(a)A.4 B.5 C.6 D.715.执行下列程序段后,输出的结果是( )。k=5while k>=0: k=k-1print(k)A.0 B.4 C.-1 D.6课后练习二、设计程序1.某航空公司招收空姐,身高要求是在1.75米至1.9米之间(包含1.75米和1.9米),请你帮忙设计筛选空姐的程序,输入应聘者的身高,输出“身高符合”或“身高不符合”。2.输入x,计算并输出y。3.身体质量指数的计算公式是:BMI=体重(千克)÷身高(米)的平方,若BMI<18.5为体重过轻,18.5≤BMI<25为正常,25≤BMI<28为超重,BMI≥28为肥胖。编程实现输入体重与身高,输出体质指数及判断结果。4.s=1×2+2×3+…+9×10,计算s并输出结果。5.p=1×3×5×…×25,计算p并输出结果。课后练习答案题号 答案 题号 答案 题号 答案 题号 答案 题号 答案1 C 2 D 3 B 4 B 5 A6 D 7 B 8 C 9 D 10 C11 D 12 A 13 C 14 B 15 C一、单项选择题二、程序设计题课后练习答案1.h=float(input("请输入身高(单位为米):"))if h>=1.75 and h<=1.9:print("身高符合")else:print("身高不符合")2.x=float(input("请输入x的值:"))if x==0:y=1elif x>0:y=2*x+1else:y=x*x-1print("y的值是:",y)课后练习答案3.a=float(input("请输入身高(单位为米):"))b=float(input("请输入体重(单位为千克):"))BMI=b*b/aif BMI<18.5:print("体重过轻")elif BMI<25:print("体重正常")elif BMI<28:print("体重超重")else:print("肥胖")4.s=0for i in range(1,10):s=i*(i+1)print("1×2+2×3+…+9×10=",s)课后练习答案5.p=1for i in range(1,26,2):p=p*iprint("1×3×5×…×25=",p)或者:p=1i=1while i<=25:p=p*ii=i+2print("1×3×5×…×25=",p) 展开更多...... 收起↑ 资源预览