数学课画多边形画到崩溃?Python海龟一笔搞定,连角度都帮你算好了!
开篇小故事
数学课上,老师让每个人画一个正六边形。
朵朵用量角器量了半天:"120 度、120 度……哎呀又歪了!"
同桌小明偷偷打开 Python,敲了几行代码,一个完美的正六边形出现在屏幕上。
"你怎么做到的?"朵朵羡慕地问。
小明神秘一笑:"秘密就是——海龟作图!"
你能学到什么
- • 掌握一个万能公式:海龟每次转弯角度 = 360° ÷ 边数
数学小课堂:正多边形的秘密
为什么是 360° ÷ n?
想象你在一张纸上沿着正多边形的边走一圈——走完一圈后,你刚好转了整整一圈(360°)。
正 n 边形有 n 个顶点,每个顶点转的角度一样,所以每个顶点的转弯角度就是 360° ÷ n。
直接上代码
基础版:画一个正六边形
import turtleturtle.speed(3)turtle.pensize(3)turtle.pencolor("blue")bianchang = 100 # 边长,随便改bian_shu = 6 # 边数,随便改for i in range(bian_shu): turtle.forward(bianchang) # 向前画一条边 turtle.right(360 / bian_shu) # 右转:360° ÷ 边数turtle.done()
万能版:你想画几边形就画几边形
import turtlebian_shu = int(input("画几边形?"))bianchang = int(input("边长多少?"))turtle.speed(3)turtle.pensize(3)turtle.pencolor("purple")for i in range(bian_shu): turtle.forward(bianchang) turtle.right(360 / bian_shu)print(f"正{bian_shu}边形画好了!每个外角是 {360/bian_shu}°")turtle.done()
输入 8 和 80,一个正八边形就出来了!
代码讲解
| |
|---|
turtle.right(360 / bian_shu) | |
for i in range(bian_shu): | |
turtle.forward(bianchang) | |
turtle.speed(3) | |
turtle.pensize(3) | |
进阶版:画彩色旋转多边形
import turtleturtle.speed(0)turtle.bgcolor("black") # 黑色背景colors = ["red", "orange", "yellow", "green", "cyan", "blue", "purple"]for bian_shu in range(3, 11): # 从三角形画到十边形 turtle.pencolor(colors[(bian_shu - 3) % len(colors)]) for i in range(bian_shu): turtle.forward(80) turtle.right(360 / bian_shu)turtle.done()
运行后,从正三角形到正十边形,七彩旋转,非常酷炫!
试试加点变化?
| |
|---|
| 把 right() 改成 left(),或者把角度乘 2 |
| |
| 加 turtle.fillcolor("yellow")、begin_fill()、end_fill() |
| 每次边长递增:bianchang = bianchang + 5 |
易错点提醒
学校信息课考点预告
本期涉及:
- • turtle 图形编程——新课标"图形化与代码编程"必修模块
- • 变量控制——通过改变边数、边长等参数画不同图形
家长辅导小贴士
- 1. 先在纸上画:和孩子一起用量角器画一个正五边形,感受一下外角 72° 是什么概念。再上 Python 画,对比差异。
- 2. 提问引导思考:"如果把
right 改成 left,图形会有什么变化?""如果把边数设成 360,会出现什么?" - 3. 鼓励创造:让孩子自己设计一个"多边形家族"——三角形、正方形、五边形……排成一排,每个不同颜色。
- 4. 如果孩子对角度感兴趣,可以延伸到"为什么三角形内角和是 180°?四边形是 360°?"——用 turtle 画对角线来验证。