Կոտորակային դաս (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