乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 95|回复: 17

[编程交流] 将getint()整数存储到l

[复制链接]

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-6 06:36:29 | 显示全部楼层 |阅读模式
你好
由于我的“初学者”会员资格已经无效(谢天谢地,从某种哲学角度来说),我被迫学习autolisp的ABC,所以请善待我
 
阅读《帮助》之后,我开始用我学到的表达方式为自己创造任务。
我试图要求用户键入5个整数,然后将它们存储到一个列表中
 
下面的代码得到无限循环
(我自己编写代码)
 
  1. [font=Calibri][size=3];_ ask the user to type 5 integers[/size][/font]
  2. [size=3][font=Calibri] ;_put them into a list[/font][/size]
  3. [font=Calibri][size=3](defun C:demo (/ i)[/size][/font]
  4. [font=Calibri][size=3]  (setq i 1)[/size][/font]
  5. [font=Calibri][size=3]  (while[/size][/font]
  6. [size=3][font=Calibri]    (and[/font][/size]
  7. [size=3][font=Calibri]      (setq lst '(getint ("Type 5 numbers")))[/font][/size]
  8. [size=3][font=Calibri]      (<= i 5)[/font][/size]
  9. [size=3][font=Calibri]      (setq i (1+ i))[/font][/size]
  10. [size=3][font=Calibri]    ) ;_and[/font][/size]
  11. [size=3][font=Calibri]  ) ;_while[/font][/size]
  12. [size=3][font=Calibri]) ;_defun`[/font][/size]


  1. (setq lst '(getint ("Type 5 numbers")))

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

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 06:42:43 | 显示全部楼层
像Pbe一样,如果你想说多个整数,例如1 12 3456 2 34 567,那么你可以创建一个循环,当你按两次enter键时,它将停止。这种方式可以是1或5,也可以是所需的固定数字。12345 67890请告知。
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-6 06:45:36 | 显示全部楼层
我希望用户输入1到100之间的数字,然后我将开始玩这个列表45 56 12 64 87。它的方式并不重要,因为我只是在学习。你想展示一些解决问题的方法上帝保佑
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 06:49:45 | 显示全部楼层
一种简单的方法是对nil条目进行while循环检查
 
  1. (setq lst (getint "\nType 5 numbers: "))
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 06:52:57 | 显示全部楼层
示例:
 
  1. (setq ansint 0) ; dummy to start
  2. (while (/= ansint nil)
  3. (setq ansint (getint "\Enter integer press enter to stop"))
  4. (setq intans (cons ansint intans))
  5. )
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-6 06:57:32 | 显示全部楼层
 
1000-9999=4位
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 06:59:41 | 显示全部楼层
 
 
是的,数字将是我的死亡
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
211
发表于 2022-7-6 07:04:15 | 显示全部楼层
 
 
以下是确定位数的另一种方法:
  1. (defun C:demo (/ i lst)
  2. (while
  3.    (and
  4.      (< (length lst) 5)
  5.      (setq i (initget 7) i (getreal "\nEnter number from 1 to 100 : "))
  6.            )
  7.    (if
  8.      (<= i 100)
  9.      (print (Setq lst (cons (fix i) lst)))
  10.      (princ "\n<<Number out of range>>")
  11.      )
  12.    )
  13. lst
  14. (princ)
  15. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:06:07 | 显示全部楼层
 
很好,李,我知道除了使用常用的算子外,还有一个数学解。
 
你能用其他人都能理解的方式解释函数日志吗?
回复

使用道具 举报

218

主题

699

帖子

483

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1090
发表于 2022-7-6 07:09:33 | 显示全部楼层
 
干杯pBe
 
 
你还有多久?
 
简单解释一下,AutoLISP log函数返回所提供数字的自然对数(通常写为“ln”),即以e(2.718…)为底的对数,或逆指数函数。
 
对于一般的对数,我们有:
也就是说,b的对数底a产生一个数字,使得a提升到该数字将等于b。
 
在我的函数中,我计算一个值x,这样:
  1. (defun C:demo2 (/ i lst)
  2. (while
  3.    (and
  4.      (< (length lst) 5)
  5.      (setq i (initget 7)
  6.            i (getreal "\nEnter 5 digit number: "))
  7.      )
  8.    (if
  9.      (< [color="blue"]9999[/color] i 100000)
  10.      (print (Setq lst (cons (fix i) lst)))
  11.      (princ "\n<<Number out of range>>")
  12.      )
  13.    )
  14. lst
  15. (princ)
  16. )
使用以10为底的对数可以很容易地计算(因为log_x(x)=1):
然而,由于我们只能使用自然对数函数(log),我们必须按以下方式进行:
  1. 8
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 16:04 , Processed in 0.573082 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表