我试图使用 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
,如果您查看问题函数,您会注意到它曾经在函数本身内部完成。
关于如何相应地更改序言部分的任何想法?