Կոտորակային դաս (Fraction class)

Դուք մշակում եք պարզ հաշվիչ և ձեր խնդիրն է Python-ում ստեղծել Fraction class, որը ներկայացնում է մաթեմատիկական կոտորակը:
Class-ը պետք է ունենա 5 կախարդական մեթոդ.
  • __add__ - Այս մեթոդը պետք է որպես արգումենտ ընդունի մեկ այլ Fraction օբյեկտ և վերադարձնի նոր Fraction օբյեկտ, որը սկզբնական Fraction-ի և Fraction արգումենտի գումարն է:
  • __sub__ - Այս մեթոդը պետք է որպես արգումենտ ընդունի մեկ այլ Fraction օբյեկտ և վերադարձնի նոր Fraction օբյեկտ, որը ստանում ենք սկզբնական Fraction-ից հանելով Fraction արգումենտը:
  • __mul__ - Այս մեթոդը պետք է ընդունի մեկ այլ Fraction օբյեկտ որպես արգումենտ և վերադարձնի նոր Fraction օբյեկտ, որը սկզբնական Fraction-ի և Fraction արգումենտի արտադրյալի արդյունքն է:
  • __truediv__ - Այս մեթոդը պետք է ընդունի մեկ այլ Fraction օբյեկտ որպես արգումենտ և վերադարձնի նոր Fraction օբյեկտ, որը ստանում ենք սկզբնական Fraction-ը Fraction արգումենտի վրա բաժանելիս: Եթե Fraction արգումենտն ունի զրո համարիչ, այս մեթոդը պետք է raise անի ZeroDivisionError:
  • __str__ - Այս մեթոդը պետք է վերադարձնի կոտորակը՝ numerator / denominator (համարիչ / հայտարար) ձևաչափով: Մեթոդը պետք է վերադարձնի տողով գրված կոտորակը՝ իր հնարավոր ամենապարզ ձևով (օրինակ՝ «2 / 3»՝ «4 / 6»-ի փոխարեն): Կոտորակը պարզեցնելու համար համարիչը և հայտարարը բաժանեք դրանց ամենամեծ ընդհանուր բաժանարարի վրա (ԱԸԲ):
Fraction class-ը պետք է կարողանա սկզբնավորվել երկու պարամետրով՝ numerator (համարիչով) և denominator (հայտարարով): Երկու պարամետրերն էլ պետք է լինեն ամբողջ թվեր, իսկ հայտարարը (denominator) պետք է լինի 1 (եթե տրված չէ): Եթե հայտարարը 0 է, ծրագիրը պետք է __init__ մեթոդում raise անի ValueError:
Մուտք
Ելք
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: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

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