如果元素总数等于给定数字,则追加到列表中

时间:2018-11-03 12:19:06

标签: python list

我试图做作业,指令说我需要给一个数字,程序需要给我一个元素列表,这些元素加和成给定的数字,但是这些元素必须是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)) 

1 个答案:

答案 0 :(得分:1)

这可能应该起作用。

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]。