Я хочу иметь возможность анализировать строковые уравнения (равные 0), а затем решать их, используя словарь переменных, к которому у меня есть доступ.
Например:
s = '(x/z)-y'
eq = parse(s)
eq.solve({'x': 10, 'y': 5})
print(eq)
>>> {'z': 2}
Месяц назад я написал код, который делал что-то подобное, но я просто не могу его найти. Однако я помню, что использовал SymPy и его функцию sympify, а также его функцию решения. Я проверил документацию по этим функциям, но не смог понять, как заставить их работать так, как я хочу.
И дополнительный вопрос: Можно ли как-то обернуть переменные, чтобы я мог использовать для них что-то большее, чем просто буква? Пример: вместо «x» я мог бы использовать «{myvar-42}».
РЕДАКТИРОВАТЬ:
Хорошо, мне наконец удалось написать код, который делал то, что я хотел:
eq = sympify('(x/y)-z', locals={'x': 10, 'z': 5})
solution = solve(eq, dict=True)
print(solution)
>>> [{'z': 2}]
Но мой "лишний" вопрос остается.
'myvar-42'
- просто разобрать строку. - person aIKid   schedule 12.01.2014