Python:将数组传递给函数并通过索引循环遍历值

时间:2013-02-03 15:03:11

标签: python loops

我一直得到一个TypeError:+:'int'和'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()

1 个答案:

答案 0 :(得分:3)

你不应该使用*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)