Syntaxe d'une boucle while
La boucle while s'utilise lorsqu'on ne connaît pas à l'avance le nombre d'itérations de notre programme. C'est la différence avec la boucle for, qui elle s'utilise lorsque le nombre d'itérations est connu. Il y a un exemple dans l'éditeur.
En effet while signifie tant que, et tant que la condition à vérifier est
vraie, le code indenté est exécuté à chaque itération. Ici tant que la variable
somme
est strictement inférieure à 100, alors n
est incrémenté de 1 et
somme
est incrémenté de n
.
Que fait ce code ? La variable n
vaut initialement 0 et prend successivement les
valeurs 1 puis 2 puis 3 etc. La variable somme
vaut initialement 0, puis est
successivement incrémentée de 1 puis 2 puis 3 etc. donc correspond à la somme
La boucle s'arrête dès que la condition somme < 100
n'est plus vraie,
autrement dit dès que la somme est supérieure ou égale à 100. Ainsi n
correspond au
nombre d'entiers consécutifs à additionner pour avoir une somme supérieure ou égale à 100.
- 1
Combien faut-il additionner de nombres consécutifs pour avoir une somme supérieure ou égale à 100 ? Exécute le code pour le savoir.
- 2
Quelle est la somme de ces quatorze premiers entiers ? Ajoute un
print
pour la connaître.Solution
La variable
somme
contient le résultat à afficher.somme = 0 n = 0 while somme < 100: n = n + 1 somme = somme + n print(n) print(somme)
- 3
Combien d'entiers consécutifs faut-il additionner pour obtenir une somme supérieure ou égale à 500 ? Modifie le code pour déterminer ce nouveau seuil.
Solution
Il faut modifier la condition d'arrêt
somme < 100
et la remplacer parsomme < 500
somme = 0 n = 0 while somme < 500: n = n + 1 somme = somme + n print(n) print(somme)
- 4
Modifie la manière dont la variable
somme
est incrémentée pour que la boucle while calcule la somme de carrés d'entiers consécutifs commeCombien de carrés d'entiers consécutifs sont nécessaires pour obtenir une somme supérieure ou égale à 1000 ? Affiche le seuil ainsi que la somme.
Solution
Pour obtenir la somme des carrés d'entiers il faut changer la manière d'incrémenter
somme
. À l'itérationn
on ajouten ** 2
et non plus justen
On veut également modifier la condition d'arrêt car le seuil est atteint lorsque la somme est supérieure ou égale à 1000. On utilise donc la condition d'arrêt
somme < 1000
somme = 0 n = 0 while somme < 1000: n = n + 1 somme = somme + n ** 2 print(n) print(somme)
- 5
Une pyramide à base carrée est construite avec des Legos. Le premier étage contient une pièce, le deuxième étage quatre pièces, le troisième étage neuf pièces etc.
Sachant que la pyramide a nécessité un peu plus de 10000 pièces en tout, de combien d'étages est-elle constituée ? Modifie le code de manière à obtenir la réponse.
Solution
Il y a deux variables au problème, le numéro de l'étage et le nombre de pièces.
Le numéro de l'étage est incrémenté de un en un, c'est la variable
n
. Ce type de variable qui augmente d'une unité à la fois s'appelle aussi un compteur. Le nombre de pièces augmente quant à lui den ** 2
à chaque étage.Finalement le code de l'éditeur permet déjà de répondre à la question, il reste à modifier la condition d'arrêt par
somme < 10000
En effet dans ce cas la boucle va s'arrêter dès que la somme aura dépassé ce nombre, ce qui nous donne le nombre de pièces utilisées (variable
somme
) et le nombre d'étages (variablen
)somme = 0 n = 0 while somme < 10000: n = n + 1 somme = somme + n ** 2 print(n) print(somme)