Boucle while et instruction break
Boucle while et instruction break
Objectifs cantonaux : O1.6. Semaine dédoublée (×2, groupes A/B séparés).
Cours complet sur la plateforme Runestone de Cédric Donner : Instruction break.
Interrompre une boucle avec break
Il arrive qu’on utilise un grand nombre de répétitions « au cas où », puis qu’on interrompe la boucle dès qu’une tâche est accomplie. C’est le rôle de l’instruction break : elle interrompt immédiatement la boucle qui la contient (for ou while), même si le nombre de répétitions prévu n’est pas atteint.
from gturtle import *
def spirale(cote_initial, facteur, n_max, longueur_max):
cote = cote_initial
for _ in range(n_max):
if cote > longueur_max:
break # interrompt la boucle for immédiatement
forward(cote)
right(90)
cote *= facteur
speed(10)
spirale(50, 1.1, 30, 250)Sans le break, la spirale continuerait à grandir jusqu’à n_max côtés, même en sortant largement de l’écran.
La boucle infinie volontaire : while True + break
Vous connaissez déjà while True: pour faire tourner un programme sans arrêt (utilisé la semaine dernière sur le micro:bit). Combiné à break, c’est un motif extrêmement utile : répéter jusqu’à ce qu’une condition soit remplie, sans savoir à l’avance combien de répétitions seront nécessaires.
◈ Motif — Répéter jusqu’à…
while True:
# ... faire quelque chose ...
if condition_d_arret:
break
# ... éventuellement continuer ...question = "Quelle est la capitale du Danemark ? "
reponse_correcte = "Copenhague"
while True:
reponse = input(question)
if reponse == reponse_correcte:
break
else:
print("Réponse incorrecte !")
print("Félicitations ! La réponse", reponse, "est correcte.")Impossible de savoir à l’avance combien d’essais l’utilisateur va faire : while True + break est exactement l’outil qu’il fallait.
from random import randint
def juste_prix():
prix_secret = randint(0, 100)
nb_tentatives = 0
while True:
nb_tentatives += 1
prix = int(input("Essayez de deviner le prix : "))
if prix == prix_secret:
break
elif prix < prix_secret:
print("C'est plus cher")
else:
print("C'est moins cher")
print("Bravo ! Trouvé en", nb_tentatives, "tentatives")
juste_prix()! Facultatif — continue
Il existe aussi l’instruction continue, qui interrompt seulement le tour de boucle en cours et passe directement à l’itération suivante (sans sortir de la boucle). Moins courante que break, mais parfois pratique :
n = 0
for i in range(15):
n += 1
if n % 2 == 0:
continue # saute l'affichage des nombres pairs
print(n)Exercice 1 — suite des carrés
Écrivez un programme qui affiche les termes de la suite des carrés \(1, 4, 9, 16, 25, \ldots\) tout en ne dépassant jamais 95’000. Utilisez une boucle for avec un grand nombre de répétitions et un break.
Exercice 2 — compte à rebours (bombe)
Reprenez l’exercice de compte à rebours de la semaine dernière, mais cette fois avec le motif while True + break :
10
9
8
...
1
BOOM!
Devoir donné par Cédric
Terminer les exercices sur break (spirale, suite des carrés, compte à rebours).