2016-05-17 32 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

是的,你是絕對正確的,我認爲我的錯誤,並發現我做錯了什麼。榮譽給你 –