资源简介 中小学教育资源及组卷应用平台新世纪版信息技术八年级下册第十二课变化无穷的灯教学设计课题变化无穷的灯单元第一单元学科信息技术年级八年级学习目标知识目标:学习字符串的运算,掌握几种常用的字符串运算。技能目标:进一步熟悉eval函数的使用方法;进一步熟悉列表的操作。情感目标:通过对编程的学习,培养学生分析理解程序的能力。重点自主学习Python命令、函数的用法。难点本课所用到的命令比较多,也比较难理解。教学过程教学环节教师活动学生活动设计意图导入新课上节课我们学习了,通过编程做石头剪刀布的游戏。这节课,我们学习通过编程,可以让micro:bit点阵屏幕呈现无穷的变化。观察思考激发学生学习兴趣并快速进入学习状态讲授新课一、全屏呼吸灯全屏呼吸灯让整个点阵屏幕整齐划一地呈现呼吸灯的效果。【例题1】编写程序,让micro:bit屏幕变成呼吸灯。其设计思路是:设计10个不同亮度的点阵图案,然后循环显示这10个图案,让点阵屏幕呈现呼吸灯的效果。程序如下:frommicrobitimporti0=Image('00000:00000:00000:00000:00000')i1=Image('11111:11111:11111:11111:11111')i2=Image('22222:22222:22222:22222:22222')i3=Image('33333:33333:33333:33333:33333')i4=Image('44444:44444:44444:44444:44444')i5=Image('55555:55555:55555:55555:55555')i6=Image('66666:66666:66666:66666:66666')i7=Image('77777:77777:77777:77777:77777')i8=Image('88888:88888:88888:88888:88888')i9=Image('99999:99999:99999:99999:99999')images=[i0,i1,i2,i3,i4,i5,i6,i7,i8,i9]display.show(images,delay=500,wait=True,loop=True,clear=True)如果用图形化的方式编程,这个案例比较容易,但为了掌握更多的编程知识特意将图形化的方式编写的程序用代码方式进行了优化。具体来说:"00000"可以表述成"0"5因此:img="00000:00000:00000:00000:00000"可以表示成:img=("0"5+":")4+"0"5于是我们可以用循环语句来生成呼吸灯的每一个图案,并将该图案加入到列表images中:images.append(img)往列表中加入元素是经常会遇到的操作,命令格式如下:列表名称.append(往列表中加入的元素)因此上面的程序可以优化为:frommicrobitimportimages=[]foriinrange(10):ix=(str(i)5+':')4+str(i)5img=Image(ix)images.append(img)display.show(images,delay=500,wait=True,loop=True,clear=True)小博士Python字符串的几种常见运算假设:a="Hello"b="Python"则:试一试修改【例题1】,使呼吸灯的闪烁规律变为“逐渐变亮→逐渐变暗”。frommicrobitimportimages=[]foriinrange(10): ix=(str(i)5+':')4+str(i)5 img=Image(ix) images.append(img)foriinrange(9,0,-1): ix=(str(i)5+':')4+str(i)5 img=Image(ix) images.append(img)display.show(images,delay=100,wait=True,loop=True,clear=True)二、走马灯走马灯是指循环显示的一组灯。【例题2】设计一个灯光绕着mico:bit点阵屏幕的四周移动的走马灯。这个走马灯实际上是一个有16幅画面的动画。程序如下:frommicrobitimportimages=[]i1=Image('90000:00000:00000:00000:00000')i2=Image('09000:00000:00000:00000:00000')i3=Image('00900:00000:00000:00000:00000')i4=Image('00090:00000:00000:00000:00000')i5=Image('00009:00000:00000:00000:00000')i6=Image('00000:00009:00000:00000:00000')i7=Image('00000:00000:00009:00000:00000')i8=Image('00000:00000:00000:00009:00000')i9=Image('00000:00000:00000:00000:00009')i10=Image('00000:00000:00000:00000:00090')i11=Image('00000:00000:00000:00000:00900')i12=Image('00000:00000:00000:00000:09000')i13=Image('00000:00000:00000:00000:90000')i14=Image('00000:00000:00000:90000:00000')i15=Image('00000:00000:90000:00000:00000')i16=Image('00000:90000:00000:00000:00000')images.append(eval(ix))display.show(images,delay=500,wait=True,loop=True,clear=True)在上面的程序中,images是包含了16幅画的列表由于创建images的表述非常长,因此上面的程序用了一个for循环来创建images列表遍历1~16,依次将16个画面添加到列表images。foriinrange(1,17,1):ix='i'+str(i)images.append(eval(ix))在上面的程序片段中,ix是一个变量名字符串要用eval(ix)才能将字符串的引号去掉,转变成变量名:函数eval(“字符串str”)的作用是:将“字符串str”转换成表达式,相当于把字符串外面的引号去掉。【例题3】设计一个遍历mico:bit点阵屏幕所有LED灯的走马灯。点阵屏幕上有25个LED灯,分别用0~24来编号,假设某LED灯的编号是n,那么它的x、y坐标就是:x=n%5y=int(n/5)其中%是求余运算,int()是取整运算。例如:n=10,那么x=10%5,即x=0;y=int(10/5),即y=2。程序用n来控制亮灯的位置,当n超过25时,应该将n重置为0,也就是说可以对n进行求余运算:n=n%25。程序如下:frommicrobitimportimportrandomn=0whileTrue:x=n%5y=int(n/5)display.set_pixel(x,y,9)n=(n+1)if(n>24):n=0sleep(100)display.set_pixel(x,y,0)试一试设计一个走马灯。例如,修改上面的程序,将n=n+1修改为n=n+3,就得到了一个新的走马灯程序如下:frommicrobitimportn=1whileTrue:x=(n%5)y=int(n/5)display.set_pixel(x,y,9)n=(n+3)%25sleep(200)display.set_pixel(x,y,0)如果要得到两盏灯往前移动的效果,只要在程序中增加一盏相邻的灯。程序如下:frommicrobitimportn=0whileTrue:x=(n%5)y=int(n/5)display.set_pixel(x,y,9)n=(n+1)%25x1=(n%5)y1=int(n/5)display.set_pixel(x1,y1,9)sleep(200)display.set_pixel(x,y,0)display.set_pixel(x1,y1,0)三、灯光瀑布【例题4】设计一个灯光瀑布。程序如下:frommicrobitimportn=0whileTrue:n=(n-1)%10img=str(n)5foriinrange(4):t=(n+i)%10img=img+':'+str(t)5display.show(Image(img))sleep(50)ifbutton_b.was_pressed():break在上面的程序中语句n=(n+1)%10的作用与下列语句相同:n=n+1n=n%10程序通过如下for循环,不断生成点阵屏幕画面的列表:img=str(n)5foriinrange(4):t=(n+i)%10img=img+':'+str(t)5然后显示50毫秒,通过while循环,形成灯光瀑布的视觉效果:display.show(Image(img))sleep(50)运行程序,可以看到点阵屏幕上的灯光像瀑布一样倾泻下来。当按下按钮B,程序就终止运行。可以看到程序结束前点阵屏幕上最后显示的灯光。当按下micro:bit的复位键后,程序又会重新运行。在上面的程序中,利用了求余运算来使得变量n在9和0之间不断循环。求余运算%的格式和功能如下:格式:a%b功能:求a除以b的余数。例如:whileTrue循环中,每次循环生成一个点阵屏幕,点阵屏幕各LED灯的亮度由for循环生成。详情如下:同样的效果也可以由下面的程序实现:试一试你能参照【例题4】,做一个全屏呼吸灯吗?参考程序如下:frommicrobitimportn=0whileTrue:n=(n+1)%10img=(str(n)5+":")4+str(n)5display.show(Image(img))sleep(50)通过教师的讲解,以小组合作的方式,开展探讨交流,完成任务。通过老师演示学生动手操作,提高动手能力。小组交流、分享学生动手实践操作,学生小组间讨论,共同完成任务。通过老师演示学生动手操作,提高动手能力。小组交流、分享通过教师的讲解,以小组合作的方式,开展探讨交流,完成任务。学生动手实践操作,学生小组间讨论,共同完成任务通过教师的讲解,以小组合作的方式,开展探讨交流,完成任务。通过教师的讲解,以小组合作的方式,开展探讨交流,完成任务。学生动手实践操作,学生小组间讨论,共同完成任务通过小组合作,加强学生组内团结、加强学生组内团结、共同完成任务,培养学生动手操作能力,并且锻炼学生的语言组织能力和表达的能力。加强学生组内团结、共同完成任务,培养学生组间合作能力,并且炼动手能力培养学生动手操作能力,并且锻炼学生的语言组织能力和表达的能力。培养学生组间合作能力,并且炼动手能力培养学生组间合作能力,并且炼动手能力培养学生动手操作能力,并且锻炼学生的语言组织能力和表达的能力课堂小结分小组总结归纳,教师补充。各组汇报总结,其他小组成员做补充。锻炼学生的总结能力,逻辑思维、语言表达能力。板书一、全屏呼吸灯二、走马灯三、灯光瀑布21世纪教育网www.21cnjy.com精品试卷·第2页(共2页)HYPERLINK"http://www.21cnjy.com/"21世纪教育网(www.21cnjy.com)(共31张PPT)新世纪版信息技术八年级下册第十二课变化无穷的灯新知导入上节课我们学习了,通过编程做石头剪刀布的游戏。这节课,我们学习通过编程,可以让micro:bit点阵屏幕呈现无穷的变化。新知讲解一、全屏呼吸灯全屏呼吸灯让整个点阵屏幕整齐划一地呈现呼吸灯的效果。【例题1】编写程序,让micro:bit屏幕变成呼吸灯。其设计思路是:设计10个不同亮度的点阵图案,然后循环显示这10个图案,让点阵屏幕呈现呼吸灯的效果。新知讲解frommicrobitimporti0=Image('00000:00000:00000:00000:00000')i1=Image('11111:11111:11111:11111:11111')i2=Image('22222:22222:22222:22222:22222')i3=Image('33333:33333:33333:33333:33333')i4=Image('44444:44444:44444:44444:44444')i5=Image('55555:55555:55555:55555:55555')i6=Image('66666:66666:66666:66666:66666')i7=Image('77777:77777:77777:77777:77777')i8=Image('88888:88888:88888:88888:88888')i9=Image('99999:99999:99999:99999:99999')images=[i0,i1,i2,i3,i4,i5,i6,i7,i8,i9]display.show(images,delay=500,wait=True,loop=True,clear=True)程序如下:新知讲解如果用图形化的方式编程,这个案例比较容易,但为了掌握更多的编程知识特意将图形化的方式编写的程序用代码方式进行了优化。具体来说:"00000"可以表述成"0"5因此:img="00000:00000:00000:00000:00000"可以表示成:img=("0"5+":")4+"0"5新知讲解于是我们可以用循环语句来生成呼吸灯的每一个图案,并将该图案加入到列表images中:images.append(img)往列表中加入元素是经常会遇到的操作,命令格式如下:列表名称.append(往列表中加入的元素)新知讲解因此上面的程序可以优化为:frommicrobitimportimages=[]foriinrange(10):ix=(str(i)5+':')4+str(i)5img=Image(ix)images.append(img)display.show(images,delay=500,wait=True,loop=True,clear=True)新知讲解小博士Python字符串的几种常见运算假设:a="Hello"b="Python"则:操作符描 述实 例+字符串连接〉〉〉a+b'HelloPython'重复输出字符串〉〉〉a2'HelloHello'[]通过索引获取字符串中字符〉〉〉a[1]'e'[:]截取字符串中的一部分〉〉〉a[1:4]'ell'新知讲解试一试修改【例题1】,使呼吸灯的闪烁规律变为“逐渐变亮→逐渐变暗”。frommicrobitimportimages=[]foriinrange(10): ix=(str(i)5+':')4+str(i)5 img=Image(ix) images.append(img)foriinrange(9,0,-1): ix=(str(i)5+':')4+str(i)5 img=Image(ix) images.append(img)display.show(images,delay=100,wait=True,loop=True,clear=True)新知讲解这个走马灯实际上是一个有16幅画面的动画。走马灯是指循环显示的一组灯。【例题2】设计一个灯光绕着mico:bit点阵屏幕的四周移动的走马灯。二、走马灯新知讲解程序如下:frommicrobitimportimages=[]i1=Image('90000:00000:00000:00000:00000')i2=Image('09000:00000:00000:00000:00000')i3=Image('00900:00000:00000:00000:00000')i4=Image('00090:00000:00000:00000:00000')i5=Image('00009:00000:00000:00000:00000')i6=Image('00000:00009:00000:00000:00000')i7=Image('00000:00000:00009:00000:00000')i8=Image('00000:00000:00000:00009:00000')i9=Image('00000:00000:00000:00000:00009')i10=Image('00000:00000:00000:00000:00090')i11=Image('00000:00000:00000:00000:00900')i12=Image('00000:00000:00000:00000:09000')i13=Image('00000:00000:00000:00000:90000')i14=Image('00000:00000:00000:90000:00000')i15=Image('00000:00000:90000:00000:00000')i16=Image('00000:90000:00000:00000:00000')images.append(eval(ix))display.show(images,delay=500,wait=True,loop=True,clear=True)新知讲解在上面的程序中,images是包含了16幅画的列表由于创建images的表述非常长,因此上面的程序用了一个for循环来创建images列表遍历1~16,依次将16个画面添加到列表images。foriinrange(1,17,1):???ix='i'+str(i)???images.append(eval(ix))新知讲解函数eval(“字符串str”)的作用是:在上面的程序片段中,ix是一个变量名字符串要用eval(ix)才能将字符串的引号去掉,转变成变量名:将“字符串str”转换成表达式,相当于把字符串外面的引号去掉。新知讲解点阵屏幕上有25个LED灯,分别用0~24来编号,假设某LED灯的编号是n,那么它的x、y坐标就是:x=n%5y=int(n/5)【例题3】设计一个遍历mico:bit点阵屏幕所有LED灯的走马灯。其中%是求余运算,int()是取整运算。新知讲解例如:n=10,那么x=10%5,即x=0;y=int(10/5),即y=2。程序用n来控制亮灯的位置,当n超过25时,应该将n重置为0,也就是说可以对n进行求余运算:n=n%25。新知讲解程序如下:frommicrobitimportimportrandomn=0whileTrue:x=n%5y=int(n/5)display.set_pixel(x,y,9)n=(n+1)if(n>24):n=0sleep(100)display.set_pixel(x,y,0)新知讲解试一试设计一个走马灯。新知讲解例如,修改上面的程序,将n=n+1修改为n=n+3,就得到了一个新的走马灯程序如下:frommicrobitimportn=1whileTrue:???x=(n%5)???y=int(n/5)display.set_pixel(x,y,9)???n=(n+3)%25???sleep(200)???display.set_pixel(x,y,0)新知讲解如果要得到两盏灯往前移动的效果,只要在程序中增加一盏相邻的灯。程序如下:frommicrobitimportn=0whileTrue:???x=(n%5)???y=int(n/5)???display.set_pixel(x,y,9)???n=(n+1)%25x1=(n%5)??y1=int(n/5)display.set_pixel(x1,y1,9)???sleep(200)???display.set_pixel(x,y,0)???display.set_pixel(x1,y1,0)新知讲解frommicrobitimportn=0whileTrue:n=(n-1)%10img=str(n)5foriinrange(4):【例题4】设计一个灯光瀑布。程序如下:三、灯光瀑布t=(n+i)%10img=img+':'+str(t)5display.show(Image(img))sleep(50)ifbutton_b.was_pressed():break新知讲解语句n=(n+1)%10的作用与下列语句相同:n=n+1n=n%10程序通过如下for循环,不断生成点阵屏幕画面的列表:在上面的程序中img=str(n)5foriinrange(4):???t=(n+i)%10???img=img+':'+str(t)5新知讲解然后显示50毫秒,通过while循环,形成灯光瀑布的视觉效果:display.show(Image(img))sleep(50)运行程序,可以看到点阵屏幕上的灯光像瀑布一样倾泻下来。新知讲解当按下micro:bit的复位键后,程序又会重新运行。当按下按钮B,程序就终止运行。可以看到程序结束前点阵屏幕上最后显示的灯光。在上面的程序中,利用了求余运算来使得变量n在9和0之间不断循环。新知讲解格式:a%b功能:求a除以b的余数。求余运算%的格式和功能如下:例如:表达式-1%100%101%102%10…7%108%109%1010%10值9012…7890新知讲解whileTrue循环中,每次循环生成一个点阵屏幕,点阵屏幕各LED灯的亮度由for循环生成。n=9,img='99999:99999:00000:11111:22222'n=8,img='88888:88888:99999:00000:11111'n=7,img='77777:77777:88888:99999:00000'n=6,img='66666:66666:77777:88888:99999'n=5,img='55555:55555:66666:77777:88888'n=4,img='44444:44444:55555:66666:77777'n=3,img='33333:33333:44444:55555:66666'n=2,img='22222:22222:33333:44444:55555'n=1,img='11111:11111:22222:33333:44444'n=0,img='00000:00000:11111:22222:33333'详情如下:新知讲解同样的效果也可以由下面的程序实现:新知讲解试一试你能参照【例题4】,做一个全屏呼吸灯吗?frommicrobitimportn=0whileTrue:???n=(n+1)%10???img=(str(n)5+":")4+str(n)5???display.show(Image(img))???sleep(50)参考程序如下:课堂小结总结本节课所学内容板书设计一、全屏呼吸灯二、走马灯三、灯光瀑布谢谢21世纪教育网(www.21cnjy.com)中小学教育资源网站有大把高质量资料?一线教师?一线教研员?欢迎加入21世纪教育网教师合作团队!!月薪过万不是梦!!详情请看:https://www.21cnjy.com/help/help_extract.php 展开更多...... 收起↑ 资源列表 第十二课 变化无穷的灯.doc 第十二课 变化无穷的灯.pptx