Creare una Calcolatrice Personalizzata
Il tuo compito è creare una classe Number
che utilizzi i metodi speciali di Python (__add__
, __sub__
, __mul__
, __truediv__
) per eseguire operazioni matematiche. Tuttavia, la classe deve essere robusta e in grado di gestire varie eccezioni che possono verificarsi durante queste operazioni:
Se viene tentata una divisione per zero, dovrebbe essere sollevata un'eccezione
ZeroDivisionError
con il messaggioCannot divide by zero
.Se uno degli input non può essere convertito in un numero, dovrebbe essere sollevata un'eccezione
ValueError
con il messaggioInvalid number input
.Se l'operatore non è un
Number
, dovrebbe essere sollevata un'eccezioneTypeError
con il messaggioOperator must be a Number
.Inoltre, dovresti implementare un'eccezione personalizzata,
UnsupportedOperatorError
, che eredita daValueError
, con il messaggioUnsupported operator
. Questa eccezione dovrebbe essere sollevata se viene tentata un'operazione non supportata dalla classe. Questo include__floordiv__
,__mod__
,__pow__
,__lshift__
,__rshift__
,__and__
,__xor__
,__or__
.
Tutti i metodi speciali validi dovrebbero restituire un oggetto Number
.
Nota: Non dimenticare di implementare il metodo speciale __str__
per restituire il valore di Number
.
Input | Output |
| 12 |
| Cannot divide by zero |
| Invalid number input |
| Unsupported operator |
| Operator must be a Number |
| 20 |
| Unsupported operator |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB