【果果编程课】003 《魔法数字串 —— list、car、cdr、lambda 基础》
今天我们要学会的三件小魔法
- 把一堆数字串成一条“魔法数字链”(list)
- 从链子上“摘第一个数字”(car)和“看剩下的一串”(cdr)
- 请一个“不需要名字的临时小助手”帮忙算东西(lambda)
开场故事(5分钟)
老师拿着几颗糖果(或画在纸上的数字:10、20、30、40、50),串成一串:
“果果每周攒零花钱:
第一周10元,第二周20元,第三周30元……
如果我们想一次告诉电脑‘我攒了这些钱’,要怎么说呢?
一个一个写太麻烦啦!
今天我们学会用一个魔法,把它们全部串成一条‘魔法数字链’!”
第一关:学会串数字链(list)(10分钟)
在DrRacket里一起敲:
1 | (define savings (list 10 20 30 40 50)) |
屏幕显示:
‘(10 20 30 40 50)
老师解释:
“这个括号里的东西,就是一条数字链!
就像糖葫芦:10连着20,20连着30……
电脑一下子就记住了整串!”
再试一个:
1 | (define scores (list 85 90 95 100)) |
问孩子:
“你们猜猜,你们班的数学成绩如果串成一条链,会长什么样?”
小练习(让孩子自己敲):
- 定义一条你喜欢的数字链,比如喜欢的零食价格
(例如:(define snacks (list 5 8 12 15)))
第二关:摘糖葫芦 —— car 和 cdr(15分钟)
老师指着糖葫芦串:
“现在我想先吃第一颗(10元),用什么魔法?”
敲代码:
1 | (car savings) |
答案:10
老师说:
“car 就是‘摘第一个’!
读作‘卡’——就像火车的第一节车厢。”
再敲:
1 | (cdr savings) |
答案:’(20 30 40 50)
老师说:
“cdr 就是‘去掉第一个,给我剩下的整串’!
读作‘抠得儿’——就像把第一颗摘掉,剩下的一串还连着。”
层层剥开演示(一起数):
1 | (car (cdr savings)) ; 20 |
白板画过程(推荐):1
2
3
4
5原来链子:10 → 20 → 30 → 40 → 50
car: 10
cdr: 20 → 30 → 40 → 50
再car: 20
再cdr: 30 → 40 → 50
孩子动手练习(8-10分钟):
- 用你刚才定义的链子,敲 (car 你的链子名字)
- 敲 (cdr 你的链子名字)
- 试试连续用 car 和 cdr,找出“第3个数字”
老师巡回:孩子卡住就一起数“第一个、第二个、第三个……”
第三关:请临时小助手 —— lambda(12分钟)
老师说:
“现在我想把这条攒钱链上的每个数字都翻倍(×2),怎么办?
一个一个写太慢!
我们可以请一个‘临时小助手’,他不需要名字,只干一件事——把数字×2。”
先简单玩玩计算:
1 | (* 10 2) ; 20 |
再介绍 lambda:
1 | (lambda (n) (* n 2)) |
老师解释:
“这个就是临时小助手!
意思是:拿一个数字 n,把它×2。”
直接用他算:
1 | ((lambda (n) (* n 2)) 25) ; 50 |
再试加法助手:
1 | ((lambda (x) (+ x 100)) 50) ; 150 |
小练习(孩子敲):
- 请一个临时小助手,把数字+10
试算:((lambda (y) (+ y 10)) 30) → 应该得40 - 请一个临时小助手,把数字平方
试算:((lambda (z) (* z z)) 5) → 应该得25

结束总结 + 预告(3分钟)
老师一起回顾:
“今天我们学会了三招:
- list —— 把数字串成一条链
- car —— 摘第一个,cdr —— 看剩下的链
- lambda —— 请一个临时小助手帮忙算
下节课我们要把这些本领用在画图上!
可以一次把一串颜色变成一串气球,一串数字变成一串不同大小的星星……
准备好画生日礼物了吗?”
回家小作业(简单版)
- 写一条你自己的数字链(至少4个数字)
- 用 car 取出第一个,用 cdr 看剩下的
- 请一个 lambda 小助手,把某个数字×3,算一算
这个版本:
- 每部分都只有1-2个核心代码
- 语言超级口语化,像聊天一样
- 完全不涉及图像,只用数字和糖葫芦比喻
- 练习量小,成功率高
如果觉得还是太快,可以把第三关(lambda)再拆成两节课,或者把作业再简化。
需要我再调整某一部分,或者准备下一节(图形+函数+map)的课程形式,随时告诉我!