首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python应用程序中忽略'swipl_qid‘

在Python应用程序中忽略'swipl_qid‘
EN

Stack Overflow用户
提问于 2014-12-20 21:08:11
回答 2查看 170关注 0票数 0

我开发的python应用程序通过pyswip连接到Prolog。

以下代码是我从prolog中提出问题时的代码。

代码语言:javascript
复制
self.prolog = Prolog()
self.prolog.consult("Checker.pl")
self.prolog.query("playX")

这是我的Prolog代码示例

代码语言:javascript
复制
playX :-
      init(B),
      assert(min_to_move(x/_)),assert(max_to_move(o/_)),
      play(human, x, B).

query ("playX")时,有一条消息

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

发布于 2015-01-16 09:55:18

实际上,这不是一个错误,而是一个奇怪的消息,如果你不迭代或转换你的查询结果。如果你不是:

代码语言:javascript
复制
self.prolog.query("playX")

您可以这样写:

代码语言:javascript
复制
result = list(self.prolog.query("playX"))

然后变量"result“将包含查询的一组解决方案(在本例中,您将获得空的list []),并且不会引发异常。

票数 0
EN

Stack Overflow用户

发布于 2016-03-30 05:48:17

您需要像在Python中一样执行查询。

对于x in self.prolog.query("playX"):打印x

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27580550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档