Sympy: Невозможно определить истинностное значение реляционногоPython

Программы на Python
Anonymous
Sympy: Невозможно определить истинностное значение реляционного

Сообщение Anonymous »

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

from sympy import *

class Example:
def __init__(self):
self.data = {
'sensor1': 0,
'sensor2': 0,
'sensor3': 0
}
self.registry = {
'678985': {"data": [{"MID": "sensor1", "D": 50}]},
'123454': {"data": [{"MID": "sensor2", "D": 5}]},
'345609': {"data": [{"MID": "sensor3", "D": 500}]}
}
self.symbols = {sensor_id: symbols(sensor_id) for sensor_id in self.data.keys()}

def evaluate_expression(self, expression):
try:
for sensor_id, sensor_info in self.registry.items():
for modality in sensor_info["data"]:
m_id = modality["MID"]
data = modality["D"]
if m_id in self.data:
self.data[m_id] = data

expression = expression.replace('&&', 'and').replace('||', 'or').replace('!', 'not')
sympy_expr = sympify(expression, locals=self.symbols) #parsing
substitutions = {self.symbols[key]: value for key, value in self.data.items()}
substituted_expr = sympy_expr.subs(substitutions) #substituting the value from the registry
result = substituted_expr.simplify()
# result = bool(substituted_expr)
return result
except Exception as e:
raise ValueError(f"Failed to evaluate expression:{expression} as: {e}")

a = Example()
e = "sensor1 > 10 && sensor1  400"
a.evaluate_expression(e)
Я отправил выражение для проверки этим датчиком1> 10 && датчик1 400
Я изменил символы и связал их с и, нет или , но он говорит, что не может определить истинное значение реляционного < /п>

Подробнее здесь: https://stackoverflow.com/questions/787 ... relational

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