我开发的python应用程序通过pyswip连接到Prolog。
以下代码是我从prolog中提出问题时的代码。
self.prolog = Prolog()
self.prolog.consult("Checker.pl")
self.prolog.query("playX")这是我的Prolog代码示例
playX :-
init(B),
assert(min_to_move(x/_)),assert(max_to_move(o/_)),
play(human, x, B).query ("playX")时,有一条消息
Exception AttributeError: 'swipl_qid' in <bound method _QueryWrapper.__del__ of <pyswip.prolog._QueryWrapper object at 0x0000000004620288>> ignored发生了什么?
Ps。我使用全部64位: Python 2.7、SWI-Prolog、pyswip、Visual Studio 2013
发布于 2015-01-16 09:55:18
实际上,这不是一个错误,而是一个奇怪的消息,如果你不迭代或转换你的查询结果。如果你不是:
self.prolog.query("playX")您可以这样写:
result = list(self.prolog.query("playX"))然后变量"result“将包含查询的一组解决方案(在本例中,您将获得空的list []),并且不会引发异常。
发布于 2016-03-30 05:48:17
您需要像在Python中一样执行查询。
对于x in self.prolog.query("playX"):打印x
https://stackoverflow.com/questions/27580550
复制相似问题