教师与图书馆员资源
Python 编程入门
面向工作坊、图书馆和课堂的带课指南
这套课程是写给带课的大人看的:开编程社团的图书馆工作人员、增加拓展单元的老师、工作坊志愿者,或者带着一个孩子学习的家长。不需要编程背景——每一课都会告诉你该说什么、该留意什么。
开始之前
- 适合谁
- 3 至 6 年级,无需任何基础
- 课程长度
- 8 节课,每节 50-60 分钟
学生需要准备什么
- 一台带现代浏览器(Chrome、Edge、Safari 或 Firefox)的电脑、笔记本或 Chromebook。
- 能上网,以便打开课程页面并加载浏览器里的 Python 练习区。
- 可选:用来规划代码的纸,以及单独学习时用的耳机。
如何在图书馆或课堂上带一节课
- 打开本周的课程页面,全班一起读「这个概念」和词汇表。
- 在共享屏幕上演示一次起始代码,并运行它,让所有人都看到输出。
- 留时间让学生自己运行起始代码,并试着做小挑战。
- 学生做题时在教室里走动,用建议的问题检查他们是否真的理解。
- 以调试挑战和反思问题作为全班讨论收尾。
- 预留 50 到 60 分钟。如果时间紧张,小挑战或反思可以带回家做。
如何帮助从没编过程的学生
- 让学生放心:报错是编程中很正常的一部分,并不代表失败。
- 鼓励他们动手打字修改,而不是复制粘贴,这样语法才记得住。
- 让第一次写代码的学生和同伴配对,或安排在你方便随时查看的位置。
- 用大白话把代码读出来(「print 会把这段文字显示在屏幕上」),帮助建立词汇。
- 让提前完成的学生去做拓展挑战,而不是干等全班。
逐课带课指南
每周一节。每一节都写得让你不懂编程也能带。
第 1 周
什么是 Python?
本课目标
学生理解代码是一组有顺序的指令,并用 print() 写出自己的第一个程序。
所需材料
- 带浏览器的电脑或平板
- 打开到练习区的第 1 周课程页面
- 可选:一块白板,用来一起写 print() 的例句
需要讲解的内容
- 程序是一串指令,计算机会按顺序从上往下执行。
- print() 会把引号里的内容原封不动地显示在屏幕上。
- 每个 print() 都需要括号,文字则需要用引号包起来。
学生常见错误
- 文字忘了加引号,比如写成 print(你好) 而不是 print("你好")。
- 括号漏写或没有配对。
- 指望计算机猜出你的意思——它只会原样打印你输入的内容。
可以提的问题
- 在运行之前,你觉得这行会打印出什么?
- 如果把两行 print 的顺序调换会怎样?
- 计算机为什么在这一行报错?
可选拓展
写一个括号里什么都不放的 print(),给卡片加一个空行。用它把卡片分成整齐的两部分。
如果电脑数量有限
玩「机器人指令」:一个学生用口头的分步命令指挥另一个学生画出一个简单图形。步骤缺失或顺序错乱,就能看出计算机执行指令有多死板。
第 2 周
变量与数据类型
本课目标
学生把信息存进变量,并用它们配合 print() 拼出句子。
所需材料
- 带浏览器的电脑和第 2 周课程页面
- 可选:贴了标签的信封或便利贴,用来把变量比作盒子
需要讲解的内容
- 变量就是一个贴了标签的盒子,里面存着可以反复使用的值。
- 文字值(字符串)要加引号;数字值不用。
- f-string 可以用花括号把变量塞进句子里。
学生常见错误
- 在 f-string 里给变量名加引号,结果打印出的是名字而不是它的值。
- 给本该是数字的值加了引号。
- 变量命名不统一,出现空格或多余的大写字母。
可以提的问题
- 这个变量现在存的是什么?
- 这些值里哪些是文字,哪些是数字?
- 要描述另一个人,我们怎样才能不用把每一行都重写一遍?
可选拓展
再加一个数字变量 high_score,并打印一句同时用到 name 和 high_score 的话,比如:Alex 的最好成绩是 25。
如果电脑数量有限
发下贴了标签的信封(姓名、年龄、最喜欢的动物),让学生往每个信封里放一张纸条。把信封读出来,就演示了变量如何保存并重复使用一个值。
第 3 周
输入与互动
本课目标
学生用 input() 收集回答并作出回应,把程序变成一场双向对话。
所需材料
- 带浏览器的电脑和第 3 周课程页面
- 可选:一份印好的脚本,用于不上机的聊天机器人角色扮演
需要讲解的内容
- input() 会提出一个问题,并暂停,直到用户输入答案并按下回车。
- 答案可以存进变量,在程序后面继续使用。
- input() 拿回来的永远是文字。
学生常见错误
- 忘了给 input() 里的提示文字加引号。
- 以为用户还没按回车,程序就会继续往下跑。
- 还没把答案转成数字就想拿它做运算(那是下周的内容)。
可以提的问题
- 程序在哪里停下来等用户?
- 这和上周那个只会打印的程序有什么不同?
- 程序应该用这个答案回应些什么?
可选拓展
先问玩家的名字和最喜欢的游戏,然后打印一句同时用到两者的话,比如:Alex 准备好玩足球了!
如果电脑数量有限
做一次聊天机器人角色扮演:一个学生扮演程序,只能用一份印好的脚本加上用户给出的答案来回应。这展示了输入如何驱动回应。
第 4 周
条件判断
本课目标
学生用 if、elif 和 else,让程序根据答案做出不同的反应。
所需材料
- 带浏览器的电脑和第 4 周课程页面
- 可选:白板或地面空间,用来画出或走一遍决策树
需要讲解的内容
- 条件就是一个非真即假的问题。
- 缩进在 if 下面的代码,只有条件为真时才会执行。
- elif 和 else 处理其他情况。
- 比较两个值要用两个等号(==);一个等号(=)是赋值。
学生常见错误
- 比较两个值时用了 = 而不是 ==。
- 忘了给 if、elif 或 else 下面的代码加缩进。
- 忘了文字比较区分大小写("Earth" 不等于 "earth")。
可以提的问题
- 我们在这里检查的是什么条件?
- 如果答案是这个,会走哪一条分支?
- 程序为什么选了那个回应?
可选拓展
把它改成性格测试:提一个「你更愿意选哪个」的问题,用 if、elif 和 else 为每个选项打印不同的结果。
如果电脑数量有限
用胶带或指示牌在地上摆一棵决策树:学生回答一个「是/否」问题,然后走到对应的分支上。这让 if/elif/else 变得看得见。
第 5 周
循环
本课目标
学生用 while 循环重复动作,让玩家有不止一次机会。
所需材料
- 带浏览器的电脑和第 5 周课程页面
- 可选:用来玩「猜大猜小」纸上游戏的纸
需要讲解的内容
- 循环会重复执行代码,这样你就不用一遍遍重写。
- while 循环只要条件还为真就一直跑下去。
- 循环里必须有东西最终让条件变为假,否则它会永远跑下去。
- int() 把输入的文字变成数字,好拿来比较。
学生常见错误
- 写出一个条件永远不会变为假的循环(死循环)。
- 忘了用 int(),于是输入的 "7" 永远不等于数字 7,循环也就停不下来。
- 忘了在 while 那一行末尾加冒号。
可以提的问题
- 要让这个循环停下来,必须发生什么?
- 每跑一遍循环,有什么在变化?
- 这个循环为什么可能永远跑下去?我们该怎么修?
可选拓展
把范围改成 1 到 100,并且只给玩家 7 次机会。次数用完就跳出循环,并打印「机会用完了!」。
如果电脑数量有限
玩纸上猜数游戏:一个学生心里想一个 1 到 10 的数,另一个来猜,只被告知「大了」或「小了」。数一数猜了几次,就模拟了循环和比较。
第 6 周
函数
本课目标
学生定义并调用函数,以复用代码并让程序保持条理。
所需材料
- 带浏览器的电脑和第 6 周课程页面
- 可选:一张印好的食谱卡,用来比喻可复用的函数
需要讲解的内容
- 函数是一份可复用的食谱:定义一次,之后需要时随时调用。
- def 用来创建函数;写出它的名字加括号就是调用它。
- 参数是函数接受的输入,写在它的括号里。
- 定义函数并不会运行它——调用才会。
学生常见错误
- 定义了函数却从来不调用。
- 调用函数时没给它需要的参数。
- 忘了 def 那行末尾的冒号,或者函数体没有缩进。
可以提的问题
- 这个函数做什么?它需要什么才能完成任务?
- 函数是在哪里定义的,又是在哪里被调用的?
- 如果不能用函数,这个程序会变成什么样?
可选拓展
写一个函数 next_level(level),让它用你传进去的数字打印一行,比如「你到达第 5 关了!」,然后用几个不同的关卡数分别调用它。
如果电脑数量有限
把一份简单的食谱(比如折纸飞机)写成一串有名字的步骤,然后用不同的输入「调用」它两次,比如换不同颜色的纸。这展示了「定义一次、复用多次」。
第 7 周
列表与随机
本课目标
学生把多个值存进列表,并用 random.choice() 让程序变得不可预测。
所需材料
- 带浏览器的电脑和第 7 周课程页面
- 可选:一个装着纸条的袋子或碗,用来随机抽取
需要讲解的内容
- 列表把多个值装在一个变量里,写在方括号中。
- import random 把随机工具箱引进来。
- random.choice() 从列表里随机挑一个,所以每次运行都可能不同。
学生常见错误
- 忘了在最上面写 import random(会提示「random 未定义」)。
- 写列表时漏了逗号或方括号。
- 以为每次运行输出都应该一样,把随机当成了 bug。
可以提的问题
- 这个程序总共可能产生多少种结果?
- 是什么让每次运行都不一样?
- 我们往列表里加点什么,就能改变这个游戏?
可选拓展
在开头用 input() 问玩家的名字,然后把它用进这个随机故事里,让冒险感觉是属于他的。
如果电脑数量有限
在袋子里放几张写着结果的纸条,让学生抽一张,然后大声接龙编一个随机故事。这就模拟了一个列表加一次随机选择。
第 8 周
结课游戏制作
本课目标
学生规划并做出自己的小游戏,把整门课学到的东西结合起来。
所需材料
- 带浏览器的电脑和第 8 周课程页面
- 写代码前用来规划游戏的纸
需要讲解的内容
- 真正的程序,是把许多分开学过的小概念组合起来。
- 先写一份简短的计划,然后一次加一个功能,边加边测试。
- 一个能跑起来的小游戏,胜过一个跑不起来的宏大游戏。
学生常见错误
- 想一口气把整个游戏写完,而不是分成一小步一小步地测试。
- 又犯回之前的错误(漏冒号、= 与 ==、忘了 int())。
- 跳过计划,然后卡住。
可以提的问题
- 你的游戏最小、能跑起来的版本是什么样的?
- 这里你打算用哪一周学到的概念?
- 你遇到了报错——这条信息在告诉你什么?
可选拓展
把骨架重新设计成你自己的游戏:一轮问答、一个带选择的故事,或者一个刷最高分的挑战。至少用上一个列表、一个函数和一个循环。
如果电脑数量有限
让学生先在纸上设计自己的游戏:目标是什么、玩家输入什么、程序回应什么。没有电脑的学生同样可以完成并展示这份设计。