Повторение — простой калькулятор
Часть раздела Объектно-ориентированное программирование путешествия по 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Основы ООП
Введение в ООПВнешние файлыКлассы и объектыПараметр selfМетодыАтрибутыМетод-конструктор (__init__)Повторение — простой калькулятор4Наследование
Основы наследованияФункция super()Переопределение методовМножественное наследованиеПорядок разрешения методовПовторение: иерархия сотрудников7Специальные методы
Введение в магические методыПерегрузка операторовМагические методы контейнеровПовторение — пользовательский список10Паттерны проектирования. Часть 1
Введение в паттерны проектированияПаттерн «Одиночка»Паттерн «Фабрика»Паттерн «Наблюдатель»Паттерн «Стратегия»2Декораторы
Введение в декораторыДекоратор свойстваДекоратор статического методаДекоратор метода класса5Полиморфизм
Переопределение методов: повторениеУтиная типизацияАбстрактные классы и методыПроектирование интерфейсовПовторение — калькулятор фигур8Продвинутые концепции ООП
Композиция и наследованиеМиксиныСтатические методы и методы классаДекораторы классовМенеджеры контекста11Паттерны проектирования. Часть 2
Паттерн «Команда»Паттерн «Адаптер»Паттерн «Декоратор»Паттерн «Шаблонный метод»Паттерн «Состояние»Паттерн «Компоновщик»3Свойства классов
Переменные экземпляра и классаДекораторы свойствПриватные атрибутыПовторение — менеджер банковского счёта6Инкапсуляция
Публичные, защищённые и приватные членыМодификаторы доступаСокрытие информацииПродвинутые декораторы свойствПовторение — система учёта студентов12Проект: Система управления библиотекой
Обзор проектаКлассы книг и пользователейСистема выдачи книгФункция поискаИнтерфейс администратораТестирование и интеграцияПотренируйтесь самостоятельно: Онлайн-компилятор Python