【发布时间】:2017-07-07 05:51:44
【问题描述】:
我需要帮助创建一个函数,该函数将计算列表中也可以包含字母的平均值。例如:
(mean '(1 2 3 4 5)); → 3
(mean '(1 a 2 b c d e 3)); → 2
(mean '(a b c d e)); → "Error: no numbers in list"
到目前为止,这就是我所拥有的,但我得到了这个我不明白的错误:
(define new_list '())
(define (mean lis)
(if (null? lis)
(display "Error: no numbers in list")
(avg(set! new_list (my-filter number? lis))) ;my-filter, filters out everything except numbers
)
)
(define (avg lis)
(/ (apply + lis) (length lis)))
我得到的错误信息:
mcar: contract violation
expected: mpair?
given: #<void>
任何帮助将不胜感激
【问题讨论】:
标签: list scheme racket average mean