سؤال

شكرا مقدما! أنا أكتب برنامجًا للتحقق مما إذا كان 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top