חזרה: מחשבון פשוט
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Python של Coddy. שיעור 8 מתוך 64.
אתגר
בינונימחלקת Calculator שלך בקובץ calculator.py צריכה:
- להכיל בנאי שמאתחל את המאפיין
resultל־0 - לכלול מתודות עבור
add,subtract,multiplyו־divide, שכל אחת מהן:- מקבלת מספר כארגומנט
- מבצעת את הפעולה בין
resultהנוכחי לבין המספר - מעדכנת את המאפיין
result - מחזירה את התוצאה החדשה
- לכלול מתודת
clearשמאפסת אתresultל־0 - לכלול מתודת
get_resultשמחזירה את התוצאה הנוכחית - במתודת
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")
כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים (OOP)
קבצים חיצונייםמבוא ל-OOPמחלקות לעומת אובייקטיםהפרמטר selfמתודותמאפייניםשיטת הבנאי (__init__)חזרה: מחשבון פשוט5פולימורפיזם
בחינה מחדש של דריסת מתודותטיפוסיות ברווזמחלקות ומתודות אבסטרקטיותעיצוב ממשקיםסיכום – מחשבון צורות8מושגים מתקדמים בתכנות מונחה עצמים
קומפוזיציה לעומת הורשהMixinsמתודות סטטיות ומתודות מחלקהדקורטורים למחלקותמנהלי הקשרתרגלו בעצמכם: קומפיילר Python אונליין