كيف أكتب حلول معادلة السلسلة في بيثون؟
سؤال
شكرا مقدما! أنا أكتب برنامجًا للتحقق مما إذا كان a
صحيح ثم العودة صحيحًا أو خطأ. أحتاج إلى تقسيمه عند العلامة المتساوية ثم تحقق مما إذا كان العنصر الأول في القائمة يساوي العنصر الثاني والعكس بالعكس. هذا ما لدي حتى الآن:
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