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()结束填色
课堂代码
第一步:画墙
墙是一个填色正方形,先独立运行确认效果。
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 栋房子,复制整段代码是不是太麻烦?下一节用函数给动作起名字。
模块目录
Python 挑战版