добавление в список, если сумма элементов составляет заданное число - PullRequest
0 голосов
/ 03 ноября 2018

Я пытался сделать свою домашнюю работу, где в инструкции говорилось, что мне нужно дать число, а в программе должен быть список элементов, которые суммируются в данное число, но эти элементы должны быть х ** 2. Например: если я введу 22, программа должна дать мне [2, 4, 16], потому что элементы в списке являются суммой моего ввода, спасибо

Код:

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 голосов
/ 03 ноября 2018

Это, вероятно, должно работать.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...