我是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
答案 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>