Հատուկ հաշվիչի ստեղծում
Ձեր խնդիրն է ստեղծել Number կլաս, որն օգտագործում է Python-ի կախարդական մեթոդները (
__add__
, __sub__
, __mul__
, __truediv__
) մաթեմատիկական գործողություններ կատարելու համար: Բայց կլասը պետք է լինի հզոր և կարողանա կարգավորել տարբեր բացառություններ, որոնք միգուցե առաջանան նշված գործողությունների ընթացքում:Եթե փորձ է արվում բաժանել զրոյի վրա, ապա պետք է կատարել raise
ZeroDivisionError
:Եթե մուտքագրումներից որևէ մեկը չի կարող վերածվել թվի, պետք է raise արվի
ValueError
:Եթե օպերատորը տող չէ, ապա պետք է raise արվի TypeError:
Բացի այդ, դուք պետք է ստեղծեք հատուկ բացառություն՝
UnsupportedOperatorError
, որը ժառանգում է ValueError
-ից: Այս սխալը պետք է raise արվի, եթե փորձ է արվում կատարել գործողություն, որը, սակայն, կլասի կողմից չի ընդունվում: Օրինակ՝ __floordiv__
, __mod__
, __pow__
, __lshift__
, __rshift__
, __and__
, __xor__
, __or__
։Մուտք | Ելք |
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 |
Constraints
Time limit: 2.4 seconds
Memory limit: 512 MB
Output limit: 1 MB