Puissance de 2

Résolu
Bonjour,
J'ai un devoir pour le lycée en python que je dois rendre lundi et impossible de le faire. Je compte sur votre aide.
Le sujet :
Ecrire un algorithme permettant de décomposer un entier non nul en somme de puissances de 2 distincte 2 à 2 ( justifier qu'il s’arrête). Par ex: 21 = 2^4 +2^2 +2^0.

Ou j'en suis :
n = int(input("Entier N "))
i = 0
Liste = []
while (n != 0):
    while (2^i < n):
        i = i + 1
    i = i - 1
    n = n-2^i
    print (i)
    Liste.append(i)
    i = 0
print(i)
Liste[:]        


L’idéal serai que j'arrive a mettre toutes les puissance dans une liste et que j'affiche cette liste. Mais c'est vraiment l'idéal.....
Merci beaucoup a ceux qui m'aideront

2 réponses

    1. ah oui, mais le faire sur "papier" je sais le faire mais je ne comprends pas sque je dois ajouter a mon programme
    2. from math import *
       
      n = int(input("Entrez un nombre "))
      a = n
      Liste = []
      while (n != 0):
          i = 0
          while (2**i <= n):
              i = i + 1
          i = i - 1
          n = n-2**i
          Liste.append(2**i)
      print("Les puissances  de 2 composant le nombre ", a ,"sont")
      print( Liste)
      


      J'ai essayé un programme mais la il affiche la valeur de 2^x et non x . Une idée?
    3. Liste.append(2**i)
      ici tu stockes la valeur de 2^i et pas i
    4. Non d’inattention
      Bonne soirée