第二课 猜数字
- 知识点
- 变量定义
- 嵌套调用
- 条件判断
小朋友在课堂上经常玩这样的游戏:一个人心里想一个数字(1~100以内),另一个人猜,看谁能用最少的次数猜出来。这时告诉孩子,你心里想一个数字,让计算机猜,或者计算机想一个数字,你来猜。这个游戏,孩子是无法抗拒的。
小朋友想一个数字,计算机猜
(define lower 1)
(define upper 100)
(define guess2
(lambda ()
(display '计算机猜这个数字是:)
(quotient (+ lower upper) 2)
)
)
(define too-small
(lambda ()
(set! lower (max lower (+ (guess2) 1)))
(guess2)))
(define too-big
(lambda ()
(set! upper (min upper (- (guess2) 1)))
(guess2)))
计算机想一个数字,小朋友猜
(define secret (random 100))
(define guess
(lambda ()
(display "请输入你猜的数字:")
(let ((b (string->number (read-line))))
(cond
((= b secret) (display '恭喜!猜对了) (display secret) (set! secret (random 100)))
((> b secret) (display '笨蛋!太大了) (guess))
((< b secret) (display '笨蛋!太小了) (guess))
(else (display '不是有效数字) (guess))
)
)
))
这么短的代码就能实现猜数的功能,小朋友很惊讶!于是小朋友自己玩了很多遍。过了会儿就离开去干别的事情了。
程序逻辑似乎有点难,小朋友在遇到不好理解的东西时习惯性地逃避。好吧,让小朋友歇会儿,我来想想下一课的内容。最好和小朋友念的数学课有关联。