2014-09-11 244 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。