Հատուկ հաշվիչի ստեղծում
Ձեր խնդիրն է ստեղծել
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