[英]Pass array to function and loop over values by index
我不断收到一个 TypeError: unsupported operand type for +: '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()
你不应该使用*arr
; 删除*
通配符,您的代码将起作用。
使用通配符,传递给msa2
的参数被视为可能更多的额外位置参数之一,因此msa2
中的arr
是这些参数的列表,第一个元素是您在调用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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.