Python 挑战版 · Day 6

判断:让程序自己做选择

把 Day 5 的变量控制区升级成规则系统:不同大小自动配色,白天夜晚自动切换。

节奏分配(45 分钟)

01

生活规则翻译

如果下雨就带伞;如果 size 大于 100 就用红色。

02

if / else 二选一

大房子红色,否则蓝色,改 size 验证分支。

03

elif 三档规则

大、中、小三档配色,从上往下走第一个成立条件。

04

接入循环村子

每栋房子根据自己的 size 自动选择颜色。

05

夜间模式

用一个布尔变量切换背景和屋顶颜色。

教师话术

"判断就是让程序做选择。选择之前,先问一个条件。"

"if 后面是问题,缩进里面是这个问题回答“是”时要做的事。"

"elif 只有在上面的 if 不成立时才会检查。"

"从上往下,走到第一条成立的规则就停下。"

判断知识卡

if size > 100:

条件成立时执行下面缩进代码。

else:

上面的条件不成立时执行。

elif size > 70:

继续检查另一个条件。

==

比较是不是相等,不是赋值。

课堂代码

二选一

python
size = 120
 
if size > 100:
    color = "tomato"
else:
    color = "lightblue"
 
draw_house(0, 0, size, color)

三档规则

python
if size > 120:
    color = "tomato"      # 大房子
elif size > 70:
    color = "gold"        # 中房子
else:
    color = "lightblue"   # 小房子

夜间模式

python
night_mode = True
 
if night_mode:
    turtle.bgcolor("midnightblue")
    roof_color = "dimgray"
else:
    turtle.bgcolor("lightyellow")
    roof_color = "tomato"

完整版本

python
import turtle
 
t = turtle.Turtle()
t.speed(10)
 
night_mode = False
house_count = 5
start_size = 40
gap = 8
 
if night_mode:
    turtle.bgcolor("midnightblue")
    roof_color = "dimgray"
else:
    turtle.bgcolor("lightyellow")
    roof_color = "tomato"
 
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(roof_color)
    t.begin_fill()
    for i in range(3):
        t.forward(size)
        t.left(120)
    t.end_fill()
 
x = -250
size = start_size
 
for i in range(house_count):
    if size > 120:
        color = "tomato"
    elif size > 70:
        color = "gold"
    else:
        color = "lightblue"
 
    draw_house(x, -100, size, color)
    x = x + size + gap
    size = size + 20
 
t.hideturtle()
turtle.done()

分层挑战

基础

改 size 和判断线,让颜色切换。

进阶

增加 roof_color,让屋顶也根据 night_mode 改变。

挑战

加 weather = "rain",用 if / elif / else 做晴天、雨天、雪天。

完成标准

能区分 = 和 == 的用途。

能解释 if / else 为什么只走一条路。

能解释 elif 是“还有一种情况”。

能完成智能村子:不同大小自动配色。

如果学生能改条件并预测哪条分支会执行,这节课就达成了。

做完之后

先用互动代码剧场复习 Day 1-6 的循环、判断和缩进,再进入键盘控制。