题目

用 Python Turtle 绘制下面的图形。

题目说明

这道题要画连续排列的 5 个等边三角形。每个三角形边长是 50 像素,转角是 120 度。画完一个三角形后,海龟需要移动到下一个三角形的起点。

最终效果

Python 海龟绘图 100 题,第 28 题

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 像素,就到达下一个三角形的左下角。

完整代码

方法一

Python
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)

方法二

Python
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 改成 38,观察三角形数量变化。再把边长 50 改成 70,看看图形整体长度有什么变化。