专家系统用户输入来调用一个函数

时间:2013-03-08 13:06:27

标签: expert-system

我想知道是否有人可以提供帮助,我一直在玩在线CLIPS教程,所以我有点基础知识,我只想尝试一种规则,要求用户提供布尔'根据用户输入调用python函数的y'或'n'响应。

我知道这里有一点涉及:How to get a rule activation to call a python function, using PyClips

关于在哪里询问用户输入以及如何根据'y'或'n'调用函数,我感到有点困惑。

任何帮助将不胜感激!

1 个答案:

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