Я пытаюсь создать отношение с помощью унификации, например:
Мальчик (Майк) -> Майк - мальчик
Девушка (Лиза) -> Лиза - девушка
isSister (Майк, Лиза) -> Лиза - сестра Майка
и это мой код:
from fact import Fact
from logic import get, unify, var
from itertools import chain
import regex as re
facts = {}
pattern = r"(\w+)\((?:([^,\)]+)\,(?:([^,\)]+)))+\)\.?"
rule = input('Ingrese un hecho o consulta:')
while rule != '!':
match = re.match(pattern, rule)
print(match)
name = match.captures(1)[0]
argument1 = match.captures(2)
argument2 = match.captures(3)
if rule.endswith('.'):
if not name in facts:
facts[name] = Fact()
facts[name].append(argument1[0])
facts[name].append(argument2[0])
else:
X = var()
Y = var()
for _ in facts[name](X,Y): print(get(X),get(Y))
rule = input('Ingrese un hecho o consulta:')
Что я хочу, так это то, что когда я спрашиваю isSister (?, Лиза), он возвращает Майка.
Вот что я получаю:
Traceback (последний вызов был последним): файл "main.py", строка 17, в
name = match.captures (1) [0] AttributeError: у объекта 'NoneType' нет атрибута 'captures'