0

我不断收到 TypeError: unsupported operand type for +: 'int' and 'list' 所以我猜该数组没有被索引?请协助。

def main():
    arr = [1, 2, 3, 4, 5]
    length = len(arr)
    maxAns = msa2(length, arr)
    print maxAns

def msa2(length, *arr):
    maxThus = 0
    for i in range(0, length):
        sum = 0
        for j in range(i, length):
            sum = sum + arr[j]     # how to get value in index j
            max(maxThus, sum)
    return maxThus

if __name__ == '__main__':
    main()
4

1 回答 1

4

你不应该使用*arr; 删除*通配符,您的代码将起作用。

使用通配符,传入的参数msa2被视为可能更多的额外位置参数之一,因此arr内部msa2是这些参数的列表,第一个元素是您在调用时传入的列表msa2

>>> def foo(*args):
...     print args
... 
>>> foo(1, 2, 3)
(1, 2, 3)
>>> foo([1, 2, 3])
([1, 2, 3],)

您的函数也将始终返回0;你不会maxThus在任何地方更新。您可能打算将结果分配max(maxThus, sum)maxThus

maxThus = max(maxThus, sum)
于 2013-02-03T15:09:37.887 回答