打印输入数字的总和
Print the sum of entered numbers
我正在使用命令提示符和记事本,但无法打印输入数字的总和。
我试过了
(format t "Sum ~d ~%" I don't know what should put here)
and I know if I put num then there's no value
这是我的代码
(princ"Enter how many numbers to read: ")
(defparameter a(read))
(defun num ()
(loop repeat a
sum (progn
(format *query-io* "Enter a number: ")
(finish-output)
(parse-integer (read-line *query-io* )))))
(num)
谢谢
你快到了。而不是下面的 ...
,format
需要一个数字:
(format t "Sum ~d ~%" ...)
如果你输入 num
,这将不起作用
(format t "Sum ~d ~%" num)
因为 num
引用了一个名为 num
的变量,它在您的环境中不存在。您定义了一个名为 num
的 函数 。该函数在调用时会计算一个值,因此您需要 调用 名为 num
.
的函数
你在 Lisp 中调用函数的方式是写 (num)
,这是用零参数调用函数 num
的语法。
同样,你也可以调用 (funcall #'num)
,这有点不同:funcall
接受一个函数 object 并调用它,而 #'num
是访问绑定到符号 num
的函数对象的语法。事实上 #'num
是 (function num)
的一种更短的写法,其中 function
是一个特殊的运算符,它知道如何 return 一个给定名称的可调用对象。
你的情况可以直接写(num)
,如下:
(format t "Sum ~d ~%" (num))
这种形式的计算首先按顺序计算所有参数,T
,控制字符串,然后是(num)
。在评估 (num)
时,它会提示输入 a
个数字。最终,由于循环,它将 return 和,并且 format
的参数将是已知的。然后 format
将被执行,其所有参数将绑定到计算值。
我正在使用命令提示符和记事本,但无法打印输入数字的总和。
我试过了
(format t "Sum ~d ~%" I don't know what should put here)
and I know if I put num then there's no value
这是我的代码
(princ"Enter how many numbers to read: ")
(defparameter a(read))
(defun num ()
(loop repeat a
sum (progn
(format *query-io* "Enter a number: ")
(finish-output)
(parse-integer (read-line *query-io* )))))
(num)
谢谢
你快到了。而不是下面的 ...
,format
需要一个数字:
(format t "Sum ~d ~%" ...)
如果你输入 num
,这将不起作用
(format t "Sum ~d ~%" num)
因为 num
引用了一个名为 num
的变量,它在您的环境中不存在。您定义了一个名为 num
的 函数 。该函数在调用时会计算一个值,因此您需要 调用 名为 num
.
你在 Lisp 中调用函数的方式是写 (num)
,这是用零参数调用函数 num
的语法。
同样,你也可以调用 (funcall #'num)
,这有点不同:funcall
接受一个函数 object 并调用它,而 #'num
是访问绑定到符号 num
的函数对象的语法。事实上 #'num
是 (function num)
的一种更短的写法,其中 function
是一个特殊的运算符,它知道如何 return 一个给定名称的可调用对象。
你的情况可以直接写(num)
,如下:
(format t "Sum ~d ~%" (num))
这种形式的计算首先按顺序计算所有参数,T
,控制字符串,然后是(num)
。在评估 (num)
时,它会提示输入 a
个数字。最终,由于循环,它将 return 和,并且 format
的参数将是已知的。然后 format
将被执行,其所有参数将绑定到计算值。