题目
用 Python Turtle 绘制下面的图形。
题目说明
这道题要画连续排列的 5 个等边三角形。每个三角形边长是 50 像素,转角是 120 度。画完一个三角形后,海龟需要移动到下一个三角形的起点。
最终效果

Python 海龟绘图 100 题,第 28 题
知识点
- 外层
for i in range(0, 5):控制连续画 5 个三角形。 - 内层
for j in range(0, 3):画出一个等边三角形的 3 条边。 t.fd(50):三角形边长是 50 像素。t.lt(120):等边三角形每条边之后左转 120 度。- 画完一个图形后,要把海龟移动到下一个起点。
绘图思路
可以先写出一个等边三角形的代码,再把它放进外层循环。每次画完一个三角形后,海龟回到这个三角形的左下角,并恢复原来的朝向。再向前走 50 像素,就到达下一个三角形的左下角。
完整代码
方法一
import turtle as t
for i in range(0, 5):
for j in range(0, 3):
t.fd(50)
t.lt(120)
t.fd(50)
方法二
import turtle as t
for i in range(0, 5):
for j in range(0, 4):
t.fd(50)
t.lt(120)
t.rt(120)
关键步骤讲解
先画一个三角形
等边三角形有 3 条边,所以内层循环可以写成 range(0, 3)。每条边画完后左转 120 度。
方法一单独移动到下一个起点
方法一先完整画出一个三角形,再执行一次 t.fd(50)。这一步会沿着底边方向移动到下一个三角形的起点。
方法二把移动动作放进内层循环
方法二的内层循环执行 4 次,前三次画出三角形,第四次前进到下一个起点。因为第四次之后又左转了 120 度,所以外层末尾用 t.rt(120) 把方向调回来。
两种方法的共同点
两种写法都在重复同一件事:画一个边长 50 的三角形,然后移动 50 像素,准备画下一个。区别只是把移动动作写在内层循环外,还是合并到内层循环里。
常见错误
- 忘记移动到下一个起点:5 个三角形会重叠在一起。
- 把
120写成90:画出来的就不是等边三角形。 - 方法二里忘记
t.rt(120):第二个三角形开始方向会错。 - 外层循环次数写错:三角形数量会变多或变少。
练习
把外层循环次数 5 改成 3 或 8,观察三角形数量变化。再把边长 50 改成 70,看看图形整体长度有什么变化。