将列表从 Python 发送到 Prolog PySwip
Send list from Python to Prolog PySwip
我正在 Python 和 Prolog 上使用库 PySwip 编写程序。我需要将列表从 Python 发送到 Prolog。我是这样做的:
from pyswip import Prolog
p = Prolog()
p.assertz("fruits([apple,banana,orange])") # Create list
p.assertz("result(X) :- fruits(L), member(X, L)") # Rule for checking if an element in a list
print(list(p.query("result(orange)."))) # Return True if element in list
但我需要将列表作为一个单独的对象,因为在问题之前执行一些操作。帮助我如何在 Prolog
中发送对象
from pyswip import Prolog
p = Prolog()
fruits = [apple,banana,orange]
p.assertz("How send to list fruits ???") # I dont know how to write this request
谢谢大家的预支
我不知道 Prolog
和 PySwip
,我不知道我是否理解问题,但它看起来像普通字符串,因此您可以使用 "fruit( {} )".format(fruits)
或使用 f-string f"fruit( {fruit} )"
from pyswip import Prolog
p = Prolog()
fruits = ['apple','banana','orange']
text = f"fruits({fruits})"
print(text)
p.assertz(text)
p.assertz("result(X) :- fruits(L), member(X, L)")
print(list(p.query("result(orange).")))
但在 Python 中它必须是带字符串的列表。
它会创建字符串 fruits(['apple', 'banana', 'orange'])
并在引号 ' '
中包含项目。
我不知道引号是否有问题,但如果您需要不带引号
fruits = ['apple','banana','orange']
text = ','.join(fruits) # apple,banana,orange
text = f"fruits([{text}])" # fruits([apple,banana,orange])
print(text)
我正在 Python 和 Prolog 上使用库 PySwip 编写程序。我需要将列表从 Python 发送到 Prolog。我是这样做的:
from pyswip import Prolog
p = Prolog()
p.assertz("fruits([apple,banana,orange])") # Create list
p.assertz("result(X) :- fruits(L), member(X, L)") # Rule for checking if an element in a list
print(list(p.query("result(orange)."))) # Return True if element in list
但我需要将列表作为一个单独的对象,因为在问题之前执行一些操作。帮助我如何在 Prolog
中发送对象from pyswip import Prolog
p = Prolog()
fruits = [apple,banana,orange]
p.assertz("How send to list fruits ???") # I dont know how to write this request
谢谢大家的预支
我不知道 Prolog
和 PySwip
,我不知道我是否理解问题,但它看起来像普通字符串,因此您可以使用 "fruit( {} )".format(fruits)
或使用 f-string f"fruit( {fruit} )"
from pyswip import Prolog
p = Prolog()
fruits = ['apple','banana','orange']
text = f"fruits({fruits})"
print(text)
p.assertz(text)
p.assertz("result(X) :- fruits(L), member(X, L)")
print(list(p.query("result(orange).")))
但在 Python 中它必须是带字符串的列表。
它会创建字符串 fruits(['apple', 'banana', 'orange'])
并在引号 ' '
中包含项目。
我不知道引号是否有问题,但如果您需要不带引号
fruits = ['apple','banana','orange']
text = ','.join(fruits) # apple,banana,orange
text = f"fruits([{text}])" # fruits([apple,banana,orange])
print(text)