2014-09-11 245 views
-1

關於爲何此代碼無法使用的任何想法? 我不斷收到一個錯誤Python對象不可訂閱

def boxCheck(number1,number2,number3): 
    if number1 * number2 * number3 == 0 or number1 < 0 or number2 < 0 or number3 < 0: 
     return False 
    else: 
     numbers = [number1, number2, number3] 
     sortedNumbers = numbers.sort() 
     trial1 = number1 * number2 * number3 
     trial2 = sortedNumbers[1] * sortedNumbers[1] 
     if trial1 == trial2: 
      return True 
     else: 
      return False 

boxCheck(4,16,8) 
+3

不要只說「我不斷收到錯誤」,顯示錯誤。複製它並粘貼到這裏,確切的文字,回溯等。在這種情況下,問題很明顯,但往往不是這樣 - 跟蹤(這會告訴我們你有一個'TypeError:'NoneType 'object is not subscriptable',並且它特別指出'sortedNumbers [1]')是開始調試它的唯一方法。 – abarnert 2014-09-11 00:47:03

回答

5

什麼情況是,sort()排序列表就地所以它不會返回任何東西(事實上,它返回None),因此變量sortedNumbersNone

你能做什麼?您可以使用sorted(),這將返回排序列表:

sortedNumbers = sorted(numbers) 

注:別忘了打印結果:

print(boxCheck(4,16,8)) 
0

這裏是什麼手冊說關於排序方法:

> Help on method_descriptor: 
> 
> sort(...) 
>  L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*; 
>  cmp(x, y) -> -1, 0, 1 

你的陳述

sortedNumbers = numbers.sort() 

結果沒有被保存到sortedNumbers。