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 行是给学生改的地方。先让他们只改这里。

python
house_count = 5
start_size = 40
gap = 10
theme_color = "lightblue"

变量递增

重点解释“先算右边,再放回左边”。

python
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

完整版本

python
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 怎么自己做选择?