Класс Fraction
Вы разрабатываете простой калькулятор, и ваша задача — создать класс Python Fraction
, представляющий математическую дробь.
Класс должен иметь 5 магических методов:
__add__
: Этот метод принимает другой объект Fraction в качестве аргумента и возвращает новый объект Fraction, который является суммой исходной дроби и дроби-аргумента.__sub__
: Этот метод принимает другой объект Fraction в качестве аргумента и возвращает новый объект Fraction, который является результатом вычитания дроби-аргумента из исходной дроби.__mul__
: Этот метод принимает другой объект Fraction в качестве аргумента и возвращает новый объект Fraction, который является результатом умножения исходной дроби на дробь-аргумент.__truediv__
: Этот метод принимает другой объект Fraction в качестве аргумента и возвращает новый объект Fraction, который является результатом деления исходной дроби на дробь-аргумент. Если числитель дроби-аргумента равен нулю, этот метод должен вызвать исключениеZeroDivisionError
.__str__
: Этот метод возвращает дробь в форматеnumerator / denominator
. Метод должен возвращать строковое представление дроби в ее упрощенном виде (например, "2 / 3" вместо "4 / 6"). Чтобы упростить дробь, разделите числитель и знаменатель на их наибольший общий делитель (НОД).
Класс Fraction должен иметь возможность создаваться с двумя параметрами: numerator
и denominator
. Оба параметра должны быть целыми числами, при этом denominator
по умолчанию равен 1
, если не указан. Если знаменатель равен 0, программа должна вызвать исключение ValueError
в методе __init__
.
Ввод | Вывод |
---|---|
| 5 / 6 |
| 1 / 6 |
| 1 / 6 |
| 3 / 2 |
| ZeroDivisionError: You can't divide by zero! |
| ValueError: The denominator cannot be zero! |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB