我想创建一个函数来验证列表的数字是否介于1和10之间(包括1和10) . 如果他们这样做,我想将它添加到我创建的新列表中 . 然而,如果它们未能落在该范围内,我决定将它们转换为适合而不是丢弃它们(通过添加(1(随机10)) .
(defun fit (lst)
"(lst) check every number if it fits the range (1-10)"
(do ((fit lst (cdr fit))
(range nil))
((null fit) (reverse range))
(if (and (>= fit 1) (=< fit 10))
(seft ((cons fit range))))
(or (< fit 1) (> fit 10))
(cons (+ fit (1+ (random 10))) range)))
代码从(defun fit ...)开始 . 然而,它不起作用,我没有做任何类型的改变,主要是因为我的知识有限 . 任何帮助或见解将不胜感激 . 谢谢 .
3 回答
这个怎么样:
我想你自己想做太多的工作 . 想想更高的功能 . 您的问题陈述已经告诉您一半:“如果它适合1-10范围,请检查 every 数字” .
使用(每个)怎么样?然后你需要传递一个检查单个数字的函数 . 可能是lambda ......
我认为你想在每个元素上应用
make-fitting
函数 .如果您预期不同的限制,您应该将它们作为可能的可选参数给出: