Boucle while#
Répétition un bloc d'instructions#
La boucle while (qui signifie "tant que" en anglais) permet de répéter un bloc d'instructions tant qu'une condition est vraie.
while condition:
instruction 1
instruction 2
...
Programme | Ordinogramme |
---|---|
nb_points = 0
max = 10
while nb_points < max:
print("Points:", nb_points)
nb_points += 3
print("Bravo!")
|
La boucle while
peut être utilisée comme une boucle for
. Pour cela, il faut
définir un compteur qui va "compter" le nombre de répétitions.
Boucle for | Boucle while |
---|---|
for _ in range(10):
print("Hello")
|
compteur = 0
while compteur < 10:
print("Hello")
compteur += 1
|
Important
Il ne faut pas oublier d'incrémenter (augmenter) le compteur à chaque passage dans la boucle, sinon la condition sera toujours vraie et la boucle ne s'arrêtera jamais (boucle infinie). Cela fait "planter" le programme.
Exercice 50#
Sans l'exécuter, qu'affiche ce programme?
Ensuite, exécutez le programme pour vérifier votre réponse.
i = 1
while i <= 10:
print("7 *", i, "=", 7 * i)
i = i + 1
Solution
Ce programme calcule et affiche le livret de 7 de 1 à 10.
Exercice 51#
Sans l'exécuter, qu'affiche ce programme?
Ensuite, exécutez le programme pour vérifier votre réponse.
n = 2
while n <= 50:
print(n)
n = n + 2
Solution
Ce programme affiche les nombres paires de 2 à 50 compris.
Exercice 52#
Sans exécuter le programme, faites un tableau d'états des variables de ce programme.
Qu'affichera-t-il?
s = 0
i = 1
while i <= 5:
s = s + i
i = i + 1
print(s)
Solution
Ce programme affiche les nombres paires de 2 à 50 compris.
Exercice 53#
En utilisant une boucle while
, écrivez un programme qui:
affiche tous les nombres entiers jusqu'à 15,
à la fin, affiche "J'ai fini de compter!".
# Écrivez le programme ici
Solution
1i = 1
2while i <= 15:
3 print(i)
4 i += 1
5print("J'ai fini de compter!")
Exercice 54#
En utilisant une boucle while
, écrivez un programme qui:
demande un nombre entier à l'utilisateur,
affiche les 5 premiers multiples de ce nombre.
# Écrivez le programme ici
Solution
1nombre = int(await input_line("Choisissez un nombre: "))
2i = 1
3while i <= 5:
4 print(i * nombre)
5 i += 1
Exercice 55#
Nous souhaitons créer un programme qui compte le temps avant qu'une bombe explose. Pour cela, un compte à rebours commencera à 10 et ira jusqu'à 1, puis le programme affichera "BOOM".
Écrire un programme qui correspond à l'algorithme suivant:
Initialiser une variable compte_a_rebours à 10
Tant que compte_a_rebours est plus grand que 0
Afficher La valeur de compte_a_rebours
Retirer 1 à compte_a_rebours
Afficher "BOOM"
Ce programme doit alors afficher:
10
9
8
7
6
5
4
3
2
1
BOOM
# Écrivez le programme ici
Solution
1compte_a_rebours = 10
2while compte_a_rebours > 0:
3 print(compte_a_rebours)
4 compte_a_rebours -= 1
5print("BOOM")
Exercice 56#
Complétez le programme pour qu'il demande à l'utilisateur la capitale de la Suisse. Tant que la réponse n'est pas "Berne", le programme redemande une nouvelle réponse.
Exemple d'exécution:
Quelle est la capitale de la Suisse?
Zurich
Faux, essaie encore!
Genève
Faux, essaie encore!
Berne
Bravo!
capitale = await input_line("Quelle est la capitale de la Suisse?")
# Complétez le programme ici
while ...:
capitale = await input_line("Faux, essaie encore!")
print("Bravo!")
Solution
1capitale = await input_line("Quelle est la capitale de la Suisse?")
2
3while capitale != "Berne":
4 capitale = await input_line("Faux, essaie encore!")
5print("Bravo!")
Exercice 57#
Tout d'abord, sans les exécuter, expliquez la différence entre les deux programmes. Ensuite, testez-les pour vérifier votre réponse.
Programme 1 | Programme 2 |
---|---|
n = 5
if n < 10:
n += 1
print(n)
|
n = 5
while n < 10:
n += 1
print(n)
|
Solution
Le programme 1 affichera: 6
Le programme 2 affichera: 6 7 8 9 10
Avec un if
le condition est testée une seule fois, le bloc d'instructions est
lui aussi exécuté une seule fois, alors qu'avec le while
, le bloc
d'intructions sera exécuté tant que la condition n < 10
est vérifiée.
Exercice 58#
Déterminez la valeur de chacune des variables de ce programme en créant un tableau d'états.
1x = 0
2y = 20
3while x < y:
4 y -= x * 2
5 x = x + 2
6 print(x + y)
Solution
x |
y |
---|---|
0 |
? |
0 |
20 |
0 |
20 |
2 |
20 |
2 |
16 |
4 |
16 |
4 |
8 |
6 |
8 |
6 |
-4 |
8 |
-4 |
Exercice 59#
Écrivez un programme dans lequel l'utilisateur peut consécutivement entrer les
notes qu'il a faites dans une branche. À la fin, le programme affichera le
nombre de notes insuffisantes qui ont été entrées. Les notes invalides seront
simplement ignorées. Pour terminer le programme, l'utilisateur entrera la note
99
.
Exemple d'exécution:
Entrez une note: 4.5
Entrez une note: 3.4
Entrez une note: 6
Entrez une note: 3.9
Entrez une note: 5.1
Entrez une note: 99
Vous avez fait 2 notes insuffisantes
# Écrivez le programme ici
Solution
1nb_notes_insuf = 0
2note = 0
3while note != 99:
4 note = float(await input_line("Entrez une note: "))
5 if note >= 1 and note < 4:
6 nb_notes_insuf += 1
7print("Vous avez fait", nb_notes_insuf, "notes insuffisantes")
Exercice 60#
Reprenez l'exercice 55 et modifiez le pour qu'à partir de 3, il affiche également "Fuyez!".
10
9
...
4
3 Fuyez!
2 Fuyez!
1 Fuyez!
BOOM
# Écrivez le programme ici
Solution
1compte_a_rebours = 10
2while compte_a_rebours > 0:
3 if compte_a_rebours <= 3:
4 print(compte_a_rebours, "Fuyez!")
5 else:
6 print(compte_a_rebours)
7 compte_a_rebours -= 1
8print("BOOM")