我想知道是否有人可以提供帮助,我一直在玩在线CLIPS教程,所以我有点基础知识,我只想尝试一种规则,要求用户提供布尔'根据用户输入调用python函数的y'或'n'响应。
我知道这里有一点涉及:How to get a rule activation to call a python function, using PyClips
关于在哪里询问用户输入以及如何根据'y'或'n'调用函数,我感到有点困惑。
任何帮助将不胜感激!
答案 0 :(得分:0)
有一个如何创建交互式PyCLIPS会话here的示例。使用它作为开始,这是一个如何调用python函数的示例,具体取决于用户的输入:
import clips
def py_input_is_y():
print 'Input is y.'
def py_input_not_y(s):
print 'Input is not y: %s' % s
def clips_raw_input(prompt):
return clips.String(raw_input(prompt))
clips.RegisterPythonFunction(py_input_is_y, "input-is-y")
clips.RegisterPythonFunction(py_input_not_y, "input-not-y")
clips.RegisterPythonFunction(clips_raw_input, "raw-input")
clips.Build('''
(defrule get-input
(initial-fact)
=>
(bind ?x (python-call raw-input "Enter y or n:"))
(if (= (str-compare ?x "y") 0)
then (python-call input-is-y)
else (python-call input-not-y ?x)))
''')
假设代码在getinput.py
中,这里是示例输出:
>>> from getinput import *
>>> clips.Reset()
>>> clips.Run()
Enter y or n:y
Input is y.
1
>>> clips.Reset()
>>> clips.Run()
Enter y or n:foo
Input is not y: foo
1