我一直得到一个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()
答案 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)