如何使用函数在CLIPS中搜索字符串

时间:2015-12-05 20:24:35

标签: artificial-intelligence clips expert-system

我是CLIPS的新手,我正在编写一个互动的葡萄酒检测系统。系统使用yes和no等输入。但是我想再拿一个级别让它接受像这样的值。 “我不确定”。

基本上,我想将以下伪代码转换为CLIPS。

def ask_for_input():

    user_inp = input("gimme dat")

    if "yes" in user_inp:
        return "yes"
    elif "no" in user_inp:
        return "no"
    elif "know" in user_inp:
        return "idk"
    else :
        return "invalid"
        # ask for input again now

1 个答案:

答案 0 :(得分:1)

使用str-index在另一个字符串中搜索一个字符串。由于“know”包含子字符串“no”,因此您首先要搜索“know”:

CLIPS> 
(deffunction ask_for_input ()
   (bind ?user_inp (readline))
   (if (str-index "yes" ?user_inp)
      then (return "yes")
      else 
      (if (str-index "know" ?user_inp)
         then (return "idk")
         else
         (if (str-index "no" ?user_inp)
            then (return "no")
            else (return "invalid")))))
CLIPS> (ask_for_input)
yes
"yes"
CLIPS> (ask_for_input)
yah
"invalid"
CLIPS> (ask_for_input)
I don't know
"idk"
CLIPS> (ask_for_input)
not really
"no"
CLIPS>