繁体   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