Python 启蒙 · Day 4
函数:给动作起名字
对 8-11 岁,函数先不讲抽象定义。只建立一个感觉:一组动作可以起名字,叫它一声就会执行。
课堂流程(45 分钟)
01
先感受复制麻烦
问:如果画两座房子,要不要复制整段代码?
02
给画墙起名字
用 def draw_wall() 让 Python 记住一组动作。
03
叫出这个动作
强调 draw_wall() 这一行才是真正执行。
04
给房子起名字
把墙和屋顶装进 draw_house()。
05
再画一座房子
移动位置后再调用一次 draw_house(),体验函数的爽点。
教师话术(照着说就行)
"def 就是:给这一组动作起个名字。"
"只起名字不会动,叫它一声才会开始画。"
"draw_house() 就像一个按钮,按一下画一座房子。"
"我们不用复制整段代码,只要再叫一次 draw_house()。"
课堂代码
第一步:给画墙起名字
重点是“定义了不等于执行了”,最后一行调用才会画。
python
import turtle
t = turtle.Turtle()
t.speed(4)
# 给“画墙”这个动作起名字
def draw_wall():
t.fillcolor("lightyellow")
t.begin_fill()
for i in range(4):
t.forward(100)
t.left(90)
t.end_fill()
# 叫它一声,动作才会发生
draw_wall()
turtle.done()第二步:给房子起名字
python
import turtle
t = turtle.Turtle()
t.speed(4)
def draw_house():
# 墙
t.fillcolor("lightyellow")
t.begin_fill()
for i in range(4):
t.forward(100)
t.left(90)
t.end_fill()
# 屋顶
t.penup()
t.goto(t.xcor(), t.ycor() + 100)
t.pendown()
t.fillcolor("tomato")
t.begin_fill()
for i in range(3):
t.forward(100)
t.left(120)
t.end_fill()
# 画第一座房子
draw_house()
t.hideturtle()
turtle.done()再叫一次
函数的爽点
移动到新位置,再写一行 draw_house(),就能再画一座房子。
python
# 搬到新位置,再叫一次 draw_house()
t.penup()
t.goto(150, 0)
t.pendown()
draw_house()完成标准
孩子能运行 draw_wall(),看到墙出现。
孩子知道 def 是给动作起名字。
孩子知道只有调用 draw_house() 才会执行。
孩子能通过再调用一次函数画第二座房子。
不要求孩子解释“封装”。能说出“给动作起名字”就够了。
做完之后
收尾只问:如果每座房子大小不一样、颜色不一样,函数能不能继续帮忙?
模块目录
Python 启蒙