Python 挑战版 · Day 5
变量:让代码变得好控制
从“改很多处很麻烦”出发,把数字和颜色提到控制区,再用变量递增画出楼梯村。
节奏分配(45 分钟)
01
制造痛感
把 4 个 draw_house 里的 80 改成 120,让学生数需要改几处。
02
建立变量模型
变量是给值起名字;= 是赋值,不是数学等式。
03
做控制区
把 house_count、start_size、gap、theme_color 放在代码上方。
04
变量会更新
拆解 size = size + 15:先算右边,再放回左边。
05
完成楼梯村
用 x 和 size 的递增,让每栋房子位置和大小都变化。
教师话术
"今天的目标不是多学一个词,而是让代码变得好改。"
"= 号左边是名字,右边是值。先算右边,再放进左边。"
"这几行就是控制台。先只改控制台,不动下面的执行代码。"
"你能预测 size = size + 15 执行 5 次后,每栋房子会怎样变化吗?"
变量知识卡
house_count = 5控制循环次数,决定画几栋房子。
theme_color = "blue"字符串变量,用一个名字控制颜色。
x = x + size + gap更新位置,让下一栋房子往右走。
size = size + 15更新大小,让下一栋房子更大。
课堂代码
控制区
这 4 行是给学生改的地方。先让他们只改这里。
house_count = 5
start_size = 40
gap = 10
theme_color = "lightblue"变量递增
重点解释“先算右边,再放回左边”。
x = -250
size = start_size
for i in range(house_count):
draw_house(x, -100, size, theme_color)
x = x + size + gap
size = size + 15完整版本
import turtle
t = turtle.Turtle()
t.speed(10)
turtle.bgcolor("ivory")
def draw_house(x, y, size, wall_color):
t.penup()
t.goto(x, y)
t.pendown()
t.setheading(0)
t.fillcolor(wall_color)
t.begin_fill()
for i in range(4):
t.forward(size)
t.left(90)
t.end_fill()
t.penup()
t.goto(x, y + size)
t.pendown()
t.fillcolor("tomato")
t.begin_fill()
for i in range(3):
t.forward(size)
t.left(120)
t.end_fill()
# 控制区:先让学生只改这里
house_count = 5
start_size = 40
gap = 10
theme_color = "lightblue"
x = -250
size = start_size
for i in range(house_count):
draw_house(x, -100, size, theme_color)
x = x + size + gap
size = size + 15
t.hideturtle()
turtle.done()分层挑战
基础
改 house_count、start_size、gap、theme_color,做出自己的村子。
进阶
增加 roof_color 变量,让屋顶也能从控制区修改。
挑战
用 size = size - 10 做“越来越小”的村子,并解释为什么不会无限画下去。
完成标准
能解释变量名、值、赋值三件事。
能把固定数字抽到控制区变量里。
能解释 size = size + 15 的执行顺序。
能通过修改变量完成至少两个不同版本的楼梯村。
成功重点不是背出定义,而是能说明“改控制区为什么能影响下面的代码”。
做完之后
收尾问题:如果房子大小超过 100,屋顶自动变红;否则变蓝,Python 怎么自己做选择?
模块目录
Python 启蒙