Fraction Class
You are developing a simple calculator and your task is to create a Python class
Fraction
which represents a mathematical fraction.The class should have 5 magic methods:
__add__
: This method should take another Fraction object as an argument and return a new Fraction object which is the sum of the original Fraction and the argument Fraction.
__sub__
: This method should take another Fraction object as an argument and return a new Fraction object which is the result of the original Fraction subtracted by the argument Fraction.
__mul__
: This method should take another Fraction object as an argument and return a new Fraction object which is the result of the original Fraction multiplied by the argument Fraction.
__truediv__
: This method should take another Fraction object as an argument and return a new Fraction object which is the result of the original Fraction divided by the argument Fraction. If the argument Fraction has a numerator of zero, this method should raise aZeroDivisionError
.
__str__
: This method should return the fraction in thenumerator / denominator
format. The method should return a string representation of the fraction in its simplest form (for example, "2 / 3" instead of "4 / 6"). To simplify a fraction, divide the numerator and the denominator by their greatest common divisor (GCD).
The Fraction class should be able to be instantiated with two parameters, a
numerator
and a denominator
. Both parameters should be integers, with the denominator
defaulting to 1
if not provided. If the denominator is 0, the program should raise a ValueError
in the __init__
method.Input | Output |
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