使用Common Lisp我正在尝试循环学生列表,如果GPA大于或等于3.0,我想将1推到另一个名为equal_names的列表中.我遇到的问题是解释器一直说比较列表中的GPA是"不属于类型(或理性浮点数)".为什么我收到此错误?
是的,这是作业.这也是我第一次在这里问,所以如果你还需要什么,请告诉我.
列表的样本我从GPA获得GPA,其中GPA是2.307 ......:
(SETQ students (LIST
(LIST (LIST 'Abbott 'Ashley 'J) '8697387888 'NONE 2.3073320999676614)))
Run Code Online (Sandbox Code Playgroud)
我写的代码:
(setq gpa_count ())
(loop for x in students
if(>= 3.0 (cdr (cdr (cdr x))))
do(push '1 gpa_count))
Run Code Online (Sandbox Code Playgroud)
给定非空列表cdr返回该列表的尾部,即包含列表的所有元素但是第一个的列表.需要注意的重要一点是它返回一个列表,而不是一个元素.那是(cdr (cdr (cdr x)))返回列表(2.30733...),而不是浮点数2.30733.