有一次上课,一个四年级的男孩跟我抱怨:"老师,我最讨厌几何了,什么周长面积角度,烦死了。"
我说:"来,跟我用Python画个图试试。"
十分钟后,他看着屏幕上自己画出来的彩色六边形,说了一句:"……原来角度是这么回事啊!"
今天就来聊聊,怎么用Python的turtle(海龟画图)模块,把抽象的几何概念变成看得见、摸得着的图形。
什么是turtle(海龟画图)
Python自带一个叫turtle的模块,简单说就是:屏幕上有一只"小海龟",你用代码指挥它走路,走过的地方会留下痕迹,就像画画一样。
🐢 turtle的基本命令:
forward(100) → 向前走100步
right(90) → 右转90度
left(60) → 左转60度
pencolor("red") → 换红色笔
就这几个命令,就能画出各种各样的图形。而且因为用的是Python代码,孩子在画图的过程中自然而然就学会了编程。
案例一:画正方形——理解"角度"
正方形是最基础的。代码超级简单:
import turtle
t = turtle.Turtle()
for i in range(4):
t.forward(100)
t.right(90)
4行核心代码,一个完美正方形就出来了。
但重点不是画出来,重点是为什么要右转90度。
我会问孩子:"如果我把90改成60,会画出什么?"
孩子改了一试——变成了一个没合上的奇怪形状。"咦?为什么没闭合?"
这就引出了一个关键知识点:正多边形的外角。正方形外角是90度,正三角形是120度,正六边形是60度。外角之和永远是360度。
数学课本上"外角和=360°"就是一行字,背过就完了。但用turtle画一遍,孩子就真的理解了——因为海龟走一圈回到原点,转过的角度当然是360度!
案例二:画正多边形——理解"循环"和"变量"
学会正方形后,我会引导孩子:"如果想画任意正多边形呢?比如正五边形、正八边形、正一百边形?"
聪明的孩子马上发现:只要改两个数字——边数和角度。于是代码变成了:
import turtle
t = turtle.Turtle()
n = 6 # 边数
angle = 360 / n # 外角
for i in range(n):
t.forward(80)
t.right(angle)
把n改成5就是正五边形,改成8就是正八边形,改成100就是……圆!
当孩子把n改成100,看到屏幕上出现一个近似的圆时,那个震惊的表情值一万分——
😲 "正一百边形就是圆?!"
没错!这就是微积分最基础的思想:用无限多的直线段逼近曲线。虽然孩子不需要知道微积分,但这种直觉性的理解,比死记硬背有用一百倍。
案例三:画五角星——理解"角度计算"
五角星是孩子最喜欢画的图形之一。但你知道五角星每个尖角的角度是多少吗?
import turtle
t = turtle.Turtle()
t.pencolor("gold")
t.pensize(3)
for i in range(5):
t.forward(150)
t.right(144)
关键是那个144度。怎么来的?
我会带孩子一起推:五角星画5次,每次转一个角度,一共转了几圈?两圈!所以 360×2÷5 = 144度。
这个推导过程,孩子自己算出来的时候比解出一道数学题还开心。因为他马上就能验证——改成143试试?不闭合。改成144?完美!数学的美就在这一刻被看见了。
案例四:画彩色螺旋——循环+颜色
这是我的课上"人气最高"的项目:
import turtle
t = turtle.Turtle()
t.speed(0)
colors = ["red", "orange", "yellow", "green", "blue", "purple"]
for i in range(180):
t.pencolor(colors[i % 6])
t.forward(i)
t.right(59)
运行后会出现一个彩色的螺旋图案,特别好看。
这段代码包含的知识点:
-
- 🔄 循环180次——大量重复操作
-
- 📏 forward(i)——每次走的距离递增,所以越画越大
-
- 🎨 i % 6——取余数,实现颜色循环切换
-
- 📐 right(59)——不是60度,所以不会形成封闭图形,而是螺旋
-
取余运算%是很多孩子第一次接触的概念,但在这个场景下,一看就懂:6种颜色轮流来,用完了从头来。
为什么用编程学几何特别有效
-
- 直观——代码一运行就能看到结果,对错立刻知道
-
- 可实验——改个数字就能看到不同效果,鼓励探索
-
- 有成就感——画出来的图特别好看,孩子会主动show off
-
- 连接数学和编程——角度、坐标、循环、变量,两边都在学
-
- 降低抽象门槛——把"脑子里想象"变成"眼睛看到"
-
🏠 在家就能做的小练习
如果你家孩子正在学Python,可以试试这些小挑战:
① 画一个正三角形(提示:外角120度)
② 画一个房子(正方形+三角形屋顶)
③ 画奥运五环(5个圆,不同颜色)
④ 画一个彩虹(半圆,7种颜色)
⑤ 画自己名字的首字母
注意事项
最后提醒几点:
-
- ⚠️ turtle画图速度可能会慢,加上
t.speed(0)可以加速 -
- ⚠️ 不要一上来就追求复杂图形,先从正方形、三角形开始
-
- ⚠️ 鼓励孩子"瞎改"——改数字看效果是最好的学习方式
-
- ⚠️ 如果孩子对画出来的图不满意,引导他思考"哪里要改"而不是直接告诉答案
-
编程和数学,从来就不应该是让孩子头疼的科目。当一只小海龟在屏幕上画出美丽的图形时,孩子看到的不只是代码的力量,更是数学之美。
下次孩子再说"几何好难",不妨让他试试用代码画一个?说不定就开窍了 😄
· · ·
码小芽 | 让每个孩子都能快乐编程 🌱
少儿编程老师 | 3年一线教学经验 | 用真话聊编程教育