Python-ի միջին մակարդակ

Fraction կլաս

Դուք մշակում եք պարզ հաշվիչ և ձեր խնդիրն է ստեղծել Python-ում Fraction կլաս, որը ներկայացնում է մաթեմատիկական կոտորակը:
Կլասը պետք է ունենա 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"-ի փոխարեն): Կոտորակը պարզեցնելու համար համարիչը և հայտարարը բաժանեք նրանց ամենամեծ ընդհանուր բաժանարարի (GCD):
Fraction կլասը պետք է կարողանա սկզբնավորվել երկու պարամետրով՝ numerator(համարիչով) և denominator(հայտարարով): Երկու պարամետրերն էլ պետք է լինեն ամբողջ թվեր, իսկ հայտարարը(denominator) պետք է լինի 1, եթե այն տրված չէ: Եթե հայտարարը 0 է, ծրագիրը պետք է raise անի 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: 0.2 seconds

Memory limit: 512 MB

Output limit: 1 MB

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