用 Python 海龟画图

写给小小程序员的代码讲解

9–12 岁 • 不只是运行代码,而是读懂它 • 约 20 分钟


Python 里有一个有趣的模块叫做 turtle(海龟)。它给你一只拿着画笔的小海龟。当你让海龟向前走时,画笔就会在屏幕上留下线条。这一页将带你一行一行地读懂一段真实的 Python 程序,看看它是怎么用海龟画出 六边形和正方形 的。

1. 这个程序画的是什么?

运行程序时,海龟会从屏幕中央出发,一边走一边画图形。最终的画面是这样的:

Python海龟程序绘制的六边形和正方形图案。
海龟会画出三组六边形(每组三个),最后再画两个正方形。

仔细看:你能看到三个大六边形互相重叠(所以那一笔看起来特别黑),中等和小的六边形像枝杈一样伸出来,最后还有两个正方形。每一根线条,都只是海龟「向前走」和「转弯」做出来的。

2. 关键想法:「前进」和「转弯」

海龟只会两件事:

就这两样!画面上所有的形状,其实都是 走 — 转 — 走 — 转 — 走 … 一直重复。

要画出一个闭合的图形,可以用这个规律:

想要回到起点,转弯的角度加起来必须是 360°。所以,如果一个图形有 N 条相等的边,每个角就要转 360 ÷ N 度。

3. 一行一行读懂代码

准备海龟

import turtle

t = turtle.Turtle()

import turtle 的意思是告诉 Python:「我要用 turtle 这个模块。」下一行创建一只海龟,并给它起一个简短的外号 t,这样就不用每次都写完整的名字了。

画六边形的函数

def draw_hex(side_length):
    t.pendown()
    for _ in range(6):
        t.forward(side_length)
        t.right(60)
    t.penup()

函数(function)就像一份带名字的食谱。这个食谱叫 draw_hex,它的作用是画一个六边形。side_length参数(parameter) ― 你在使用食谱时填进去的「空格」。draw_hex(250) 的意思就是「画一个边长为 250 步的六边形」。

食谱的步骤:

  1. pendown() ― 放下画笔,开始画线。
  2. for 循环重复 6 次(六边形有 6 条边):
  3. penup() ― 抬起画笔(接下来海龟可以走动而不留下线条)。

画正方形的函数

def draw_square(side_length):
    t.pendown()
    for _ in range(4):
        t.forward(side_length)
        t.right(90)
    t.penup()

原理和六边形完全一样,只不过这里循环 4 次,每个角转 90°。两个函数长得非常像 ― 唯一不同的就是边的数量和转弯的角度。

主图案

for _ in range(3):
    draw_hex(250)

    t.right(90)
    t.forward(60)

    draw_hex(100)

    t.right(90)
    t.forward(40)

    draw_hex(120)

这个循环会跑 3 遍。每一遍里,海龟都会:

  1. 画一个大六边形(边长 250)。
  2. 转弯并抬笔走到新的位置(不画线)。
  3. 画一个小六边形(边长 100)。
  4. 再走一段,
  5. 画一个中等的六边形(边长 120)。

所以图里能看到 3 组、每组 3 个六边形。(三个大六边形刚好叠在同一个位置!)

最后的两个正方形

t.forward(300)
t.right(60)

draw_square(270)

t.left(30)
t.forward(110)
t.right(80)

draw_square(135)

turtle.done()

画完所有六边形之后,海龟走到一个新的位置画了一个大正方形,又走一段画了一个小一点的正方形。最后的 turtle.done() 告诉程序:「画完啦 ― 把窗口留着,让我们好好看看作品。」

4. 自己来试试

实验一 ― 把六边形放大。draw_hex(250) 改成 draw_hex(400),看看画面有什么变化?
实验二 ― 画一个三角形。 写一个新的函数叫 draw_triangle。它要循环几次?每个角要转多少度?(提示:360 ÷ 3。)
实验三 ― 加上颜色。 在调用 draw_hex 之前加一行 t.color("blue")。也试试 "red""green""purple"
实验四 ― 画一颗星星。 试试一个循环:「前进 + 转 144°」重复 5 次。(没错,是 144°,不是 72°!这就是五角星的秘密。)

5. 要记住的词

模块(module)
一包做好的代码,其他程序可以直接拿来用。turtle 就是 Python 自带的模块之一。
函数(function)
有名字的一组指令,可以被反复调用使用。draw_hex 就是一个函数。
参数(parameter)
调用函数时填进去的「空格」。side_length 就是一个参数。
循环(loop)
告诉电脑「重复做这件事 N 次」。for _ in range(6): 就是重复 6 次。
度(degree)
表示转弯多少的单位。一整圈是 360 度,正方形的角是 90 度。
抬笔/落笔
海龟走动时是不是会画线。抬笔=不画,落笔=会画。

下载 draw_shapes.py

使用方法:保存文件后,在终端里输入 python3 draw_shapes.py。(请确认电脑里已经安装了 Python 3。)

小贴士:不要把文件名取成 turtle.py ― Python 自带的内置模块也叫这个名字,会和你自己的文件搞混,导致程序无法正常运行。