【教学前沿】当小学数学遇见Python

以下文章来源于中国现代教育装备 ,作者吴庆伟

中国现代教育装备

装备的能量,技术的方向!《中国现代教育装备》杂志是由教育部主管、中国高等教育学会主办,面向国内外公开发行的教育科技类期刊。

摘 要

STEM教育是当前的热门话题。研究探讨如何让新兴理念在学校教育中生根发芽。结合教学实践,以具体案例探讨了小学数学与Python教学的融合,以期为STEM教育校本化提供思考与启示。

关键词

小学数学;Python;STEM

当小学数学遇见Python

随着信息技术的飞速发展,人们已进入信息社会,并向智慧型社会发展。作为社会生活的重要组成部分,教育自然也深受影响。近年来,STEM教育成为热潮,并逐步走进大中小学课堂。

为了适应信息化、智能化的发展,自2018年8月起,济南市陆续更换了义务教育信息技术课教材。新的教材面向最新的“互联网+”及AI等前沿技术,更加注重信息技术学科核心素养的培养,更加关注与生活、社会的联系,力求培养学生良好的信息意识、计算思维、数字化学习与创新以及信息社会责任,以跟上时代的脚步。

面对新的社会环境、新的教材,如何更好地实施信息技术教学?怎样更有效地实现信息技术与学科教学的融合?在多年的信息技术课程教学实践中,笔者发现,与专家学者、一线教师的普遍观点一样,绝大多数学生对单纯的计算机操作、程序设计语言本身兴趣不大,而对利用信息技术手段解决生活、学习中遇到的实际问题比较感兴趣。虽然各级各类信息技术课程教材在编写过程中尽力创设“真实”的问题情境,努力让“任务”驱动调动学生的积极性,力求让学生体验问题解决的成就感,但受制于教材编写的种种限制,效果往往不甚理想。本学年,笔者同时承担了小学数学和信息技术课程的教学任务,因而对两门学科的教学融合展开了深入的思考与实践。在全面分析学情与两门课程特点的基础上,笔者开设了一门STEM教育校本课程——“当小学数学遇见Python”。

例谈小学数学与Python教学的融合

本课程面向小学高年级学生,具体是将Python程序设计与数学学习结合起来,用计算机编程解决数学上的难题。这样,学生可在最真实的问题解决过程中,培养计算思维及问题分析、解决能力。

例如在人教版《数学(四年级下册)》的“鸡兔同笼”问题的教学中,会有如下例题:“鸡兔同笼,从上面数有8个头,从下面数有26只脚,问鸡兔各有几只?”教师会引导学生用列表法、假设法等解决这一问题,但用程序设计如何解决这一问题呢?这时候学生就需要分析题目要求,理清思路后用程序代码来实现。

列表法在程序设计里可以用枚举法来实现:枚举所有可能的情况,从中选择符合要求的。这时可以充分利用计算机运行速度快、计算准确的优势,快速得到答案。此外,当数字比较小的时候,可以用列表法解决,当数字很大时,列表法就显得力不从心了。这时候计算机程序的优势就更加明显。学生写出的代码如下:

#heads为头的个数,feet为脚的个数, c为鸡的个数, r为兔的个数heads = 8feet = 26for c in range(1, heads): r = heads-c if 2*c+4*r == feet: print("鸡有" ,c, "只,兔有" ,r, "只。")

输出结果为:鸡有3只,兔有5只。

这个问题也可以通过其他方式来解决,可以写出如下代码:

heads = 8feet = 26temp = 8*4-26c = temp//2r = heads-cprint("鸡有",c,"只,兔有",r,"只。")

输出结果同样为:鸡有3只,兔有5只。

当然,还可以修改程序,让用户输入头和脚的数目,以便让程序更具通用性。

上面的第二种方法体现了“数学思维”,它依赖人脑作为解决问题的工具,即对数学知识的理解、掌握程度直接决定能否解决问题。在这个例题中,已经通过分析数量关系列式清晰地解决了这个问题,计算机只是辅助运算,充当了一个计算器的角色,最终决定问题解决与否的关键因素仍是大脑。而第一种方法,看似麻烦、笨拙,却很好地体现了用计算机解决问题的“计算思维”,即体现了“如何通过计算机等辅助性工具快速地解决问题,如何把现实问题转化成可以用计算机的技术、方法和思想加以解决的方式”。在面对复杂、重复迭代的问题时,人脑的能力往往达不到解决问题的要求,而且并不是每一个问题都可以用数学公式、数学运算加以清晰表达。而“计算机在解决复杂的、系统性的、需要大量重复迭代的问题时,价值体现尤为明显,为此计算思维也常被用于解决那些像四色定理证明等由于人类思维的局限性而无法独立解决的问题”。这也是计算思维被确定为信息技术课程的核心素养之一的原因。

又如,在人教版《数学(五年级下册)》“长方体和正方体”的学习过程中,棱长和、表面积和体积计算是重难点,要求学生熟练掌握表面积和体积的计算方法。如果学生已经把公式熟记,那单纯的计算就成了一个重复而单调的机械工作。这时候可以用Python写一个计算程序,输入长方体/正方体的长、宽、高,自动计算出棱长和、表面积和体积。为程序加一个循环结构,并预留一个出口,就可以多次计算而不必每计算一次就重新运行一次。还可以对输入数据是否符合要求进行简单判断,对不符合要求的数据给予提示。经过实践探索,学生写的代码如下:

#长方体(正方体)计算print("输入长方体的长、宽、高,将进行相应的计算。长输入0,则程序结束!") a = 1 while a != 0: a = float(input("请输入长方体的长:")) if a == 0: break b = float(input("请输入长方体的宽:")) if b == 0: print("长方体的宽不能为0,请重新输入:") b = float(input()) c = float(input("请输入长方体的高:")) if c == 0: print("长方体的高不能为0,请重新输入:") c = float(input()) d = 4*(a+b+c) e = 2*(a*b+a*c+b*c) f = a*b*c print("棱长和是:",d) print("表面积是:",e) print("体积是:",f) print("程序结束!")

以某次运行为例,输入长方体的长为12,宽为7,高为4,则显示棱长和是92.0,表面积是320.0,体积是336.0。

这个案例难度不大,旨在让学生体会到循坏、重复的事情可交给计算机完成,以充分发挥计算机运行速度快、计算精确、高度自动化的特点,这样可以极大地减轻计算量。

又如,在学习到简单排列组合问题时,会有这样的问题:1,2,3,4四个数字,能组成多少个互不相同且无重复的三位数?各是多少?

学生可以写出如下代码:

#三位数count = 0for i in range(1,5): for j in range(1,5): for k in range(1,5): if(i!=j) and (i!=k) and (j!=k): print (i,j,k,end=",") count += 1print ("一共有",count,"个。")

运行结果为:123,124,132,134,142,143,213,214,231,234,241,243,312,314,321,324,341,342,412,413,421,423,431,432,一共有24个。

还有一个生活中的实例:某单据中有一个数据因为污损看不清千位数和十位数,只能推测为14□9□1,已知该数据是77的倍数,请输出所有满足条件的数据。对于这一问题,一般需要通过进行100次大数除法计算才能得出结果。而自动、快速、精确计算正是计算机的特长。因此,只需要用Python的嵌套循环语句就可以轻松地解决这一问题。学生写出的代码如下:

#单据污损print("符合条件的数据有:")for i in range(10): for j in range(10): a = 140901+1000*i+10*j if a%77 == 0: print (a)

运行结果显示,符合条件的数据有:141911,144991。

此外,还可以把倍增法求最小公倍数、欧几里得算法求最大公约数、判断素数、判断闰年等经典程序设计范例与数学教学结合起来,开阔学生的视野,让学生明确原来这些数学问题还有另外的解决方法,可极大地调动他们的积极性,收到良好的学习效果。

总结与反思

第一,教学中需要创设真实情境,而学生在学习、生活中碰见的实际问题就是最真实的问题情境。把这种情境运用好,可以很好地调动学习的积极性,起到事半功倍的效果。在实践中,笔者选择的实例难度都不大,对多数学生而言,基本上“跳一跳就能够得着”,既给这些数学难题提供了一个新的思考角度,开阔了视野,助力学生理解与掌握这些问题,提高数学能力;又培养了学生的信息技术学科核心素养,让学生在解决真实问题的过程中,提升信息意识与计算思维,为后续STEM课程的学习奠定基础。

第二,信息技术与学科教学的融合,要充分分析学科的特点,发挥彼此的长处,相互促进、共同提高,而不应该阻碍学生的成长。长方体计算的案例是在学生已经熟练掌握了整数及小数四则运算、明确了长方体、正方体相关计算公式后而设计的,目的是减少机械单调重复的计算量,让学生感受用计算机程序解决问题的优势、方法,培养信息意识。信息技术的应用要服从服务于学科核心素养的培养,不能过多过滥。例如,小学五年级数学教学的重点之一为小数的乘除运算,这时候就不适合写一个小数乘除运算的程序来帮助学生计算,因为这种程序相对简单,无非就是一个计算器的替代品,对于学习程序设计帮助不大,又阻碍了学生锻炼计算能力,弊大于利,得不偿失。

参考文献

[1]许憬.问题解决中计算思维与数学思维的比较研究[J].中国信息技术教育,2020(10):52.

(来源:“中国现代教育装备”微信公众号,原文刊载于《中国现代教育装备》杂志2021年第6期。作者/吴庆伟,硕士,一级教师。山东省济南市历城区里仁学校。)

原标题:《【教学前沿】当小学数学遇见Python》