شارك المقالة

ننشئ آلة حاسبة بسيطة في Python للعمليات الأربع. تفصل دالة calculate الحساب عن استقبال المدخلات، وتتحقق من القيم والعامل قبل تنفيذ العملية. القسمة على صفر أو إدخال نص لا ينبغي أن ينهي البرنامج بخطأ غير معالج.

الكود الكامل باستخدام Python 3

from math import isfinite

def calculate(first, second, operator):
    if not isfinite(first) or not isfinite(second):
        raise ValueError("Use finite numbers.")
    if operator == "+":
        result = first + second
    elif operator == "-":
        result = first - second
    elif operator == "*":
        result = first * second
    elif operator == "/":
        if second == 0:
            raise ValueError("Cannot divide by zero.")
        result = first / second
    else:
        raise ValueError("Unknown operator.")
    if not isfinite(result):
        raise ValueError("Result is outside the supported range.")
    return result

if __name__ == "__main__":
    try:
        first = float(input("First number: "))
        operator = input("Operator (+ - * /): ").strip()
        second = float(input("Second number: "))
        print("Result:", calculate(first, second, operator))
    except (ValueError, OverflowError) as error:
        print("Invalid input:", error)

تجربة العمليات

أدخل 5 ثم / ثم 2 لتحصل على 2.5. استخدمنا / للقسمة العادية وليس // التي تحسب القسمة الأرضية. جرب عددًا سالبًا وعملية طرح وعددين عشريين. الترتيب مهم في الطرح والقسمة؛ العملية تنفذ على العدد الأول ثم الثاني حسب إدخال المستخدم.

معالجة الحالات الخاطئة

يرفض البرنامج العامل % لأن هذا المثال يدعم العمليات الأربع فقط. كما يرفض صفرًا في المقام بما فيه -0.0، ويتعامل مع الإدخال غير الرقمي. فحص isfinite يمنع قبول NaN واللانهاية كأنها مدخلات حسابية عادية، ويتحقق كذلك من نتيجة تتجاوز مجال float.

تطوير الآلة الحاسبة

يمكن وضع استقبال المدخلات داخل حلقة مع خيار خروج لتكرار الحساب، أو استدعاء calculate من واجهة رسومية. لا تستخدم eval لتنفيذ النص الذي يكتبه المستخدم؛ اختيار عامل معروف ثم تنفيذ عملية محددة يكفي لهذا المشروع. اختبر الدالة منفصلة قبل ربطها بالواجهة.

الصور والفيديو المرفقان بالدرس

مصادر المثال السابق: programiz

شاهد أيضًا
مقالات ذات صلة
🚫 مانع الإعلانات مفعل

يجب إيقاف مانع الإعلانات لاستكمال تصفح الموقع