1

我试图使用 pyswip 创建一个问答(交互式用户)python swi-prolog 程序,但我找不到使用 python 烧瓶读取/写入 pyswip 的好方法。该应用程序最初是一个 Web 应用程序,我正在使用烧瓶来运行 python 代码。

我有一个向用户提问的功能,定义如下:

def question(Question):
  print 'Does it have the following attributes: ', Question,'?'
  Response = raw_input()
  if Response == 'yes' or Response == 'y':
    return True
  else:
    return False

问题函数被定义为具有 arity 1 的外部函数,所以在序言中我有这个:

registerForeign(question,name='ask', arity=1)
prolog.assertz("verify(S) :- (yes(S) -> true ;(no(S) -> fail ;(ask(S) -> assert(yes(S)); assert(no(S)), fail)))")

请注意ask(S)assertz这是对问题函数的调用,现在我需要将问题函数的数量更改为 2:

registerForeign(question,name='ask', arity=2) 
question(Question, userInput) 

userInput应该读取用户输入的python解析器在哪里raw_input,如果您查看问题函数,您会注意到它曾经在函数本身内部完成。

关于如何相应地更改序言部分的任何想法?

4

0 回答 0