Python中的异常处理问题

时间:2016-05-17 17:52:36

标签: python exception-handling

我在传播异常时遇到了以下问题:

代码应该做什么:

需要输入数组a组合或测试用例才能运行。

需要n =数字且其功率= p。 (即2^3=8

如果p和n是正数,则需要打印2^3 = 8并返回 - 这是有效的。

如果n或p为负数,则需要打印“n和p应为非负数” - 这不起作用。

我的代码:

class Calculator():
    def power(self,n,p):
        self.n=n
        self.p=p
        try:
            raise NameError("n and p should be non-negative")

        except NameError:
            a=pow(n,p)
            return a
myCalculator=Calculator()
T=int(raw_input())
for i in range(T):
    n,p = map(int, raw_input().split())
    try:
        ans=myCalculator.power(n,p)
        print ans
    except Exception,e:
        print e 

输入

4
3 5
2 4
-1 -2
-1 3

收到的结果:

243
16
1.0
-1

但是,对于第3和第4个测试用例,我应该收到“n和p应该是非负的”,因为最后2个测试用例(测试用例编号3和4)的值都设置为负值。

有什么问题?

1 个答案:

答案 0 :(得分:1)

您实际上并未检查这些值。你想要这样的东西吗?

class Calculator():
    def power(self,n,p):
        self.n=n
        self.p=p
        if n<0 or p<0:
            raise NameError("n and p should be non-negative")
        a=pow(n,p)
        return a

虽然NameError没有多大意义,但请将其替换为ValueError