簡體   English   中英

如果元素總和為給定數字,則追加到列表中

[英]appending in list if sum of elements makes given number

我試着做我的作業,指令說我需要給出一個數字,程序需要給我一個元素列表,這些元素總和為給定的數字,但這些元素需要是 x**2 例如:如果我輸入22、程序必須給我[2, 4, 16],因為list中的元素是我輸入的總和,謝謝

代碼:

def number(n): 
    ys = []
    for xs in range(1, n + 1): 
        if 2 ** xs <= n: 
            ys.append(2 ** xs) 
            xs += 1 
        else: 
        xs += 1 
    return ys 
print(number(22)) 

這應該可以工作。

def number(n):
    ys = []
    for xs in range(n,0,-1):
        if 2**xs <= n:
            ys.append(2**xs)
            n -= 2**xs
        xs -= 1
    return ys[::-1]

您一直在檢查相同的 n,但是每次在 ys 中添加一個新元素時,都應該從數字 n 中減去它。 此外,從高到低的工作可能會使事情變得更容易。

最后,最后的反轉切片只是按照您要求的順序返回。 你可以忽略它,它會返回 [16, 4, 2]。

暫無
暫無

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

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