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 的循环、判断和缩进,再进入键盘控制。
模块目录
Python 启蒙