'break' dans une boucle 'for'

break dans une boucle for

On peut stopper l'exécution d'une boucle sous condition grâce à l'instruction break.

Un premier exemple

Un jeu se joue en cent coups maximum. Si après cent lancers, on n'a pas obtenu cinq fois la face 6, on a perdu. Si au cours des lancers, on a obtenu cinq fois la face 6, on a gagné. On arrête la partie soit lorsqu'on a gagné, soit après les cent lancers.


from random import randint # on importe la fonction randint


cpt=0 # compteur pour la face 6
nb_lancers=0 # compteur pour le nombre de lancers
for k in range(100) :
	de=randint(1,6) # lancer d'un dé
	nb_lancers+=1 # on incrémente le compteur de lancers 
	if de==6 : cpt+=1  # si on a obtenu 6, on incrémente le compteur de face 6
	if cpt==5 :  # si on a obtenu cinq fois la face 6
		print("Gagné en {} lancers.".format(nb_lancers) ) 
		break # on arrête l'exécution de la boucle
		
print("Nombre total de lancers : ", nb_lancers)

Un essai :

Gagné en 38 lancers.
Nombre total de lancers :  38

Un autre essai :

Gagné en 52 lancers.
Nombre total de lancers :  52

On voit sur ces exemples qu'en sortie de boucle (second affichage) le nombre de lancers n'est pas égal à 100 : la boucle a été arrêtée par l'instruction break dès que cinq faces 6 ont été obtenues.

Une boucle 'tant que' serait bien adaptée également à ce type de situation, mais l'utilisation de l'instruction break peut parfois rendre le programme plus facile à comprendre.

Un second exemple

Un entier naturel n>1 est dit premier lorsqu'il ne possède pas d'autre diviseur que 1 et lui-même.

Pour tester si un entier n est premier, on va donc tester pour chaque entier k, compris entre 2 et n-1, si k divise n. Dès qu'on trouve un tel diviseur, on peut stopper nos tests puisqu'on est certain que l'entier n proposé n'est pas premier.


n=eval(input("Entrez un entier n>2 : "))

for k in range(2,n):
	if n%k==0:
		print("{} est diviseur de {}.".format(k,n))
		break
		
if k==n-1 : print("{} est premier.".format(n))

Un essai :

Entrez un entier n>2 : 17*11
11 est diviseur de 187.

Remarque : la fonction eval(...) utilisée permet d'évaluer la chaîne de caractères. Par exemple, eval('17*11') renvoie la valeur du produit 17*11. Tandis que int('17*11') renverrait une erreur.