我正在尝试编写一个程序来计算平均绩点(GPA),该程序采用成绩列表并输出 GPA。(作为练习,而不是家庭作业)。
测试用例:
(GPA? '(A C B B))
3.0
这是我最好的猜测:
(define a 4.0)
(define b 3.0)
(define c 2.0)
(define d 1.0)
(define f 0.0)
(define (mysum lst)
(let loop ((lst lst) (accum 0))
(cond
[(null? lst) accum]
[else (loop (cdr lst) (+ accum (car lst)))])))
我收到错误:
“+ 中的异常:a 不是数字”
当我运行测试用例时:
(mysum '(1 2 3 a))
它应该返回 10,但不能在过程中将 a 定义为 4.0。
有人可以给我一个简单的解释这个问题吗?