Python 挑战版 · Day 3

房子:把大图形拆成小图形

第一次完整体验“设计 → 拆解 → 实现”。重点不是坐标一次算准,而是逐块画、逐步调整。

节奏分配(45 分钟)

01

观察并拆解房子

先让学生说出:墙、屋顶、门、窗分别是什么图形。

02

先画墙

用循环画正方形,并加入 fillcolor、begin_fill、end_fill。

03

搬动画笔画屋顶

用 penup + goto + pendown 移到墙上方,再画三角形。

04

添加门和窗

定位后再画,理解坐标不是答案,是可调整的参数。

05

自由改造场景

改颜色、加窗户、加太阳或夜晚背景。

教师话术

"房子不是一次画出来的,它可以拆成哪些小图形?"

"现在画笔要搬到屋顶位置。抬笔移动,就不会留下线。"

"门太高或窗太靠左,不是错了,只是坐标需要调整。"

"如果要画 5 栋房子,复制整段代码是不是太麻烦?这个问题留到 Day 4。"

新指令

penup()

抬起笔,移动时不画线

goto(x, y)

把画笔搬到一个位置

pendown()

放下笔,继续画线

begin_fill()

开始填色

end_fill()

结束填色

课堂代码

课堂演示:坐标探索器

插在画屋顶之前。让学生用探索器试 goto(0, 100)goto(65, 50),再解释坐标是可调整参数。

打开坐标探索器

第一步:画墙

墙是一个填色正方形,先独立运行确认效果。

python
import turtle
 
t = turtle.Turtle()
t.speed(5)
t.pensize(2)
 
# 第一部分:画墙(正方形)
t.fillcolor("lightyellow")
t.begin_fill()
for i in range(4):
    t.forward(100)
    t.left(90)
t.end_fill()
 
turtle.done()

第二步:把笔搬到屋顶位置

这段接在画墙代码后面。顺序是:抬笔 → 移动 → 落笔。

python
# 第二部分:画屋顶(三角形)
# penup:抬起画笔,移动时不画线
t.penup()
t.goto(0, 100)
t.pendown()
 
t.fillcolor("tomato")
t.begin_fill()
for i in range(3):
    t.forward(100)
    t.left(120)
t.end_fill()

完整基线:一座小房子

python
import turtle
 
t = turtle.Turtle()
t.speed(5)
t.pensize(2)
 
# 第一部分:画墙(正方形)
t.fillcolor("lightyellow")
t.begin_fill()
for i in range(4):
    t.forward(100)
    t.left(90)
t.end_fill()
 
# 第二部分:画屋顶(三角形)
t.penup()
t.goto(0, 100)
t.pendown()
 
t.fillcolor("tomato")
t.begin_fill()
for i in range(3):
    t.forward(100)
    t.left(120)
t.end_fill()
 
# 第三部分:画门(长方形)
t.penup()
t.goto(20, 0)
t.setheading(0)
t.pendown()
 
t.fillcolor("sienna")
t.begin_fill()
t.forward(25)
t.left(90)
t.forward(40)
t.left(90)
t.forward(25)
t.left(90)
t.forward(40)
t.end_fill()
 
# 第四部分:画窗户(正方形)
t.penup()
t.goto(65, 50)
t.setheading(0)
t.pendown()
 
t.fillcolor("lightblue")
t.begin_fill()
for i in range(4):
    t.forward(20)
    t.left(90)
t.end_fill()
 
t.hideturtle()
turtle.done()

自由改造

最后 8 分钟

基础换颜色,进阶加一扇窗,挑战加太阳、烟囱或夜晚背景。

python
# 改造提示:夜晚房子
turtle.bgcolor("midnightblue")
 
# 可以把颜色改成:
# 墙:lightyellow / ivory
# 屋顶:tomato / purple
# 门:sienna / chocolate
# 窗户:gold / lightblue

完成标准

能把房子拆成墙、屋顶、门、窗。

能说出 penup/goto/pendown 的顺序。

能通过改 goto 坐标调整门或窗的位置。

能完成一座彩色房子,并做一个个性化改造。

坐标不要求一次正确。能定位、运行、调整,就是本节的关键能力。

做完之后

收尾只问:如果要画 5 栋房子,复制整段代码是不是太麻烦?下一节用函数给动作起名字。