第 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 是定义了带参数的函数,调用时却写成空括号。让每个函数都短小、只做一件事,这样「复用」这个好处才明显。
要带这节课吗?请查看 教师与图书馆员指南 ,里面有上课流程、常见错误,以及一个不用电脑的备用活动。
这节课完成了吗?标记为已完成,解锁下一周。