明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 779|回复: 13

[基础] 字符串yse no循环取值,如何写才正确

[复制链接]
发表于 2018-5-22 19:01 | 显示全部楼层 |阅读模式
本帖最后由 zzl9105 于 2018-5-22 19:03 编辑

我试过if ,while都不行,请高手指点一下(字符串变量为YON)(这些句子已在循环语句中)

                                 (IF (= YON "YSE") (setq YON "NO"))
                                 (IF (= YON "NO") (setq YON "YSE"))

                                 (while (= YON "YSE") (setq YON "NO"))
                                 (while (= YON "NO") (setq YON "YSE"))

应该用哪个基础函数呀,或者上面的写法要变一下,达到的效果为:yes no yes no yes no..........
谢谢


再用个or把上面的语句括起来么?
发表于 2018-5-25 10:55 | 显示全部楼层
(cadr (assoc you '(("yes" "no")("no" "yes"))))

点评

赞,另辟蹊径  发表于 2018-5-25 11:29
回复 支持 1 反对 0

使用道具 举报

发表于 2018-5-22 21:39 | 显示全部楼层
(IF (= YON "NO") (setq YON "YSE") (setq YON "NO"))

点评

我开始也是用这个句型,我是这样写的(IF (= YON "YES") (setq YON "NO") (setq YON "YES")),结果没有成功,就放弃了这种写法,后面用if or组合完成了目标求值。  发表于 2018-5-23 09:22
发表于 2018-5-23 09:06 | 显示全部楼层
(setq yon (cadr (member yon '("YES" "NO" "YES"))))

点评

请问怎么用? (defun c:133() (setq A (cadr (member A '("a" "b" "a")))) (alert A) ) 错误: 参数类型错误: stringp nil  发表于 2018-5-23 09:33
如果yon以yes开始,则返回值为'("YES" "NO" "YES"),这样不对吧  发表于 2018-5-23 09:24
发表于 2018-5-23 09:31 | 显示全部楼层
你这样试试:
(defun c:13()
(IF (= YON "NO") (setq YON "YSE") (setq YON "NO"))
(alert YON)
)
 楼主| 发表于 2018-5-23 09:35 | 显示全部楼层
669423907 发表于 2018-5-23 09:31
你这样试试:
(defun c:13()
(IF (= YON "NO") (setq YON "YSE") (setq YON "NO"))

顺便问下关于子函数的问题:子函数返回值,是用alert 来返回的么,刚开始接触子函数,不知道它的返回原则,或者主、子函数的写法要求。
发表于 2018-5-23 09:40 | 显示全部楼层
直接用啊直接用啊
发表于 2018-5-23 16:05 | 显示全部楼层
用COND 函数?你试试看 是不是 你要的意思
发表于 2018-5-23 19:06 | 显示全部楼层
试试看,默认是 No,也改为默认是 Yes

  1. (defun test()
  2. (setq n 0)
  3. (while
  4.         (progn
  5.                 (initget "Yes No ")
  6.                 (setq YON (getpoint "\n您是否继续循环[是(Yes)/<否(No)>]:"))
  7.                 (or YON (setq YON "No"))
  8.                 (cond
  9.                         ((= YON "Yes")
  10.                                 (princ "\n您选择了继续...")
  11.                                 (princ (setq n (1+ n)))
  12.                                 (princ)
  13.                                 t
  14.                         )
  15.                         ((= YON "No")
  16.                                 (princ "\n您选择了结束.")
  17.                                 (princ)
  18.                                 nil
  19.                         )
  20.                         (t
  21.                                 (princ "\n当前输入不合法,请重新输入")
  22.                                 t
  23.                         )
  24.                 )
  25.         )
  26. )
  27. )
发表于 2018-5-23 19:14 | 显示全部楼层
  1. (setq a (IF (= a "YES") "NO" "YES"))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-18 17:46 , Processed in 1.010074 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表