PyDatalog: NameError при утверждении предиката из цикла PythonPython

Программы на Python
Ответить
Anonymous
 PyDatalog: NameError при утверждении предиката из цикла Python

Сообщение Anonymous »

Я использую pyDatalog для работы с сеточной системой. Моя цель – перебрать стандартный список списков Python (сетку) и на основе условия внести новые факты (предикаты) в базу знаний pyDatalog.
Я пытаюсь сделать это внутри стандартного цикла Python for, но сталкиваюсь с ошибкой NameError, которая предполагает, что предикаты pyDatalog не распознаются правильно в пределах цикла.
Вот упрощенный пример версия того, чего я пытаюсь достичь:

Код: Выделить всё

from pyDatalog import pyDatalog

grid = [[1, 8, 3], [4, 5, 6], [7, 2, 9]]
x, y = 3, 3
t = 5

pyDatalog.create_terms('Flagged')

for row_idx in range(x):
for col_idx in range(y):
if grid[row_idx][col_idx] > t:
# I want to assert a new fact here
+ Flagged(row_idx, col_idx)

print(Flagged(X, Y))
Когда я запускаю этот код, я получаю следующую ошибку:

Код: Выделить всё

NameError: name 'Flagged' is not defined
Как правильно утверждать новые факты pyDatalog изнутри цикла Python? Существует ли особый способ объявить или зарегистрировать неограниченные предикаты, чтобы они были доступны в этом контексте?

Подробнее здесь: https://stackoverflow.com/questions/798 ... ython-loop
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»