基于计算思维培养的高中Python教学实践与探究
——以《循环结构的程序实现》一课为例
2023-01-30戴晓芬浙江省宁波市奉化区江口中学
戴晓芬 浙江省宁波市奉化区江口中学
传统的Python编程教学(讲授编程知识结合简单上机练习)枯燥乏味并脱离实际生活情境,为了改变这种状况,笔者以《循环结构的程序实现》一课为例提出将Python教学内容融入到解决数学问题的案例中,用编程解决数学问题,以激发学生的兴趣并拓展学生的计算思维和问题解决的能力。
● 学科融合,提出问题
教师借助数学中“水仙花数”的概念自然地引出问题:“什么样的数可以称为‘水仙花数’?需要满足什么条件?”以此作为切入点,引导学生用编程求解“水仙花数”,意在实现两个目标:①借助程序实例,结合学生已有知识储备,引导学生理解并掌握循环结构之for语句的执行过程;②引导学生复习巩固已学知识,包括if条件语句的结构特点及使用等。
● 挖掘储备,分析问题
在本环节,教师引导学生借助之前所学的Python基础知识,并结合数学定义,进一步分析并解决问题。
在课堂教学中,首先,教师应根据教材内容明确教学目标及重难点,结合学生的实际情况和认知水平确定上课的流程并对各环节进行统筹安排。明确的教学目标能够给学生清晰的指引,合理的内容安排可以给学生提供“跳一跳就够得着”的学习动力。其次,在教师讲解的过程中,学生需要结合所学的Python知识分析问题,提出解决方案及实施方案。最后,学生在课堂上分享自己的编码过程及心得体会,并进行反思与总结。学生在整个学习过程中经历了分析问题、提出解决方案、问题解决与实施、合作与经验分享等环节,并及时进行反思与总结,达到了提升计算思维的目的。
例如,在《循环结构的程序实现》一课中“水仙花数”是指一个三位数,其各位数字的立方之和等于该数字本身。在概念明确后,就可以优先锁定三位数的范围,然后再根据条件去判断哪些是符合条件的正确解。在此基础上,教师再引出问题:“如何用Python语句将所有三位数罗列出来?”“如何编写Python语言来锁定哪些三位数就是‘水仙花数’?”
● 梳理条目,解决问题
计算机最擅长的就是重复,一个循环就是一组重复执行的语句。Python提供了两种类型的循环语句:for语句和while语句。while语句是一种条件控制循环,根据条件是否成立来控制循环次数。在while循环中,在每个循环周期前进行条件检测,如果一开始条件检测的结果为“假”,则循环体一次都不执行。for语句是一种计数器控制循环,会重复特定的次数。序列中元素会依次赋值给变量,然后执行一次循环体,当序列中的元素全部遍历完时,程序自动退出,循环结束。
for循环语句的使用比较方便,如要依次显示某位学生的兴趣爱好(篮球、羽毛球、看书、旅游、音乐),可通过图1所示的Python编程语句实现。该程序代码可依次输出这位学生的兴趣爱好,运行结果如图2所示。
图1
图2
而range函数则是由三个参数(起始值、终值、步长值)来决定序列中元素的个数和范围。若起始值缺省,则默认值为0,并且这三个参数必须为整数。例如,range(10)等价于range(0,10,1),可以生成0~9这10个整数序列:0、1、2、3、4、5、6、7、8、9。所以,当序列中的元素为有序整数时,一般可以将for循环语句和Python内建函数range()配合使用。
当理清解题思路后,《循环结构的程序实现》一课可以这样设计:根据已知条件与所求解之间的关系,一一列出所有可能的解,再根据条件判断哪些是正确解并进行输出。首先,明确“水仙花数”指的是三位数的整数,那么通过range()函数设定三位数的区间范围,即range(100,1000,1)可以锁定范围是100~999区间内的三位数,同时需要学生结合之前所学的数学基本运算符知识分别求出三位数的个、十、百位,依次用a、b、c三个变量来表示。如果用变量i来表示三位数,那么a=i//100表达式求得的是该三位数的百位、b=i//10%10求得的是该三位数的十位、c=i%10求得的是该三位数的个位。因此,判断该三位数是否为水仙花数的条件可以通过是否满足if条件语句a**3+b**3+c**3==i来验证,如果该if条件语句成立,那就验证了这个三位数其各位数字的立方之和等于该数字本身,就是符合要求的“水仙花数”,该实例的程序代码如下页图3所示,程序运行结果如下页图4所示。
图3
图4
在课堂上,程序代码以半成品的形式发给学生,要求补充空缺的代码。学生在小组合作的基础上编写代码填补空缺并调试程序。在课堂上,教师时刻观察每个小组学生的反应,并及时给予指导。在课堂最后,教师针对学生完成任务过程中遇到的问题进行归纳与分析,适时总结本节课的重难点,并对表现优异的小组给予肯定和表扬。
该环节是学生计算思维形成的关键阶段,充分发挥了学生的主观能动性,围绕数学实例并结合问题的解决帮助学生一步步搭建起了思维的架构。学生在教师的引导和小组成员的互帮互助下,在解决问题的同时也轻松掌握了循环结构的程序实现之for语句的结构及执行过程、range()内建函数的结构特点及两者间如何配合使用,并让if条件语句的使用也得到了及时的巩固和进一步的提升。
● 拓展思维,提升能力
计算思维是指个体运用计算机科学领域的思想方法,在形成问题解决方案的过程中产生的一系列思维活动。具备计算思维的学生,在信息活动中能够分析和综合各种资源,运用合理的算法形成解决问题的方案,并能将知识和能力迁移到其他问题的解决中。
《循环结构的程序实现》一课借助编程求解“水仙花数”,由教师引导学生对计算思维进行了有效的锻炼和提升。回顾这节课,可以将过程分解成以下四步:①抽象与建模。“水仙花数”是指一个三位数,其各位数字的立方之和等于该数字本身。所以先锁定三位数,再根据条件去筛选满足要求的三位数。②设计算法。基于问题的抽象与建模,三位数可以用range()函数限定范围;满足“水仙花数”的条件可以通过if条件语句来设定;整个循环用for循环语句来实现。③编写程序。④调试运行程序。
通过重构应用场景,还可以引导学生从编程求解“水仙花数”向“鸡、兔同笼”等数学问题延伸。学生在拓展迁移的学习过程中学会了举一反三、触类旁通,并通过积极、主动地探究与实践,使计算思维得到了进一步的提升。此外,Python课堂评价体系也应进行创新设计,不能只停留在传统的教师点评、学生听的阶段,而应将课堂评价和成果展示有机结合起来。
《普通高中信息技术课程标准(2017年版)》发布以来,如何利用信息技术各模块的教学内容培养学科核心素养,进而促进新课程的改革与实施已成为当下的研究热点,这就促使一线教师需要对信息技术教学理论和实践不断进行探索。在高中Python的教学中应将学生的计算思维作为逻辑思维、抽象思维的进阶,引导学生经历提出问题、分析问题、解决问题的过程,从而进一步提升核心素养。