2017-04-22 3 views
0

J'essaye de programmer en Python afin que je puisse imprimer les résultats de 2 à la puissance de chaque nombre de 0 à 16. J'ai le code ci-dessous jusqu'à maintenant , mais il ne peut imprimer que le résultat de 2 à la puissance 16 et rien avant lui. Comment imprimer les autres réponses avec?Python: Toutes les puissances de 2 de la puissance de 0 à 16


n = 2 
exponent = 16 

while exponent < 16+1: 
    n = n ** exponent 
    exponent = exponent + 1 
    print (n) 
+0

Vous commencez avec 'exposant = 16' peut-être vous devriez initialiser 'exposant' à' 0' – user2314737

Répondre

1

votre exponent commence à 16; la boucle while ne fera qu'une seule itération. et vous réattribuant n à chaque étape de la boucle ... cela fonctionnerait:

for exp in range(17): 
    print(2**exp) 
0

Vous devez vérifier l'initialisation de exponent, puisque vous voulez aller de 0 à 16, mais vous mettre à 16 ans depuis le début.

exponent = 0 devrait faire l'affaire;)

Aussi, soyez prudent parce que vous réattribuant n chaque fois dans votre boucle. Essayez d'imprimer le résultat au lieu de le stocker dans n (ou utilisez une autre variable).

Espérons que cela aide!

2

meilleure façon avec des puissances de 2 utilise le décalage de bits sur 1, ce qui est beaucoup plus rapide que l'exponentiation dans ce cas.

Cela dit, je ne recommanderais pas une boucle while mais plutôt une boucle for, ou encore mieux: générer votre liste de valeurs à l'aide d'une compréhension de la liste (ce qui évite toutes les variables et les effets secondaires indésirables, des boucles infinies en raison de while , etc ...) et une doublure:

print([1<<exponent for exponent in range(17)]) 

résultat:

[1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536] 
1

Effectuez les modifications suivantes dans le code

  1. exponent doit être initialement défini sur 0.
  2. Résultat doit être stocké dans une variable distincte dans la boucle, pas n

Voici la version correcte du code:

n = 2 
exponent = 0 

while exponent < 16+1: 
    res = n ** exponent 
    exponent = exponent + 1 
    print (res)