это правильный способ написания исключения в Python? - PullRequest
0 голосов
/ 05 февраля 2019

Является ли следующий код правильным способом написания исключения в Python?

class Calculator:
    def power(self,n,p):
        self.n=n
        self.p=p
        if self.n>=0 and self.p>=0:
            return self.n**self.p
        else:
            return ("n and p should be non-negative")


myCalculator=Calculator()
T=int(input())
for i in range(T):
    n,p = map(int, input().split())
    try:
        ans=myCalculator.power(n,p)
        print(ans)
    except Exception as e:
        print(e)   

Спасибо!

1 Ответ

0 голосов
/ 05 февраля 2019

Вы просто возвращаете строку из power, где вы, вероятно, хотите вызвать исключение.Кроме того, вы должны проверить n и p , прежде чем изменить объект.(Я не буду вдаваться в подробности, почему power устанавливает атрибуты.)

class Calculator:
    def power(self, n, p):
        if n < 0 or p < 0:
            raise ValueError("Both arguments should be non-negative")
        self.n = n
        self.p = p
        return self.n ** self.p

myCalculator = Calculator()
T = int(input())
for i in range(T):
    n, p = map(int, input().split())
    try:
        ans = myCalculator.power(n,p)
        print(ans)
    except Exception as e:
        print(e)
...