Как написать решатель уравнений строковых уравнений в Python?
Вопрос
Заранее спасибо! Я пишу программу, чтобы проверить, если a
это правда, а затем вернуть истину или ложь. Мне нужно разделить его на равном знаке, а затем проверить, равна ли 1-й элемент в списке вторым элементом и VISE-versa. Вот что у меня есть до сих пор:
def s_equation(a):
equal=a.split("=")
Решение
Вы можете использовать eval () для оценки каждой части уравнения:
def s_equation(a):
left, right = a.split('=')
return eval(left) == eval(right)
Некоторые тесты:
>>> s_equation('1+1+1=3')
True
>>> s_equation('2*2=8')
False
Другие советы
left, right = a.split("=")
assert left == right
Вам нужно будет дать нам больше деталей, чем это, если вы хотите полезный ответ. Вы пытаетесь написать полную компьютерную систему алгебры (например, Mathematica)? Это проект Biiiiig, который уже делался несколько раз. Подумайте о том, чтобы использовать что -то вроде Sage
.
РЕДАКТИРОВАТЬ: Математика победил меня до удара, хотя я бы порекомендовал использовать ast.literal_eval
вместо eval
Если вы не доверяете вводу, вы получите.
Вы действительно не даете достаточно информации, чтобы хорошо ответить на ваш вопрос. Вы хотите проверить это как личность (т.е. тестирование алгебры) или как мгновенное равенство?
Для первого, (сначала установите Sympy):
import sympy
def s_equation(a):
x = sympy.Symbol('x')
y = sympy.Symbol('y')
left, right = a.split('=')
return eval (left + '==' + right)
использование:
s_equation('x+x = x*2')
#True
s_equation('x+y**2 = y+x**2')
#False