samifox 发表于 2022-7-6 06:36:29

将getint()整数存储到l

你好
由于我的“初学者”会员资格已经无效(谢天谢地,从某种哲学角度来说),我被迫学习autolisp的ABC,所以请善待我
 
阅读《帮助》之后,我开始用我学到的表达方式为自己创造任务。
我试图要求用户键入5个整数,然后将它们存储到一个列表中
 
下面的代码得到无限循环
(我自己编写代码)
 

;_ ask the user to type 5 integers
;_put them into a list
(defun C:demo (/ i)
(setq i 1)
(while
    (and
      (setq lst '(getint ("Type 5 numbers")))
      (<= i 5)
      (setq i (1+ i))
    ) ;_and

) ;_while
) ;_defun`


(setq lst '(getint ("Type 5 numbers")))
 
你说的5个数字是什么意思?一个五位数的整数?还是每个循环都是一位数?
 
对前者要谨慎
类型5编号:56236
需要一个介于-32768和32767之间的整数。
 
那会是什么?5位数还是单位数?

pBe 发表于 2022-7-6 06:42:43

像Pbe一样,如果你想说多个整数,例如1 12 3456 2 34 567,那么你可以创建一个循环,当你按两次enter键时,它将停止。这种方式可以是1或5,也可以是所需的固定数字。12345 67890请告知。

samifox 发表于 2022-7-6 06:45:36

我希望用户输入1到100之间的数字,然后我将开始玩这个列表45 56 12 64 87。它的方式并不重要,因为我只是在学习。你想展示一些解决问题的方法上帝保佑

pBe 发表于 2022-7-6 06:49:45

一种简单的方法是对nil条目进行while循环检查
 
(setq lst (getint "\nType 5 numbers: "))

BIGAL 发表于 2022-7-6 06:52:57

示例:
 
(setq ansint 0) ; dummy to start
(while (/= ansint nil)
(setq ansint (getint "\Enter integer press enter to stop"))
(setq intans (cons ansint intans))

)

samifox 发表于 2022-7-6 06:57:32

 
1000-9999=4位

BIGAL 发表于 2022-7-6 06:59:41

 
 
是的,数字将是我的死亡

pBe 发表于 2022-7-6 07:04:15

 
 
以下是确定位数的另一种方法:
(defun C:demo (/ i lst)
(while
   (and
   (< (length lst) 5)
   (setq i (initget 7) i (getreal "\nEnter number from 1 to 100 : "))
         )
   (if
   (<= i 100)
   (print (Setq lst (cons (fix i) lst)))
   (princ "\n<<Number out of range>>")
   )
   )
lst
(princ)
)

Lee Mac 发表于 2022-7-6 07:06:07

 
很好,李,我知道除了使用常用的算子外,还有一个数学解。
 
你能用其他人都能理解的方式解释函数日志吗?

samifox 发表于 2022-7-6 07:09:33

 
干杯pBe
 
 
你还有多久?
 
简单解释一下,AutoLISP log函数返回所提供数字的自然对数(通常写为“ln”),即以e(2.718…)为底的对数,或逆指数函数。
 
对于一般的对数,我们有:
也就是说,b的对数底a产生一个数字,使得a提升到该数字将等于b。
 
在我的函数中,我计算一个值x,这样:
(defun C:demo2 (/ i lst)
(while
   (and
   (< (length lst) 5)
   (setq i (initget 7)
         i (getreal "\nEnter 5 digit number: "))
   )
   (if
   (< 9999 i 100000)
   (print (Setq lst (cons (fix i) lst)))
   (princ "\n<<Number out of range>>")
   )
   )
lst
(princ)
)使用以10为底的对数可以很容易地计算(因为log_x(x)=1):
然而,由于我们只能使用自然对数函数(log),我们必须按以下方式进行:
8
页: [1] 2
查看完整版本: 将getint()整数存储到l