Menu
Coddy logo textTech

חזרה: מחשבון פשוט

חלק מהיחידה תכנות מונחה עצמים במסלול ה-Python של Coddy. שיעור 8 מתוך 64.

challenge icon

אתגר

בינוני

מחלקת Calculator שלך בקובץ calculator.py צריכה:

  1. להכיל בנאי שמאתחל את המאפיין result ל־0
  2. לכלול מתודות עבור add, subtract, multiply ו־divide, שכל אחת מהן:
    • מקבלת מספר כארגומנט
    • מבצעת את הפעולה בין result הנוכחי לבין המספר
    • מעדכנת את המאפיין result
    • מחזירה את התוצאה החדשה
  3. לכלול מתודת clear שמאפסת את result ל־0
  4. לכלול מתודת get_result שמחזירה את התוצאה הנוכחית
  5. במתודת divide, עליך לטפל בחלוקה באפס באמצעות:
    • בדיקה אם המספר שסופק שווה ל־0
    • אם הוא אפס, להדפיס בדיוק: "Error: Division by zero"
    • להשאיר את המאפיין result ללא שינוי במקרה זה
    • להחזיר את הערך של result ללא שינוי

הקובץ driver.py ייבא את מחלקת Calculator שלך ויבדוק אותה באמצעות קוד דומה לזה:

from calculator import Calculator

calc = Calculator()
calc.add(5)       # result becomes 5
calc.multiply(3)  # result becomes 15
calc.subtract(2)  # result becomes 13
calc.divide(0)    # prints "Error: Division by zero", result remains 13
calc.divide(2)    # result becomes 6.5
calc.clear()      # result becomes 0

פעל לפי הערות TODO בקובץ calculator.py כדי לממש את כל הפונקציונליות הנדרשת.

נסו בעצמכם

from calculator import Calculator

# מטפל במקרי בדיקה
test_case = input()

if test_case == "constructor_test":
    # בדיקת יצירת המחשבון ומצבו ההתחלתי
    calc = Calculator()
    print(f"Initial result: {calc.get_result()}")
    print("Calculator created successfully")

elif test_case == "addition_test":
    # בדיקת פעולת החיבור
    calc = Calculator()
    result1 = calc.add(10)
    print(f"After adding 10: {result1}")
    result2 = calc.add(5)
    print(f"After adding 5: {result2}")
    print(f"Final result: {calc.get_result()}")

elif test_case == "subtraction_test":
    # בדיקת פעולת החיסור
    calc = Calculator()
    calc.add(20)  # מתחילים ב-20
    result1 = calc.subtract(8)
    print(f"After subtracting 8 from 20: {result1}")
    result2 = calc.subtract(2)
    print(f"After subtracting 2: {result2}")
    print(f"Final result: {calc.get_result()}")

elif test_case == "multiplication_test":
    # בדיקת פעולת הכפל
    calc = Calculator()
    calc.add(5)  # מתחילים ב-5
    result1 = calc.multiply(4)
    print(f"After multiplying by 4: {result1}")
    result2 = calc.multiply(2)
    print(f"After multiplying by 2: {result2}")
    print(f"Final result: {calc.get_result()}")

elif test_case == "division_test":
    # בדיקת פעולת החילוק
    calc = Calculator()
    calc.add(100)  # מתחילים ב-100
    result1 = calc.divide(4)
    print(f"After dividing by 4: {result1}")
    result2 = calc.divide(5)
    print(f"After dividing by 5: {result2}")
    print(f"Final result: {calc.get_result()}")

elif test_case == "division_by_zero_test":
    # בדיקת הטיפול בשגיאת חילוק באפס
    calc = Calculator()
    calc.add(50)
    print(f"Initial value: {calc.get_result()}")
    result = calc.divide(0)  # אמורה להיות מודפסת הודעת שגיאה
    print(f"Result after division by zero: {result}")
    print(f"Value unchanged: {calc.get_result()}")

elif test_case == "clear_test":
    # בדיקת פעולת clear
    calc = Calculator()
    calc.add(25)
    calc.multiply(3)
    print(f"Before clear: {calc.get_result()}")
    result = calc.clear()
    print(f"After clear: {result}")
    print(f"Current result: {calc.get_result()}")

elif test_case == "comprehensive_test":
    # בדיקת כל הפעולות לפי הסדר
    calc = Calculator()
    
    # ביצוע סדרת פעולות
    calc.add(10)        # result = 10
    calc.multiply(3)    # result = 30
    calc.subtract(5)    # result = 25
    calc.divide(5)      # result = 5
    
    print(f"After sequence of operations: {calc.get_result()}")
    
    # בדיקת הטיפול בשגיאות
    calc.divide(0)      # אמור להדפיס שגיאה
    print(f"After division by zero attempt: {calc.get_result()}")
    
    # ניקוי והתחלה מחדש
    calc.clear()
    calc.add(100)
    print(f"After clear and add 100: {calc.get_result()}")

else:
    print("Unknown test case")

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר Python אונליין