Класс 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__.
Ввод
Вывод
f1 = Fraction(1, 2); f2 = Fraction(1, 3); f3 = f1 + f2; print(f3)
5 / 6
f1 = Fraction(1, 2); f2 = Fraction(1, 3); f3 = f1 - f2; print(f3)
1 / 6
f1 = Fraction(1, 2); f2 = Fraction(1, 3); f3 = f1 * f2; print(f3)
1 / 6
f1 = Fraction(1, 2); f2 = Fraction(1, 3); f3 = f1 / f2; print(f3)
3 / 2
f1 = Fraction(1, 2); f2 = Fraction(0, 3); f3 = f1 / f2; print(f3)
ZeroDivisionError: You can't divide by zero!
f1 = Fraction(1, 0);
ValueError: The denominator cannot be zero!
 

Constraints

Time limit: 1 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue