跳到主要内容

第 6 周,共 8 周

函数

随着程序变大,学生把代码打包成可以命名、可以复用的函数。他们会写一些小的辅助函数——问候玩家、显示得分——并在需要时调用,最后的游戏正是靠这一点保持条理的。

预计时间
60 分钟
项目
游戏辅助函数

核心思路

函数是一份可复用的食谱。你在 def 后面把步骤写一次并给它取个名字;之后只要调用这个名字,就能跑完所有这些步骤。参数让你每次都能给函数不同的信息,所以一个 greet 函数就能欢迎任何玩家。写出函数并不会运行它,调用才会。

你将学到什么

  • 用 def 定义一个函数,并通过调用它的名字来运行。
  • 用参数把信息传进函数。
  • 解释函数为什么能让你不必重复写代码。
  • 修好一次漏掉参数的函数调用。

新词汇

函数
一段有名字的代码,调用它的名字就能反复运行。
def
用来创建新函数的关键字。
参数
函数接受的输入,写在它的括号里。
调用
写出函数名并加上括号来运行它,比如 greet("Alex")。

项目:游戏辅助函数

编辑下面的初始代码,然后按“运行”看看效果。想回到原始代码,随时点“重置初始代码”。

main.py
终端

运行你的程序来查看输出。

预期输出

欢迎你,Alex!
得分:0
得分:10

小挑战

写一个新函数 game_over(),让它打印「谢谢游玩!」,并在程序最后调用它。

调试挑战

这段代码报错,说缺少一个参数。greet 函数在括号里要一个 player。看看最后一行——调用时忘了给它什么?

有错误的代码

def greet(player):
    print(f"欢迎你,{player}!")

greet()
查看答案
调用函数时把值给它:
greet("Alex")

拓展挑战

写一个函数 next_level(level),让它用你传进去的数字打印一行,比如「你到达第 5 关了!」,然后用几个不同的关卡数分别调用它。

回顾思考

你把 show_score 写了一次,却用了两次。在你的结课游戏里,有什么事你会做不止一次、可以变成一个函数?

教师笔记

把两件事分清楚:定义函数不会运行它,调用才会。常见的 bug 是定义了带参数的函数,调用时却写成空括号。让每个函数都短小、只做一件事,这样「复用」这个好处才明显。

要带这节课吗?请查看 教师与图书馆员指南 ,里面有上课流程、常见错误,以及一个不用电脑的备用活动。

这节课完成了吗?标记为已完成,解锁下一周。