2016-05-17 30 views
2
我有在关于传播异常我的代码以下问题

异常处理:问题可以用Python

什么代码应做到:

它需要一个输入组合或测试用例的数量要运行。

它需要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 

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

出了什么问题?

+0

你实际上没有测试的值是积极的。 – L3viathan

回答

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更换。

+0

我早就试过了,但也没有奏效,请原谅,因为我是一个新的蜜蜂:class Calculator(): DEF功率(自,N,p): self.n = N self.p = p 尝试: 如果n> 0且p> 0: 一个= POW(N,p) 返回 除ValueError,e: print“n和p应该是非负数”:我会尝试你的代码,并让你知道 –

+0

是的,你是绝对正确的,我认为我的错误,并发现我做错了什么。荣誉给你 –