前几节课我们用 Python 调用了 AI 接口,做了聊天助手和写作工具。这节课我们换个方向——用 Python 画图!Python 自带了一个叫 turtle 的画图模块,就像一只小海龟在屏幕上爬行,它走过的路径就是画出来的图案。
一、认识 turtle(小海龟)
turtle 是 Python 自带的模块,不需要安装,import 就能用。想象一只小海龟在沙滩上爬,它的尾巴会留下痕迹:
import turtle
t = turtle.Turtle() # 创建一只海龟
t.forward(100) # 向前走100步
t.left(90) # 左转90度
t.forward(100) # 再向前走100步
turtle.done() # 保持窗口不关闭
运行后你会看到海龟画出了一个「L」形状!
二、基本命令速查表
| 命令 | 作用 | 示例 |
forward(n) | 向前走 n 步 | t.forward(100) |
backward(n) | 向后退 n 步 | t.backward(50) |
left(角度) | 左转多少度 | t.left(90) |
right(角度) | 右转多少度 | t.right(45) |
penup() | 抬起笔(移动不留痕迹) | t.penup() |
pendown() | 放下笔(开始画线) | t.pendown() |
pensize(n) | 设置线条粗细 | t.pensize(3) |
color("颜色") | 设置颜色 | t.color("red") |
speed(n) | 速度(1-10, 0最快) | t.speed(5) |
circle(r) | 画圆,r=半径 | t.circle(50) |
三、实战1:画正方形
正方形有4条边,每条边一样长,每次转90度:
import turtle
t = turtle.Turtle()
t.speed(3)
for i in range(4): # 重复4次
t.forward(100) # 向前走100
t.right(90) # 右转90度
turtle.done()运行效果:一个漂亮的正方形!🟦
四、实战2:画彩色五角星 ⭐
五角星需要转144度(不是72度哦!),每边画完转一次:
import turtle
t = turtle.Turtle()
t.speed(5)
t.color("gold") # 金色
t.pensize(3)
for i in range(5):
t.forward(150) # 每条边150步
t.right(144) # 右转144度(关键!)
turtle.done()💡 为什么是144度? 五角星每个尖角是36度,外角就是180-36=144度。这个数学知识以后会学到!
五、实战3:彩色螺旋线 🌀
用循环让线条越来越长,同时改变颜色:
import turtle
t = turtle.Turtle()
t.speed(0) # 最快速度
t.pensize(2)
colors = ["red", "orange", "yellow", "green", "blue", "purple"]
for i in range(200):
t.color(colors[i % len(colors)]) # 循环换色
t.forward(i * 1.5) # 线条越来越长
t.right(91) # 转91度(不是90!产生螺旋)
turtle.done()转91度而不是90度,这样每一圈都会比上一圈偏一点,形成螺旋效果!
六、实战4:彩色花朵 🌸
用多个圆叠加画出花朵:
import turtle
t = turtle.Turtle()
t.speed(0)
colors = ["hotpink", "deeppink", "magenta", "violet"]
for i in range(36): # 画36个圆
t.color(colors[i % 4])
t.circle(50) # 半径50的圆
t.right(10) # 每次转10度(360/36=10)
turtle.done()36个圆,每个旋转10度,刚好绕一圈(36×10=360),形成一朵漂亮的花!
七、实战5:分形树 🌳
这是最酷的一个——用递归函数画一棵分形树:
import turtle
def draw_tree(t, length):
"""递归画树"""
if length < 10: # 树枝太短就停止
return
t.forward(length) # 画树干
t.left(30) # 左转画左分支
draw_tree(t, length * 0.7) # 递归:左分支变短
t.right(60) # 右转画右分支
draw_tree(t, length * 0.7) # 递归:右分支变短
t.left(30) # 回到原方向
t.backward(length) # 回到起点
t = turtle.Turtle()
t.speed(0)
t.color("green")
t.left(90) # 朝上
draw_tree(t, 120) # 从主干长度120开始
turtle.done()🔥 重点理解:draw_tree 函数调用了自己(这就是递归!),每次树枝长度乘以0.7(变短70%)。当长度小于10时停止,否则会无限画下去!
八、保存你的画作
画好的图片可以保存为文件:
import turtle
t = turtle.Turtle()
# ... 你的画图代码 ...
# 保存为 EPS 格式(矢量图,高清)
ts = turtle.getscreen()
ts.getcanvas().postscript(file="my_drawing.eps")
print("已保存为 my_drawing.eps")
# 如果要保存为 PNG 格式,需要额外安装 pillow 和 ghostscript:
# pip install pillow
# 然后:
# from PIL import Image
# img = Image.open("my_drawing.eps")
# img.save("my_drawing.png")💡 EPS 格式可以用很多软件打开(如 Adobe Illustrator、Photoshop),也可以用在线转换工具转成 PNG。
九、今天学到了什么?
-
- turtle 基本命令:forward/backward/left/right 控制海龟移动
-
- penup/pendown:控制是否画线(像抬笔/落笔)
-
- 循环画图形:for 循环 + 转角 = 正多边形
-
- 彩色图案:用列表循环切换颜色
-
- 螺旋原理:转角不是整除360的数会产生螺旋
-
- 递归画树:函数调用自己,画出自然的分形结构
-
十、下期预告
turtle 画图很有趣,但还不够刺激!下节课我们来做更酷的东西——pygame 游戏!用 Python 做一个真正可以玩的小游戏!
敬请期待:《小学生Python进阶:用pygame做一个小游戏》
有问题欢迎留言!