这节课你要学会

1. 指挥一只海龟在你屏幕上画画;2. 用循环画出正方形、三角形、星星;3. 制作彩虹螺旋——你可以在朋友圈炫耀的作品。

认识你的海龟

Python 自带一个画图工具箱,里面有一只海龟。它带着一支笔,你下命令:前进、转弯、换颜色,它就爬啊爬,身后留下一条线。这只海龟是真正的编程大师教孩子画画的老办法,已经教了半个世纪的孩子了。

import turtle          # 打开"海龟工具箱"

t = turtle.Turtle()    # 领一只海龟,装进盒子 t
t.forward(200)         # 向前爬 200 步
t.left(90)             # 左转 90 度
t.forward(200)         # 再爬 200 步

turtle.done()          # 画完了,窗口别关,让我看看

运行它!一个新窗口弹出来,一只小箭头爬出一条直角线。forward 是前进,left 是左转,转弯的数字是角度:转 90 度是直角弯,转 45 度是小弯,转 360 度是原地转一圈。

海龟画图只能在电脑上玩

海龟要弹出独立窗口,所以必须用安装好的 Thonny 跑,在线环境看不到画图窗口。另外每段代码最后都要写 turtle.done(),不然窗口会一闪而过。

用循环画正方形

正方形怎么走出来的?"前进、左转 90 度"重复 4 次。重复?交给第五课的 for!

import turtle

t = turtle.Turtle()
for i in range(4):
    t.forward(150)
    t.left(90)

turtle.done()

四行变成一个正方形。想画三角形?转 3 次、每次转 120 度(转完一圈正好 360 度,360 ÷ 3 = 120):

for i in range(3):
    t.forward(150)
    t.left(120)

规律:正多边形的秘密公式

画正 n 边形:转 n 次,每次转 360 ÷ n 度。正方形 360÷4=90,三角形 360÷3=120,正六边形 360÷6=60。发现了吗?数学就藏在编程里。把这个规律写成函数(第八课的活用):一个函数,画出任何正多边形。

import turtle

t = turtle.Turtle()

def polygon(sides, size):
    for i in range(sides):
        t.forward(size)
        t.left(360 / sides)

polygon(3, 100)   # 三角形
polygon(4, 100)   # 正方形
polygon(6, 100)   # 六边形
polygon(36, 10)   # 36 边形——已经像个圆了!

turtle.done()

上颜色:五角星

海龟还会换笔的颜色、往里填色:

import turtle

t = turtle.Turtle()
t.color("red", "yellow")   # 线是红色,里面填黄色
t.begin_fill()             # 开始填色

for i in range(5):
    t.forward(200)
    t.left(144)             # 五角星的秘密角度!

t.end_fill()               # 填色完成
turtle.done()

一颗红边黄心的五角星!color 里可以换的颜色:"red""orange""yellow""green""blue""purple""pink""black""gold"……都是英文色名。

动手试一试:彩虹螺旋(本课压轴作品)

下面这段代码会画出一件艺术品。先原样跑一遍,再改着玩:

import turtle

t = turtle.Turtle()
t.speed(0)                     # 最快速度
colors = ["red", "orange", "yellow",
          "green", "blue", "purple"]   # 第七课的列表!

for i in range(120):
    t.color(colors[i % 6])     # 轮流换颜色
    t.forward(i * 2)           # 每圈多爬一点
    t.left(59)                 # 转一个不整的角度

turtle.done()

三样旧知识同台:列表装颜色(第七课)、for 循环(第五课)、i 变量参与计算(第五课)。i % 6 是第三课的取余数——余数永远在 0 到 5 之间打转,正好当列表编号,颜色就轮流换了。改改 left 的角度(试试 91、121、89),改改步长,每一版都是不同的作品。

练习:你的画展

基础任务:画一栋房子。正方形(墙)+ 三角形(屋顶)+ 换颜色画一个小正方形(窗户)。用 t.penup() 抬笔(移动不留痕)和 t.pendown() 落笔,把图形分开画在不同位置。

进阶任务:旋转的风车。把正方形放进 for 循环里转 12 次,每次转 30 度,画出风车/雪花图案。(提示:for 外面再套一层 for,或者先画 4 次正方形每次多转 90 度试试效果)

隐藏挑战:会画画的 polygon 升级版。给 polygon 函数加一个 color 参数,然后写一个主程序:用不同颜色、不同大小画出一排图形,像一面彩旗。

接下来

最后一课了。我们把十课学的一切串起来,做一个属于你的文字冒险游戏——有剧情、有选择、有战斗的那种。然后,领取你的结业证书!