我正在尝试创建一个函数,在输入7个值之后,将它们放入一个数组中,并从该数组中将每个元素添加到另一个变量(avg)。
我一直得到“变量AVG未绑定”。我不知道问题出在哪里。
(defun readTestScores()
(let ((examScore 0)
(avg 0)))
(setf testScore (make-array 7))
(format t "~&ENTER EXAM SCORE ~23T: ")
(setq examScore(read))
(format t "~&ENTER ALL TEST SCORES ~23T: ")
(dotimes (i 7)
(setf (aref testScore i) (read))
)
(dotimes (i 7)
(setq avg (+ avg (aref testScore i)))
)
)
(readTestScores)
答案 0 :(得分:1)
您对let
的使用不正确。它应该是:
(let ((examScore init-value)
(avg 0))
let-body)
这样您就可以声明并初始化两个局部变量,其中examScore
将初始化为init-value
。 但是,您已声明examScore
并将其初始值定义为(avg 0)
,这将是使用参数值0调用函数avg
的结果。 avg
函数可能未定义,因为这不是您的意图,因此是未绑定的消息。
答案 1 :(得分:0)
将testScore数组的总和分配给avg变量。
(let avg (reduce #'+ testScore))
编辑:
(setq avg (/ (reduce #'+ testScore) 7))