题目

用 Python Turtle 绘制下面的图形。

题目说明

这道题要画出一个十字形。图形由 4 条一样长的线段组成,它们都从同一个中心点出发,分别指向右、下、左、上四个方向。开始写代码前,可以先观察这 4 条线段的共同点:每画完一条线,都要回到中心点,再换一个方向。

最终效果

Python 海龟绘图 100 题,第 8 题

Python 海龟绘图 100 题,第 8 题

知识点

  • t.fd(100):从中心点向当前方向画出一条 100 像素的线段。
  • t.bk(100):沿原路后退 100 像素,让海龟回到中心点。
  • t.rt(90):右转 90 度,准备画下一条线段。
  • for i in range(4):重复 4 次,对应十字形的 4 个方向。

绘图思路

可以把这幅图拆成 4 次相同的动作:向前画一条线,沿原路退回中心点,再右转 90 度。第一次画向右的线,第二次画向下的线,第三次画向左的线,第四次画向上的线。每次都回到中心点,4 条线段就会共用同一个端点。

完整代码

Python
# 不使用循环。
import turtle as t

t.fd(100)
t.bk(100)
t.rt(90)
t.fd(100)
t.bk(100)
t.rt(90)
t.fd(100)
t.bk(100)
t.rt(90)
t.fd(100)
t.bk(100)
t.rt(90)

# 使用循环。

for i in range(4):
    t.fd(100)
    t.bk(100)
    t.rt(90)

关键步骤讲解

画出第一条线段

Turtle 默认面向右方,所以第一句 t.fd(100) 会直接画出向右的线段。这条线画完后,海龟停在线段的末端。

回到中心点

t.bk(100) 会让海龟沿刚才的路线退回中心点。画笔没有抬起时,后退路径会和原来的线重合,所以不会多出新的线条。

转向下一个方向

回到中心点后,写 t.rt(90),海龟会向右转 90 度。这样下一次 t.fd(100) 就会从中心点往新的方向画线。

用循环减少重复代码

十字形的 4 条线段画法完全一样,只是方向每次变 90 度。把“前进、后退、右转”放进 for i in range(4),代码更短,也更容易看出图形的规律。

常见错误

  • 忘记写 t.bk(100):下一条线会从上一条线的末端出发,图形不会共用中心点。
  • t.rt(90) 写在后退前面:海龟会在线段末端转向,位置就错了。
  • 循环次数写成 3:只能画出 3 个方向,少一条线段。
  • 转角写成 45120:4 条线不能平均分布在一圈里。

练习

100 改成 60150,观察十字形大小有什么变化。再把 t.rt(90) 改成 t.lt(90),看看 4 条线段的绘制顺序会不会改变。