0

誰かが助けてくれるかどうか疑問に思っています。私はオンラインの CLIPS チュートリアルをいじっていたので、基本はちょっとわかりました。ユーザーにブール値の 'y' またはユーザーの入力に応じて Python 関数を呼び出す「n」応答。

私はこれがちょっとここでカバーされていることを知っています: PyClipsを使用して、Python関数を呼び出すためのルールアクティベーションを取得する方法

ユーザーの入力を求める場所と、「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 に答える