资源简介 (共20张PPT)第7课 循环语句信息技术初中八年级第三册 青岛版学习导入学习目标:1、认识循环结构,掌握for循环和while循环的用法。2、理解循环变量在循环中的作用,能够熟练应用range()函数。3、通过问题探究,体验计算机利用循环结构解决问题的方法,体验算法的巧妙运用。活动一、初识for循环任务一:用*代替故事中的麦粒,每一行代表一格,如果每行一粒麦粒,设计程序,打印64行麦粒。使用for循环语句打印64行“*”:for i in range(64):print("*")【自主探究】1、for循环的基本结构2、range()函数以及循环变量i在循环中的作用是什么?for循环语句的基本格式:for <循环变量> in <遍历结构>:<语句块>range()函数表示一个序列,默认从0开始,range(64)则产生0-63的一个序列。循环变量 i是一个自定义变量,每次循环等于range()序列中的一个数,直到循环结束。任务二:如果第一行一粒麦粒,第二行两粒,第三行三粒……改变每行“*”的数量,打印出64行的麦粒。【小组合作】for i in range(1,65): #输出64行print("*"*i) #字符串相乘小尝试:改变range()函数的数值, 简单了解步长的概念。range(1,64) range(65,1,-1)range(x,y,z) 其中x表示初值,y表示终值,z表示步长任务三:如果按照第1格放1粒麦粒,第2格放2粒麦粒,第3格放4粒,第4格放8粒,以后每一格都是前一格的2倍,计算出64格棋盘所放的麦粒总数。填写下表,找一找每格麦粒数和循环次数的关系。循环变量i 单格麦粒数n 总数s0 1 11 n=2**12 n=2**23 n=2**i45…… …… ……观察规律,写出n和s的数学表达式:n=2**is=s+n活动二、棋盘与麦粒尝试完善程序,进行编译测试:s=1for i in range(1,64):n=2**is=s+nprint(s)在古罗马时期,恺撒大帝就开始使用一种文字加密方式—恺撒密码。他的基本方法是通过把字母按字母表的顺序,移动一定的位数来实现加密和解密,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移,偏移后被替换成密文。例如:当偏移量是3的时候,所有的字母a将被替换成d, b变成e,c变成f,以此类推。请你设计一个程序,当输入一串小写字母(包含空格)时,转换成偏移量为3的密文(空格不加密),最后输出加密后的结果。活动三、恺撒密码1、字符串序号化2、遍历字符串:在交互模式下输入以下语句,查看运行的结果。for i in "phthon":print(i)for循环语句中,遍历结构除了以上的range()函数,还可以是字符串、文件、列表、元组等可遍历的类型。3、使用find()函数测试字符串是否存在:存在时返回索引值,否则返回-1alphabet="abcdefghijklmnopqrstuvwxyz"print(alphabet.find(”a”))print(alphabet.find(”z”))alphabet="abcdefghijklmnopqrstuvwxyzabcdefg"str1=input("请输入明文(小写字母和空格):")str2="" #定义密文变量#遍历要加密的字符串for cursor in str1:#判断是否为空格,如果为空格则不加密if cursor==" ":str2=str2+" "continue #跳出当前循环,进入下一循环#在字母表中查找当前字母的位置n=alphabet.find(cursor)#如果当前字母没有找到提示错误if n==-1:print("输入有误!")break #结束整个循环else:#对当前字母进行加密,添加到密文中str2=str2+alphabet[n+3]print("加密后的文字",str2)完善程序,编译运行阅读P45页内容,初步了解:1、while循环语句的基本结构活动四、折纸测珠峰(while循环语句)2、画出循环语句的流程图while循环的格式如下:while<条件>:<语句块1>else:<语句块2>【阅读教材】珠穆朗玛峰简称“珠峰”,珠峰海拔约为8848米,是世界第一高峰。如果有一张足够大的纸(厚0.1毫米),对折多少次,纸张的厚度可以超过珠穆朗玛峰的高度 【自主探究】分析问题:定义变量i为循环次数,height为纸张厚度,数学表达式: height = 2**i/10000 (毫米换算成米)i= 0height = 0while height < 8848:i = i + 1 #循环次数height = 2**i/10000 #高度print("经过",i,"次折纸")print("高度达到:",height,"米")“百钱买百鸡”问题出自我国古代数学家张丘建的《算经》,题目要求用100文钱买来100只鸡,公鸡5文钱1只,母鸡3文钱1只,小鸡1文钱3只。在这100只鸡中,公鸡、母鸡、小鸡各是多少只 你能设计程序,用计算机来解这一问题吗 动手试一试吧!1、用数学方程式列出题目中的数量关系。说一说:公鸡、母鸡和小鸡的取值范围是多少 设公鸡、母鸡、小鸡各有x,y, z只。x+y+z=1005x+3y+z/3=100活动五、百钱买百鸡“百钱买百鸡”问题参考程序:你能想到什么方法对程序进行优化,减少循环的层数,降低循环的次数,提高程序的运行效率 1、z的取值可以用“100-x-y"来确定,这样可以不必遍历z2、x的取值范围1到19, Y的取值范围1到32。for x in range(1,100):for y in range(1,100):for z in range(3,100,3):If 5*x+3*y+z/3==100 and x+y+z==100:print(x,y,z)在已知遍历次数的情况下,使用for循环语句进行遍历;在无法确定遍历次数时,使用while循环语句。【小组合作】想一想 while循环和for循环有什么相同点 又有哪些不同点 折纸测珠峰while height < 8844:i = i + 1height = 2**i/10000百钱买百鸡for x in range(1,100):for y in range(1,100):for z in range(3,100,3):【拓展延伸】猜测真实数据某单据因日久破损,一数据十分模糊,缺少了千位数和十位数,只能推测为14x9x1,已知该数据是57或67的倍数,请设计一个程序,输出所有满足条件的数。#猜猜真实数据for i in range(0,10):for j in range(0,10):x=140901+i*1000+j*10if x%57==0 or x%67==0:print("数据可能是:",x)课堂小结同学们,请你回想一下,这节课你有什么收获?谢谢 展开更多...... 收起↑ 资源预览