如何计算输入年份之间的天数

How to compute number of days between the entered years

我怎样才能得到给定年份之间的天数,我应该使用循环吗?

这是我现在拥有的

(princ "Enter starting year: ")
(defparameter w (read))
(princ "Enter ending year: ")
(defparameter x (read))
(defun print-list (w x)
      (format t "Starting year: ~a ~%" (list w))
      (format t "Ending year: ~a ~%" (list x)))

(terpri)

(if(> x w)
   (format t "Number of year/s: ~a ~%"(- x w))
   (format t "Number of year/s: ~a ~%"(- w x)))

我正在尝试计算年份之间的天数,但输出总是失败。

执行计算的一组简单函数如下:

 (defun leap-year-p (year)
   "return t if year is a leap-year, nil otherwise"
   (or (and (zerop (mod year 4))
            (not (zerop (mod year 100))))
       (zerop (mod year 400))))

 (defun days-of (year)
   "return the number of days of a certain year"
   (if (leap-year-p year) 365 366))

 (defun days-between (start-year end-year)
   "return the number of days between start-year (included)
    and end-year (excluded)"
   (when (<= start-year end-year)
     (loop for year from start-year below end-year sum (days-of year)))

调用的几个例子:

CL-USER> (days-between 2020 2022)
731
CL-USER> (days-between 1820 1999)
65470
CL-USER> (days-between 2020 2020)
0
CL-USER> (days-between 1980 1890)
NIL

您可以使用这些功能来解决您的问题。