اكتب دالة باسم evaluate تأخذ نص تعبير حسابي وتُرجع نتيجة حسابه.

المطلوب:

  • الدالة تأخذ معامل واحد: expression (string) يحتوي على أرقام وعمليات
  • العمليات المدعومة: +, -, *, /
  • يجب احترام الأولويات: * و / لهما أولوية أعلى من + و -
  • يجب احترام الأقواس ()
  • الدالة تُرجع النتيجة كرقم (int أو float)
  • يجب التعامل مع المسافات في النص

مثال:

evaluate("3 + 5")          # 8
evaluate("2 * 3 + 4")      # 10
evaluate("2 + 3 * 4")      # 14
evaluate("(2 + 3) * 4")    # 20
evaluate("10 / 2 - 3")     # 2
evaluate("(5 + 3) * (2 - 1)")  # 8

ملاحظات:

  • استخدم مكدس (stack) لتتبع الأرقام والعمليات
  • يمكنك تحويل التعبير إلى Postfix ثم حسابه
  • أو استخدام خوارزمية Shunting Yard

الناتج (Console)

سيظهر ناتج تنفيذ الكود هنا.