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() 才会执行。

孩子能通过再调用一次函数画第二座房子。

不要求孩子解释“封装”。能说出“给动作起名字”就够了。

做完之后

收尾只问:如果每座房子大小不一样、颜色不一样,函数能不能继续帮忙?