我需要編寫一個函數,該函數需要一個數字數組並找到所有數字的最大總和。換句話說,我需要找到正數的總和。我寫了這個,我得到「名單超出範圍」python函數來找到數組中的正數的總和
想法?
def maximum_sub(A):
x = 0
i = 0
for i in A:
while A[i] > 0:
x+=A[i]
i+=1
return x
我需要編寫一個函數,該函數需要一個數字數組並找到所有數字的最大總和。換句話說,我需要找到正數的總和。我寫了這個,我得到「名單超出範圍」python函數來找到數組中的正數的總和
想法?
def maximum_sub(A):
x = 0
i = 0
for i in A:
while A[i] > 0:
x+=A[i]
i+=1
return x
使用超強功能和列表理解來代替:
>>> a = [1, 2, 3, -4, 5, -3, 7, 8, 9, 6, 4, -7]
>>> sum(x for x in a if x > 0)
45
[x for x in a if x > 0]
將創建a
所作的積極值的數組。
sum(...)
將返回該數組中元素的總和。
有總結和理解的更好的方法,但我會假設你正在寫一個函數作爲算法的練習。
你不需要while循環。使用if來檢查它是否爲正數,並將其添加到總和中。否則,不要做任何事情。 for循環會自動迭代你的值。
def maximum_sum(A):
x = 0
for i in A:
if i > 0:
x += i
return x
幾句話的建議:表達意思。以下是我可能使用的一些名稱:
def maximum_sum(arr):
max_sum = 0
for num in arr:
if num > 0:
max_sum += num
return max_sum
對於您的'for'循環。在寫'while'之前,你是否嘗試打印'i'來看看它實際上在做什麼? – idjaw
當你爲'我在'A',**我**是**不是**索引,但列表中的項目 - 這是一個提示... – coder
而不是while,你可能想與'if '。考慮編碼者的評論,並看看你的縮進。 – Greenstick