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は潜在的に追加の位置引数の 1 つと見なされるため、arr内部にmsa2はそれらの引数のリストがあり、最初の要素は を呼び出したときに渡したリストですmsa2

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

関数も常に0;を返します。maxThusあなたはどこにも更新しません。おそらく to の結果を代入するつもりでしmax(maxThus, sum)maxThus:

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