1、4.4 运用循环结构描述问题的求解 过程 4.4运用循环结构描述问题求解过程 l程序的循环结构是程序设计中常用到的基本结构之一。循环是让计程序的循环结构是程序设计中常用到的基本结构之一。循环是让计 算机自动完成重复工作的常见方式。算机自动完成重复工作的常见方式。forfor循环、循环、whilewhile循环、循环、 循环循环 嵌套、循环控制等都是程序循环结构的主要内容。嵌套、循环控制等都是程序循环结构的主要内容。 4.4.1for循环的应用 lforfor循环语句的一般格式如下循环语句的一般格式如下: : lforfor循环依次把列表中的每个元素循环依次把列表中的每个元素 逐个迭代出来。冒号
2、逐个迭代出来。冒号“:”:”代表下代表下 一行是循环的第一行,但是循环一行是循环的第一行,但是循环 体在书写时需要缩进。在体在书写时需要缩进。在EorEor循环循环 中,从中,从forfor语句末尾的冒号开始至语句末尾的冒号开始至 其下面没有缩进的代码之间都是其下面没有缩进的代码之间都是 其包含的需要重复执行的部分。其包含的需要重复执行的部分。 因此,因此,forfor循环所包含的语句是以循环所包含的语句是以 缩进为标志的。具体如表缩进为标志的。具体如表4-94-9所示。所示。 l需要注意的是需要注意的是, ,列表可以有几种表达方式列表可以有几种表达方式: : l(1 1)直接罗列的方式。)直
3、接罗列的方式。 l如表如表4-94-9中代码中代码“for value in 1,2,3,4,5:”for value in 1,2,3,4,5:”就是直接罗列的方就是直接罗列的方 式。式。 l(2 2)先定义后使用的方式,如表)先定义后使用的方式,如表4-104-10所示。所示。 l(3 3)使用)使用range()range()函数。函数。 lrange()range()函数是让函数是让PythonPython从指定的第一个值开始数,并在到达所指从指定的第一个值开始数,并在到达所指 的第二个值后停止,因此不包含第二个值。如的第二个值后停止,因此不包含第二个值。如range(1,6)rang
4、e(1,6)其实是生其实是生 成一个成一个1616的整数(不包含的整数(不包含6 6),如表),如表4-114-11所示。所示。 l使用使用range()range()函数时,还可指定步长函数时,还可指定步长, ,如表如表4-124-12所示。所示。 l当然,使用当然,使用range()range()函数时,数值列表也可以是降序的,如函数时,数值列表也可以是降序的,如 rangc(10,1,-2)rangc(10,1,-2)就是生成就是生成1010至至2 2的偶数(降序)的偶数(降序), ,具体如表具体如表4-134-13所示。所示。 l问题问题 假如项目小组经过讨论,决定先网购单价为1元至1
5、0元的十种笔记本各1本,且每一种只买1本,那么该如 何编程计算一共要花多少元? l思考思考 如何用for循环语句编程解决上述“网购物品累计费用计算”问题? l观察观察 解决上述问题的方法有很多,其中一种方法步骤如下: ( 1)分析问题。 这个问题相当于要计算从1到10的累加值。110的累 加就是计算1+2+10,可以用for循环结构编程来解 决这个问题。 (2)设计算法。 根据上述分析,可设计如下算法:需要有一个循环变 量从1变化到10,将该变量命名为i;还需要另外一个 临时变量不断和该变量进行加法运算,并记录运算结 果,将临时变量命名为sum ;变量i每增加1时,就和 变量sum进行一次加法
6、运算,变量sum记录的是累加的 结果。该算法流程图如图4-14所示。 (3)编写程序。根据上面设计的算法,编写出解决该 问题的程序(见配套学习资源包“第四章课本素材程 序4-5”)如下: (4)调试程序。将程序4-5输入计算机进行调试运行,所 得结果为“the result=55”。 4.4.2 while循环的应用 lwhilewhile循环是当型循环,只要条件满足,就不断循环循环是当型循环,只要条件满足,就不断循环; ;否则,退出否则,退出 循环。循环。whilewhile循环语句的格式循环语句的格式: : l(1) (1) 表达式一般是一个关系表达式或一个逻辑表达式,表达式的表达式一般是
7、一个关系表达式或一个逻辑表达式,表达式的 值应该是一个逻辑值真值应该是一个逻辑值真(True)(True)或假或假(False)(False)。 l(2)(2)当表达式的值为真时,执行循环体语句;当表达式的值为假时,当表达式的值为真时,执行循环体语句;当表达式的值为假时, 退出循环,执行循环体外的下一条语句退出循环,执行循环体外的下一条语句 ( (即即whilewhile后面没有缩进的后面没有缩进的 第一条语句第一条语句 ) )。 l(3)(3)每次循环都是执行完循环体语句后回到表达式处重新开始判断,每次循环都是执行完循环体语句后回到表达式处重新开始判断, 重新计算表达式的值。一旦表达式的值为
8、假就退出循环,为真时重新计算表达式的值。一旦表达式的值为假就退出循环,为真时 就继续执行循环体语句。就继续执行循环体语句。 l(4)(4)循环体中必须有改变条件表达式值的语句,否则将成为死循环。循环体中必须有改变条件表达式值的语句,否则将成为死循环。 l(5)while(5)while循环可以用流程图来演示执行过程,如图循环可以用流程图来演示执行过程,如图4-154-15所示。所示。 l问题问题 项目小组为了筹集购买奖品和纪念品的费用,准备开展一次募捐活动,计划向第一个赞助人募集20元,向 第二个赞助人募集25元.后一个比前一个多募捐5元,依次下去,第几个人募捐后募集到的总费用累计 超过500
9、元? l思考思考 如何用while循环语句编程解决上述的募集费用计算问题? l观察观察 用while循环语句编程解决上述问题的方法有多种,编程时要注意条件表达式的构成, 现给出其中一种方法的步骤如下: (1)分析问题。 设所拉赞助人的数量为num (num=1, 2, 3, .).每次募集的费用为money,每次募 集之后总费用为sum,则sum可以用 如下的式子表示: sum= 20+ 25+30+. 于是这个问题就可以转化为:当sum 500时,求num的值。 (2)设计算法。 根据上述的分析,设计算法如下: 令num=1; 令money=20; 令sum=20; num=num+1; m
10、oney= money+5; sum=sum+money; 如果sums,则s=x+y+z,r=1000-( 1.8如x+y+z=s, 且1000- ( 1.8x+1.9y+2.1z )s,则s=x+y+z,r=1000- ( 1.8x+1.9y+2.1z) ,x 1=x,y1=y,z1=z;若x+y+z=s ,且1000- (1.8x+1.9y+2.1z)r,则r=1000-( 1.8x+1.9y+2.1z),x1=x,y1=y,z1=z; 转步骤; 转步骤; 转步骤; 输出x1,y1, z1,s和r的值。 (3)编写程序。 根据上面设计的算法,编写 出解决该问题的程序(见配 套学习资源包“
11、第四章课本 素材程序4-7”)如下: ( 4)调试运行。 将程序47输入计算机进行 调试运行,结果如下: l交流交流 各小组讨论、交流for循环、while循环语句在格式、功能、应用等方面的异同及其各自的特点。 l实践实践 1.我们用or循环计算了从1到10的累加值,并且使用的循环控制变量为还增方式。借助此问题的学习,尝 试设计用递减方式的循环控制编写代码。 2.用while循环编程实现计 算从1到10的累加值,并对for循环、 while循环的使用进行对比。 4.4.4 循环控制的应用 l循环控制包含控制循环变址的变化方式和控制循环的跳转。无论是循环控制包含控制循环变址的变化方式和控制循环的
12、跳转。无论是oror循环还是循环还是whilewhile街环,都街环,都 需要一个控制循环的变量来控制循环的执行。但是,有些循环仅靠循环变量自身的需要一个控制循环的变量来控制循环的执行。但是,有些循环仅靠循环变量自身的 l变化难以达到想要的控制效果,因此需要用到控制循环的跳转语句。实现控制循环的跳转需要变化难以达到想要的控制效果,因此需要用到控制循环的跳转语句。实现控制循环的跳转需要 用到用到rrak flcontinwerrak flcontinwe两个关键字。其中,两个关键字。其中,break break 是中断循环,是中断循环,continue continue 是跳出本次循环体的是跳出
13、本次循环体的 执行。执行。 l1. break1. break语句语句 l在循环结构中,可以用在循环结构中,可以用breakbreak语句跳出语句跳出 当前循环体,从而中断当前循环。在实际运用中,往往当前循环体,从而中断当前循环。在实际运用中,往往 是在循环体中使用某一个条件来选择是在循环体中使用某一个条件来选择 是否中断循环,即跳出当前循环,维面执行当前循环外是否中断循环,即跳出当前循环,维面执行当前循环外 的下一条语句。也就是说,当某个条件成立的时候,需要立即退出循环,不再运行循环中余下的下一条语句。也就是说,当某个条件成立的时候,需要立即退出循环,不再运行循环中余下 的代码,也不管循环控
14、制变量的条件测试的结果如何。使用的代码,也不管循环控制变量的条件测试的结果如何。使用brakbrak语句,语句, 即可让程序能按照要即可让程序能按照要 求执行要执行的代码。求执行要执行的代码。 l2. continue2. continue语句语句 lcontinuecontinue语句是对语句是对trraktrrak语句的补充。语句的补充。continuecontinue不是立即跳出循环体,而是当条件符合需要跳不是立即跳出循环体,而是当条件符合需要跳 转的时候,跳过该次循环结束前的语句,回到循环开头的条件测试部分,重新开始执行循环。转的时候,跳过该次循环结束前的语句,回到循环开头的条件测试部
15、分,重新开始执行循环。 同理,在实际运用中,往往是在循环体中使用某一个条件来选择是否跳转循环。同理,在实际运用中,往往是在循环体中使用某一个条件来选择是否跳转循环。 l项目实施项目实施 各小组根据项目选题及权订的项目方案,结合本节所学知识,比较程序设计几种基本结构的特点,利用几 种程序结构完成相应的程序编写,进一步完善该项目方案中的各项学习活动,并参照项目范例的样式,撰 写相应的项目成果报告。 l成果交流成果交流 各小组运用数字化学习工具,将所完成的项目成果,在小组或班级上进行展示与交流,共享创造、分享快 乐。 l活动评价活动评价 各小组根据项目选题、权订的项目方案、实施情况以及所形成的项目成
16、果,利用教科书附录2的“项目活 动评价表,开展项目学习活动评价。 l拓展:函数的定义与调用拓展:函数的定义与调用 在面对较大项目的时候,随着堆砌的代码越来越多,编程人员发现有很多功能重复的模块被反复地键入和 执行。因此需要考虑是否可以将这些功能具体且经常使用的代码段,从程序中抽离出来单独封装。于是, 函数的概念出现在编程语言里。在对函数的设计方面,我们可以向函数提供必要的参数输入,同时可以调 用函数获取所需的返回值。Python采用def作为关键词来定义一个函数,具体例子如下:定义和调用函数 getValue(b,r,n),根据本金b、年利率r和年数n,计算最终收益u。提示:v=b(1+r)。
17、 程序运行结果为:1276.2815625000003。 本章扼要回顾 l同学们通过本章学习,根据同学们通过本章学习,根据“程序设计基础程序设计基础”知识结构图,扼要回知识结构图,扼要回 顾,总结、归纳学过的内容,建立自己的知识结构体系。顾,总结、归纳学过的内容,建立自己的知识结构体系。 本章学业评价 同学们完成下列测试题(更多的测试题可以在教科书的配套学 习资源包中查看),并通过“本章扼要回顾”以及本章的项目 活动评价,综合评价自己在信息技术知识与技能.解决实际问 题的过程与方法。以及相关情感态度与价值观的形成等方面, 是否达到了本章的学习目标。 l1.1.单选题单选题 l(1)(1)在在P
18、ythonPython中,元素是无序不重复的是中,元素是无序不重复的是()() A.列表 B.元组 C.集合D.字符串 l(2)(2)在以下运算符中,优先级最低的运算符是在以下运算符中,优先级最低的运算符是()() A.* B. != C.+ D. = l(3)(3)有以下程序段有以下程序段: : l程序的运行结果为程序的运行结果为()() A.24 5 B.120 5 C.24 4 D.120 4 l2.2.思考题思考题 编写函数,接收一个正偶数为参数, 输出两个素数,并且这两个素数之和等于原来的正偶数。如果存在 多组符合条件的素数,则全部输出。 l3.3.情境题情境题 依法纳税是每一个公4民应尽的义务。同学们上网学习2018年8月31日第七次修正的中华人民共和国个人 所得税法,了解居民个人应纳税所得额的含义和个人所得税税率表(综合所得适用),试设计一个程序计 算以下人员应缴个人所得税额。 end