我试图使用pyswip来创建一个Q& A(交互式用户)python swi-prolog程序,但我找不到使用python flask读/写pyswip的好方法。该应用程序最初是一个Web应用程序,我正在使用flask来运行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的外部函数,因此在prolog中我有:
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
中我对问题函数的调用,现在我需要将问题函数的arity更改为2:
registerForeign(question,name='ask', arity=2)
question(Question, userInput)
其中userInput
是应该读取用户输入的python raw_input
解析器,如果你查看问题函数,你会注意到它曾经在函数本身内完成。
有关如何相应更改序言部分的任何想法?