《03_4循环结构ppt课件.pptx》由会员分享,可在线阅读,更多相关《03_4循环结构ppt课件.pptx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、在此输入您的封面副标题03_4循环结构循环结构杭州师范大学杭州师范大学 虞歌虞歌 第第2页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构杭州师范大学杭州师范大学 虞歌虞歌 第第3页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构西绪福斯(西绪福斯(sisyphus)是希腊神话中的人物)是希腊神话中的人物,因,因触犯宙斯(触犯宙斯(Zeus)受到严酷的)受到严酷的惩罚惩罚。他他每天每天必须用尽全力将巨大的石头推上陡峭的高山,快到山顶时,石必须用尽全力将巨大的石头推上陡峭的高山,快到山顶时,石头会自动从他手中滑落,他只好重新再来一次,如此循环往复,没有穷尽。头
2、会自动从他手中滑落,他只好重新再来一次,如此循环往复,没有穷尽。对于对于我们人类,循环是不自然的,谁没事儿会给自己编个循环像机器人一样我们人类,循环是不自然的,谁没事儿会给自己编个循环像机器人一样生活生活呢?呢?计算机计算机最擅长的就是重复,不是最擅长的就是重复,不是吗?吗?一个循环就是一组重复执行的一个循环就是一组重复执行的语句。语句。循环循环是解决许多问题的基本控制结构。是解决许多问题的基本控制结构。Python提供了两种类型的循环语句:提供了两种类型的循环语句:while循环和循环和for循环。循环。while循环是一种条件控制循环,根据条件的真假来控制循环次数。循环是一种条件控制循环,
3、根据条件的真假来控制循环次数。for循环是一种计数器控制循环,根据循环是一种计数器控制循环,根据计数器的计数来控制循环计数器的计数来控制循环次数。次数。杭州师范大学杭州师范大学 虞歌虞歌 第第4页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构while语句语句语法语法如下:如下:while 条件条件: 循环体循环体条件条件两边没有圆括号,两边没有圆括号,:是是while语句的组成部分。语句的组成部分。循环体循环体由一条或多条语句由一条或多条语句构成,必须相对于构成,必须相对于while向右向右缩进(一般是向右缩进缩进(一般是向右缩进4个空格个空格)。多条语句的话,必。多条语
4、句的话,必须向右缩进相同的空格。通过缩进,须向右缩进相同的空格。通过缩进,Python能够识别能够识别出出循环体循环体是隶属于是隶属于while的。的。对循环体的一次执行称为一个循环周期。对循环体的一次执行称为一个循环周期。while循环循环中中,在每个循环周期前进行条件检测,如果一开始条,在每个循环周期前进行条件检测,如果一开始条件检测的结果为件检测的结果为“假假”,则循环体一次都不,则循环体一次都不执行。执行。杭州师范大学杭州师范大学 虞歌虞歌 第第5页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构德国数学家高斯德国数学家高斯,上,上小学时,老师出了一道难题,计算小学时
5、,老师出了一道难题,计算1+2+3+99+100,高斯很快就在自己的小石板上写出了答案高斯很快就在自己的小石板上写出了答案5050,老师非常惊讶,高斯怎么算,老师非常惊讶,高斯怎么算得这么快?原来,高斯不是一个数一个数按部就班地加起来的,而是发现这得这么快?原来,高斯不是一个数一个数按部就班地加起来的,而是发现这些数字有一个规律,一头一尾依次两个数相加,它们的和都是一样的:些数字有一个规律,一头一尾依次两个数相加,它们的和都是一样的:1+100=101,2+99=101,3+98=101,50+51=101,一共是,一共是50个个101。所。所以,他很快就把答案算出来了。以,他很快就把答案算出
6、来了。杭州师范大学杭州师范大学 虞歌虞歌 第第6页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构如何用计算机解?如何用计算机解?用一个用一个变量变量total保存保存累加和,其初始值为累加和,其初始值为0。对于对于1、2、3、100中的每一个整数中的每一个整数i,依次把它加入到,依次把它加入到total中中。第第1次,次,total为为0、i为为1,total + i为为1,结果保存回,结果保存回total;第第2次,次,total为为1、i为为2,total + i为为3,结果保存回,结果保存回total;第第100次,次,total为为4950、i为为100,total
7、 + i为为5050,结果保存回,结果保存回total。问题抽象为统一的形式:问题抽象为统一的形式:total = total + i,采用,采用while循环重复地计算循环重复地计算。杭州师范大学杭州师范大学 虞歌虞歌 第第7页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构用户用户从键盘输入若干个整数,输出它们的和。从键盘输入若干个整数,输出它们的和。用变量用变量total保存保存累加和,其初始值为累加和,其初始值为0;键盘上输入整数键盘上输入整数value,依次把它加入到,依次把它加入到total中中;问题抽象为统一的形式:问题抽象为统一的形式:total = tota
8、l + value,采用,采用while循环重复地计算循环重复地计算。输入输入的整数的整数数量数量未知未知,要,要自己设计自己设计循环结束条件。循环结束条件。引入引入一个用来结束循环的特殊一个用来结束循环的特殊标志(哨兵),标志(哨兵),在循环执行过程中,遇到该标在循环执行过程中,遇到该标志,循环就结束志,循环就结束了。标志了。标志不能是用户要累加的整数不能是用户要累加的整数值。值。0不会不会对最后的累加和对最后的累加和产生影响产生影响。本题用来。本题用来结束循环的标志是结束循环的标志是0杭州师范大学杭州师范大学 虞歌虞歌 第第8页页Python程序设计基础程序设计基础程序的控制结构程序的控制
9、结构要求要求用户从键盘输入一个正整数,计算并输出该整数中各位数字的和。例如,用户从键盘输入一个正整数,计算并输出该整数中各位数字的和。例如,整数整数932中各位数字的和为中各位数字的和为14(9+3+2)。)。用用变量变量total保存整数中各位数的和,其初始值为保存整数中各位数的和,其初始值为0;通过通过循环累加各位数字,最后输出结果。循环累加各位数字,最后输出结果。如何如何将一个正整数中的各位数字拆开。任何整数将一个正整数中的各位数字拆开。任何整数n的最后一位是它本身除以的最后一位是它本身除以10所所得到的余数,即得到的余数,即n%10可以得到整数可以得到整数n的个位数字;而的个位数字;而
10、n/10可以得到整数可以得到整数n除了最除了最后一位的其他数字。例如,后一位的其他数字。例如,932%10得到得到2,932/10得到得到93。在在一个循环周期中,将一个循环周期中,将n%10的值累加到的值累加到total中,再中,再n/10。反复运用这两个表。反复运用这两个表达式就可以得到整数达式就可以得到整数n中各位数字的和。每个循环周期中,都中各位数字的和。每个循环周期中,都n/10,最终将使,最终将使n为为0。只要。只要n的值大于的值大于0,就继续循环,就继续循环。杭州师范大学杭州师范大学 虞歌虞歌 第第9页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构杭州师范大学
11、杭州师范大学 虞歌虞歌 第第10页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构随机生成一个随机生成一个0, 100之间的整数(称为神秘数),提示用户连续输入数字,直之间的整数(称为神秘数),提示用户连续输入数字,直至其与神秘数相等;对于用户输入的数字,会提示它比神秘数大或小,便于用至其与神秘数相等;对于用户输入的数字,会提示它比神秘数大或小,便于用户更明智地选择下一个输入的数字。户更明智地选择下一个输入的数字。杭州师范大学杭州师范大学 虞歌虞歌 第第11页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构使用一个控制变量控制循环执行的次数,这种类型的循环被
12、称为计数器控使用一个控制变量控制循环执行的次数,这种类型的循环被称为计数器控制的循环制的循环。for语句语句的语法的语法:for var in sequence: 循环体循环体:是是for语句的组成部分。语句的组成部分。循环体循环体由一条或多条语句由一条或多条语句构成构成,必须相对,必须相对于于for向右向右缩进(一般是向右缩进缩进(一般是向右缩进4个个空格)。多条语句的话,必须向右缩进相同的空格。通过缩进,空格)。多条语句的话,必须向右缩进相同的空格。通过缩进,Python能够识能够识别出循环体是别出循环体是隶属于隶属于for的。的。序列序列sequence中保存着一组中保存着一组元素元素,
13、元素的个数决定了循环重复的次数,因此,元素的个数决定了循环重复的次数,因此,for循环的循环次数是确定的。循环的循环次数是确定的。for循环依次从序列中取出元素,赋予变量循环依次从序列中取出元素,赋予变量var,var每取序列每取序列sequence中的一个元素值,就执行一次循环体。中的一个元素值,就执行一次循环体。杭州师范大学杭州师范大学 虞歌虞歌 第第12页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构range函数是函数是Python提供的内置提供的内置函数,生成函数,生成一个整数序列一个整数序列。range函数与函数与for语句语句关系密切。关系密切。range函数
14、的参数必须为整数函数的参数必须为整数range(a)等价于等价于range(0, a),产生连续整数序列:,产生连续整数序列:0、1、.、a 1range(a, b),产生连续整数序列:,产生连续整数序列:a、a + 1、.、b 2、b 1range(a, b, k),步长,步长k,若,若k为正数,产生整数序列:为正数,产生整数序列:a、a + k、a + 2k、.,最后一,最后一个数小于个数小于b;若;若k为负数,产生整数序列:为负数,产生整数序列:a、a + k、a + 2k、.,最后一,最后一个数大于个数大于b。杭州师范大学杭州师范大学 虞歌虞歌 第第13页页Python程序设计基础程序
15、设计基础程序的控制结构程序的控制结构编写程序,求编写程序,求1+2+3+.+100的和。的和。杭州师范大学杭州师范大学 虞歌虞歌 第第14页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构从从键盘输入一个正整数键盘输入一个正整数n,判断它是否是素数。如果一个正整数只能被,判断它是否是素数。如果一个正整数只能被1和它和它本身整除,则这个正整数就是素数。本身整除,则这个正整数就是素数。1不是素数,不是素数,2是素数。是素数。根据素数的定义,对于给定的正整数根据素数的定义,对于给定的正整数n,n是素数的条件是不能被是素数的条件是不能被2、3、n-1整除整除实际上,任何大于实际上,任
16、何大于n/2的值不可能被的值不可能被n整除,因此整除,因此n是素数的条件可以简化为不是素数的条件可以简化为不能被能被2、3、n/2整除整除进一步进一步可以证明可以证明n是素数的条件是不能被是素数的条件是不能被2、3、 整除整除判定素数判定素数n杭州师范大学杭州师范大学 虞歌虞歌 第第15页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构判定素数判定素数杭州师范大学杭州师范大学 虞歌虞歌 第第16页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构用户用户从键盘输入若干个整数,输出它们的和。从键盘输入若干个整数,输出它们的和。不知道不知道输入的整数数量输入的整数
17、数量,无法,无法事先确定循环次数事先确定循环次数。引入。引入一个用来结束循环的特殊一个用来结束循环的特殊标志,在循环执行过程中,遇到该标志,循环就结束了。标志,在循环执行过程中,遇到该标志,循环就结束了。在在for语句中,可以使用语句中,可以使用iter函数:函数:iter(object, sentinel),object是一个可调用对是一个可调用对象(如函数),这里就是象(如函数),这里就是input函数(仅函数名字就可以,无需圆括号),函数(仅函数名字就可以,无需圆括号), sentinel是一个结束标志(这里是空字符串是一个结束标志(这里是空字符串),重复调用),重复调用object,直
18、至遇到,直至遇到sentinel结束,返回一个可迭代对象(包含输入的值)结束,返回一个可迭代对象(包含输入的值)。杭州师范大学杭州师范大学 虞歌虞歌 第第17页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构pass语句其实是空语句,不做任何事情,只起占位的作用。语句其实是空语句,不做任何事情,只起占位的作用。break语句用于某种语句用于某种情况发生时情况发生时提前结束循环。提前结束循环。循环中的循环中的break总是需要和总是需要和if语语句配合句配合使用。使用。正常情况下执行正常情况下执行20次循环。实际执行了次循环。实际执行了14次次循环。在第循环。在第14次循环时次
19、循环时,total的的值大于值大于100了,执行了,执行break语句,结束循环,输出语句,结束循环,输出结果。结果。杭州师范大学杭州师范大学 虞歌虞歌 第第18页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构continue语句用语句用来使程序执行流程跳过当次循环,继续下一次循环。循环中的来使程序执行流程跳过当次循环,继续下一次循环。循环中的continue一般也需要和一般也需要和if语句配合语句配合使用使用。continue语句和语句和break语句的区别是:语句的区别是:continue只只结束当次结束当次循环的执行,继续下循环的执行,继续下一次,而不是终止整个循环。
20、而一次,而不是终止整个循环。而break则是结束整个循环的则是结束整个循环的执行。执行。正常情况下执行正常情况下执行20次循环。但在第次循环。但在第10、11次次循环时,会执行循环时,会执行continue语句,跳语句,跳过当次过当次循循环,环,continue后面的后面的语句语句total = total+i不会不会执行,即执行,即i的值的值10和和11不会累加不会累加到到total中中,继,继续下一次续下一次循环。循环。杭州师范大学杭州师范大学 虞歌虞歌 第第19页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构一一个循环语句的循环体个循环语句的循环体中包含另中包含另一个
21、循环语句时,就称为一个循环语句时,就称为嵌套循环嵌套循环嵌套循环嵌套循环由一个外层循环和一个或多个内层循环组成。外层循环由一个外层循环和一个或多个内层循环组成。外层循环每循环一每循环一次都次都会重新进入内层循环会重新进入内层循环,并重新开始执行内层循环,并重新开始执行内层循环显示乘法口诀表。显示乘法口诀表。杭州师范大学杭州师范大学 虞歌虞歌 第第20页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构1百元买百元买1百只鸡,其中公鸡百只鸡,其中公鸡5元元1只、母鸡只、母鸡3元元1只、小鸡只、小鸡1元元3只,要求每种鸡都必须只,要求每种鸡都必须有,则公鸡、母鸡和小鸡应各买几只有,
22、则公鸡、母鸡和小鸡应各买几只。穷举法基本穷举法基本思想是不重复、不遗漏地列举所有可能情况,从中寻找满足条件的结果思想是不重复、不遗漏地列举所有可能情况,从中寻找满足条件的结果。用用穷举法来解决的问题应具有两个特点:有明显的穷举范围且穷举的数目应该是有限穷举法来解决的问题应具有两个特点:有明显的穷举范围且穷举的数目应该是有限的;可以按某种规则的;可以按某种规则列举所有情况。列举所有情况。一般采用循环一般采用循环来列举所有情况来列举所有情况考虑公鸡、母鸡和小鸡数量的取值范围考虑公鸡、母鸡和小鸡数量的取值范围三种鸡都必须有,购买公鸡的钱最多为三种鸡都必须有,购买公鸡的钱最多为100 - 3 - 1
23、= 96元,取元,取5的倍数,得的倍数,得95元,所元,所以公鸡数量的取值范围为以公鸡数量的取值范围为119只只同理,母鸡数量的取值范围为同理,母鸡数量的取值范围为131只只购买小鸡的钱最多为购买小鸡的钱最多为100 5 3 = 92元,可以购买元,可以购买276只,但鸡的总数量为只,但鸡的总数量为100只,只,小鸡数量应小于等于小鸡数量应小于等于98,且小鸡数量为,且小鸡数量为3的倍数的倍数,小鸡,小鸡数量的取值范围为数量的取值范围为396只只杭州师范大学杭州师范大学 虞歌虞歌 第第21页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构对于每种鸡的取值都要反复地试,最后确定
24、正好满足对于每种鸡的取值都要反复地试,最后确定正好满足100元买元买1百只鸡的组合。因百只鸡的组合。因此每种鸡都要按照各自的取值范围循环,可以采用三重此每种鸡都要按照各自的取值范围循环,可以采用三重循环循环假设假设cock表示公鸡,表示公鸡,hen表示母鸡,表示母鸡,chick表示小鸡,则得到如下条件表示小鸡,则得到如下条件: cock + hen + chick = 100 cock * 5 + hen * 3 + chick / 3 = 100 chick % 3 = 0 程序程序要寻找同时满足上述条件的正整数要寻找同时满足上述条件的正整数解解杭州师范大学杭州师范大学 虞歌虞歌 第第22页
25、页Python程序设计基础程序设计基础程序的控制结构程序的控制结构由于由于cock + hen + chick = 100,确定了,确定了cock和和hen的值,也就确定了的值,也就确定了chick的值,的值,可以省略第三重可以省略第三重chick循环循环。 cock * 5 + hen * 3 + (100 - cock hen) / 3 = 100 (100 - cock hen) % 3 = 0杭州师范大学杭州师范大学 虞歌虞歌 第第23页页Python程序设计基础程序设计基础程序的控制结构程序的控制结构在在Python中,中,while语句语句或或for语句语句都都有一个可选的有一个可选的else语句。语句。当循环正常结束后,会执行当循环正常结束后,会执行else语句。语句。循环体中的循环体中的break语句或语句或return语句会跳过执行语句会跳过执行else语句。语句。