Задача: Магические методы. Работа с дробями
Описание
Создайте класс Fraction
, который будет представлять дроби. Этот класс должен быть инструментом для удобной работы с дробями, позволяя выполнять различные операции с ними. Реализуйте следующие возможности:
Создание дроби:
Создание объекта
Fraction
с помощью конструктора, передавая ему числитель и знаменатель. При инициализации дробь должна быть сокращена до минимальных значений числителя и знаменателя. Отрицательный знак дроби указывается перед числителем. При попытке создать дробь с нулевым или отрицательным знаменателем, должно быть выброшено исключениеValueError
с сообщением "Знаменатель не может быть нулевым или отрицательным".Fraction(1, 2) # Создание дроби 1/2
Fraction(2, 4) # Создание дроби 1/2 (автоматическое сокращение)
Fraction(-1, 2) # Создание дроби -1/2
Операции с дробями:
Реализуйте операции сложения, вычитания, умножения и деления дробей, используя магические методы, чтобы они работали с помощью стандартных операторов (+, -, *, /). Результат операции должен быть сокращен и возвращен в виде нового объекта
Fraction
. При делении на дробь, равной нулю должно быть выброшено исключениеZeroDivisionerror
.# Сложение двух дробей:
Fraction(1, 2) + Fraction(3, 4) # Результат: 5/4
# Вычитание одной дроби из другой:
Fraction(1, 2) - Fraction(3, 4) # Результат: -1/4
# Умножение двух дробей:
Fraction(1, 2) * Fraction(3, 4) # Результат: 3/8
# Деление одной дроби на другую:
Fraction(1, 2) / Fraction(3, 4) # Результат: 2/3
Сравнение дробей:
Реализуйте магические методы для сравнения дробей, чтобы можно было использовать стандартные операторы сравнения (==, !=, <, >). Нулевые дроби должны считаться равными.
# Проверка на равенство
Fraction(1, 2) == Fraction(2, 4) # Результат: True
Fraction(0, 6) == Fraction(0, 200) # Результат: True
# Проверка на неравенство
Fraction(1, 2) != Fraction(3, 4) # Результат: True
# Проверка на меньше или больше:
Fraction(1, 2) < Fraction(3, 4) # Результат: True
Fraction(1, 2) > Fraction(3, 4) # Результат: False
Представление:
Должна быть возможность получить строковое представление объекта дроби - строку, представляющую саму дробь в виде "числитель/знаменатель".
# Строковое представление должно показывать саму дробь:
print(Fraction(1, 2)) # Вывод: 1/2
Характеристики решённой задачи
Список файлов
