果果编程课】004 数字变形工厂(map)
课程目标(45分钟)
学会 map:一次性对列表中所有元素做同样的操作
第一部分:问题引入(5分钟)
老师故事:
“上节课果果攒了零花钱
(list 10 20 30 40 50)。如果每笔钱都变成2倍,怎么办?”一个一个改?太累了!今天教你 数字变形工厂 —— 一个咒语,整串数字一起变!
第二部分:认识 map(15分钟)
1. 基本语法(5分钟)
1 | #lang racket |
运行结果:'(20 40 60 80 100)
解释:
map= 变形工厂启动(lambda (n) (* n 2))= 机器说明书:”拿数字n,输出n×2”savings= 原材料
2. 动手练习(10分钟)
练习1:加10机器1
2(map (lambda (n) (+ n 10)) savings)
; 结果:'(20 30 40 50 60)
练习2:变字符串机器1
2(map (lambda (n) (number->string n)) savings)
; 结果:'("10" "20" "30" "40" "50")
练习3:加”元”机器1
2
3
4 (map (lambda (n)
(string-append (number->string n) "元"))
savings)
; 结果:'("10元" "20元" "30元" "40元" "50元")
小挑战:把每个数字变成它的平方1
2(map (lambda (n) (* n n)) savings)
; 结果:'(100 400 900 1600 2500)
第三部分:string列表变形(15分钟)
1. 名字大变身(8分钟)
1 | (define names (list "果果" "小明" "小红")) |
练习:加”你好,”在前面1
2(map (lambda (name) (string-append "你好," name)) names)
; 结果:'("你好,果果" "你好,小明" "你好,小红")
2. 重复魔法(7分钟)
1 | ; 每个名字重复3遍 |
练习:名字变”名字!”1
2(map (lambda (name) (string-append name "!")) names)
; 结果:'("果果!" "小明!" "小红!")
第四部分:综合练习(8分钟)
挑战:制作价格标签
1 | (define prices (list 10 25 50 100)) |
进阶:如果价格>50,加”(贵)”1
2
3
4
5
6(map (lambda (p)
(if (> p 50)
(string-append (number->string p) "元(贵)")
(string-append (number->string p) "元")))
prices)
; 结果:'("10元" "25元" "50元" "100元(贵)")
第五部分:总结(2分钟)
核心口诀
map 就是批量变形术:
(map 变形机器 列表)→ 新列表
回家作业
- 把
(list 1 2 3 4 5)每个数字变成"第X名"(X是数字) - 把
(list "苹果" "香蕉" "橘子")每个变成"我爱吃XX"
都考100分哦

下节课预告
“下节课学 compose 组合魔法 —— 把多个变形机器拼成一个超级机器!”
板书:1
2
3
4
5
6
7
8map = 数字变形工厂
(map (lambda (x) ...) 列表)
常用变形:
(* x 2) → 翻倍
(+ x 10) → 加10
(number->string x) → 变文字
(string-append x "元") → 加单位