0

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

我知道这里已经涵盖了这一点:How to get a rule activation to call a python function, using PyClips

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

任何帮助将非常感激!

4

1 回答 1

0

这里有一个如何创建交互式 PyCLIPS 会话的示例。以此为起点,下面是一个如何调用 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
于 2013-03-08T15:45:06.497 回答