Boucle while#
Répétition d'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
nb_points = 0
max = 10
while nb_points < max:
print("Points:", nb_points)
nb_points += 3
print("Bravo!")
Ordinogramme
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
for _ in range(10):
print("Hello")
Boucle while
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 47#
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 48#
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 49#
Sans exécuter le programme, qu'affichera-t-il?
s = 0
i = 1
while i <= 5:
s = s + i
i = i + 1
print(s)
Solution
ligne |
condition (while) |
s |
i |
|
|---|---|---|---|---|
1 |
0 |
? |
||
2 |
0 |
1 |
||
3 |
1 <= 5: Vrai |
0 |
1 |
|
4 |
1 |
1 |
||
5 |
1 |
2 |
||
3 |
2 <= 5: Vrai |
1 |
2 |
|
4 |
3 |
2 |
||
5 |
3 |
3 |
||
3 |
3 <= 5: Vrai |
3 |
3 |
|
4 |
6 |
3 |
||
5 |
6 |
4 |
||
3 |
4 <= 5: Vrai |
6 |
4 |
|
4 |
10 |
4 |
||
5 |
10 |
5 |
||
3 |
5 <= 5: Vrai |
10 |
5 |
|
4 |
15 |
5 |
||
5 |
15 |
6 |
||
3 |
6 <= 5: Faux |
15 |
6 |
|
6 |
15 |
6 |
15 |
Le programme affichera 15.
Exercice 50#
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 51#
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(input("Choisissez un nombre: "))
2i = 1
3while i <= 5:
4 print(i * nombre)
5 i += 1
Exercice 52#
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".
Écrivez 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 53#
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 = input("Quelle est la capitale de la Suisse?")
# Complétez le programme ici
while ...:
capitale = input("Faux, essaie encore!")
print("Bravo!")
Solution
1capitale = input("Quelle est la capitale de la Suisse?")
2
3while capitale != "Berne":
4 capitale = input("Faux, essaie encore!")
5print("Bravo!")
Exercice 54#
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
n = 5
if n < 10:
n += 1
print(n)
Programme 2
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 55#
Déterminez ce qu'affichera le programme suivant.
1x = 0
2y = 20
3while x < y:
4 y -= x * 2
5 x = x + 2
6 print(x + y)
Solution
ligne |
condition (while) |
x |
y |
|
|---|---|---|---|---|
1 |
0 |
? |
||
2 |
0 |
20 |
||
3 |
0 < 20: vrai |
0 |
20 |
|
4 |
0 |
20 |
||
5 |
2 |
20 |
||
6 |
2 |
20 |
22 |
|
3 |
2 < 20: vrai |
0 |
20 |
|
4 |
2 |
16 |
||
5 |
4 |
16 |
||
6 |
4 |
16 |
20 |
|
3 |
4 < 16: vrai |
4 |
16 |
|
4 |
4 |
8 |
||
5 |
6 |
8 |
||
6 |
6 |
8 |
14 |
|
3 |
6 < 8: vrai |
6 |
8 |
|
4 |
6 |
-4 |
||
5 |
8 |
-4 |
||
6 |
8 |
-4 |
4 |
|
3 |
8 < -4: faux |
8 |
-4 |
Exercice 56#
É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 = float(input("Entrez une note: "))
3while note != 99:
4 if note >= 1 and note < 4:
5 nb_notes_insuf += 1
6 note = float(input("Entrez une note: "))
7print("Vous avez fait", nb_notes_insuf, "notes insuffisantes")
Exercice 57#
Reprenez l'exercice 52 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")
Exercice 58#
Vous empruntez 2'500 CHF à 7.9 % sous la forme d'un crédit à la consommation pour vous offrir un scooter.
Calculez le montant d'intérêt à payer si vous remboursez l'entier de cette somme dans 40 mois.
Calculez le montant total à payer.
Modifiez le code pour que l'utilisateur puisse choisir le montant à emprunter et la durée du crédit en mois et qu'il soit possible de changer le taux d'intérêt facilement.
# Écrivez le programme ici
Solution
Étape 1:
1dette = 1500
2interets = dette * 7.9 / 100 * 40 / 12
3print(interets)
Étape 2:
1dette = 1500
2montant_total = dette + dette * 7.9 / 100 * 40 / 12
3print(montant_total)
Étape 3:
1taux = 7.9 / 100
2dette = float(input("Quel montant voulez-vous emprunter?"))
3duree = float(input("Quelle est la durée de l'emprunt?"))
4montant_total = dette + dette * taux * duree / 12
5print(montant_total)
Exercice 59#
Vous achetez une voiture à 15'000 CHF avec un crédit dont le taux est de 10.5%. Vous pouvez rembourser 550 CHF par mois (intérêts compris).
Combien de mensualités sont nécessaires pour rembourser la totalité du montant?
# Écrivez le programme ici
Solution
1dette = 15000
2taux = 10.5 / 100
3remboursement = 550
4nb_mensualites = 0
5while dette > 0:
6 dette += dette * taux * 1 / 12
7 nb_mensualites += 1
8 if dette >= remboursement:
9 dette -= remboursement
10 print("Après", nb_mensualites, "mois, la dette est de", dette, "CHF.")
11 else:
12 print("Le dernier versement sera de", dette, "CHF.")
13 dette = 0
14print("Nombre de mensualités nécessaires pour rembourser la dette:", nb_mensualites)