簡體   English   中英

我的問題是關於我描述的代碼但它不起作用

[英]My question is about a code i have described but it didn't work

SUMMER OF '69:返回數組中數字的總和,除了忽略以 6 開頭並延伸到下一個 9 的數字部分(每個 6 后面至少有一個 9)。 沒有數字則返回 0。 ¶

我曾嘗試使用 pop 方法,但沒有奏效。 我想知道為什么。

def summer_69(arr):
    num=(6,7,8,9)
    if num not in arr:
        return sum(arr)
    if num in arr:
        arr.pop(num)
        return sum(arr)

print(summer_69([4,5,6,7,8,9]))

我得到的總和就像我得到的 39 一樣。

Pop 刪除指定索引處的項目。 數組中的最大索引為 5(4 的索引為 0)。 我建議通過以下方式找到 6 的索引

arr.index(6)

效率不高,但您可以重復彈出該索引,直到它變為 9,(如果“擴展到”意味着包括 9,則再次彈出)。

我會建議您使用單個循環而不是這樣做,因為它會更有效。 使用單循環並不斷將數字相加,直到遇到 6。 一出現 6 就跳過數字,直到出現 9。 再次開始將數字相加。 在 O(n) 中運行。

我=0

總和 =0

當我 < 長度:

If a[i] == 6:

     While i < length and a[i] != 9:

         i += 1

Else:

    Sum += a[i]

i += 1

返回總和

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM