Հատուկ հաշվիչի ստեղծում

Ձեր խնդիրն է ստեղծել Number class, որն օգտագործում է Python-ի կախարդական մեթոդները (__add__, __sub__, __mul__, __truediv__) մաթեմատիկական գործողություններ կատարելու համար: Բայց class-ը պետք է լինի հզոր և կարողանա կարգավորել տարբեր բացառություններ, որոնք միգուցե առաջանան նշված գործողությունների ընթացքում.

  • Եթե փորձ է արվում բաժանել զրոյի վրա, պետք է raise արվի ZeroDivisionError՝ Cannot divide by zero հաղորդագրությամբ:

  • Եթե մուտքագրումներից որևէ մեկը չի կարող վերածվել թվի, պետք է raise արվի ValueError՝ Invalid number input հաղորդագրությամբ:

  • Եթե օպերատորը Number չէ, պետք է raise արվի TypeError՝ Operator must be a Number հաղորդագրությամբ:

  • Բացի այդ, դուք պետք է ստեղծեք հատուկ բացառություն՝ UnsupportedOperatorError, որը ժառանգում է ValueError-ից՝ Unsupported operator հաղորդագրությամբ: Այս սխալը պետք է raise արվի, եթե փորձ է արվում կատարել գործողություն, որը, class-ի կողմից չի ընդունվում: Օրինակ՝ __floordiv__, __mod__, __pow__, __lshift__, __rshift__, __and__, __xor__, __or__։

Բոլոր վավեր կախարդական մեթոդները պետք է վերադարձնեն Number օբյեկտ:

Նշում: Մի մոռացեք իրականացնել __str__ կախարդական մեթոդը՝ Number-ի արժեքը վերադարձնելու համար:

Մուտք

Ելք

a=Number(10); b=Number(2); print(a+b); print(a/b);

12 5

a=Number(10); b=Number(0); print(a/b);

Cannot divide by zero

a=Number('ten'); b=Number(2); print(a+b);

Invalid number input

a=Number(10); b=Number(2); print(a**b);

Unsupported operator

a=Number(10); b=2; print(a+b);

Operator must be a Number

a = Number(10); b = Number(2); c = Number(a * b); print(c.value)

20

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