Article Index

Les boucles while

Maintenant que vous maitrisez bien les conditions if elif else, nous allons voir les boucles ! en introduisant successivement les mots clés while break continue ! Les éléments de syntaxe du while sont tres proche du if, mais il faudra faire attention que la condition devient fausse a un moment donné de l'exécution, sinon le code boucleras indéfiniment ! aie ! Chaque passage dans la boucle est appelé une itération ... L'instruction while peut ce traduire en francais par "tant que" , donc tant que la condition est vrai, le code est exécuté, retourne au début et teste de nouveaux la condition, jusqu'a ce qu'elle devienne fausse.

while condition:
    print('code a executer')
    # modification qui influence la condition
    variable = ???

L'exemple le plus simple est une boucle qui qui affiche les entiers de 0 a 10 :

i = 0
while i<=10:
    print(i)
    i = i+1

Ici tant que i est inférieur ou égale a 10, ont affiche i et ont l'incrément de 1. Lors de la derniere itération, quand i vaut 10, le code est exécuté, affiche 10, incrément i qui vaut 11, retourne au début de la boucle. L'instruction while teste alors la condition qui est fausse et met fin a l'exécution de la boucle. L'execution et le comportement d'une boucle peu etre influencer par d'autre moyens que la condition intiale, grace aux instructions break et continue. Donnons un exemple de base simple :

i = 0

while True:
    i = i+1

    # i impaire ?
    if i%2 == 1: continue # aller au point 1
            
    print(i)
    
    if i>=10: break # sorti direct, au point 2

    # point 1 fin du code dans la boucle
    # puis retour a debut, teste de la condition, etc

#point 2 or de la boucle et suite du code
print('bla bla bla')

Pour la premiere, l'instruction continue permet de "casser" l'exécution du code a l'intérieur de la boucle en passant a la prochaine itération ! Dans cette exemple, i est incrémenté de 1 a chaque itération, lorsque i est impaire (premier if) alors l'instruction continue est exécuté qui amene le fils d'exécution au point 1 ce qui implique que la suite du code dans la boucle n'est pas exécuté, donc il n'y auras pas d'affichage et la seconde condition ne seras pas tester non plus, la suite du code n'est donc exécuté que lorsque i est paire ! La seconde instruction break permet de "casser" la boucle sans prendre en compte la condition initialement défini (ici tout le temps vrai), donc lorsque la second condition i>=10 est vrai, l'instruction break est exécuté et met fin a l'exécution de la boucle en allant au point 2 ! Ce code afficheras donc les entiers paires de 2 a 10 ! Ce dernier auras le meme comportement que le code suivant :

i = 2
while i<=10:
    print(i)
    i = i+2

Les instructions break et continue sont rarement utilisé, mais permettent dans certain cas, de grandement simplifier la logique du code, grace a un logique "divide and conquer" l'instruction break est par exemple utile lorsque l'on veut exécuter au moins une fois un tour de boucle, sans dupliquer le code, c'est le cas pour tester une entré utilisateur :

total = 0
while True:
    i = input()
    if i == 'F': break
    total = total+int(i)

Ne pas utiliser l'instruction break dans cette exemple reviendrai a écrire le code suivant :

total = 0
i = input()
while i != 'F':
    total = total+int(i)
    i = input()

Bref grace aux instruction if elif else while et break vous pouvez écrire votre premier petit jeux !

import random
NB_ESSAIS_MAX = 6
x = random.randint(0,100)
n = 0

while True:
    t = int(input())
    n = n+1
    if n == NB_ESSAIS_MAX: break
    elif t>x: print('Trop grand')
    elif t<x: print('Trop petit')
    else: break

if t == x: print('Gagné en', n, 'essais !')
else: print('Perdu ! Le secret était', x)

L'instruction continue est quand a elle plus utilisé conjointement a une boucle for que nous allons voir dans la section suivante, afin de "passé" les éléments indésirables d'une sequence.

Les boucles for

Pour simplifier l'écriture de certains codes, il existe les boucles for. Nous ne rentrerons pas ici dans le détail de sont utilisation, qui nécéssite la maitrise des notions d'iterateur. Que nous verrons dans le cour suivant. Ainsi, si nous reprenons un code simple du début :

i = 0
while i<=10:
    print(i)
    i = i+1

il peu s'écrire en 2 ligne avec une bouble for :

for i in range(10):
    print(i)

Ici, range est fait appel à la notions d'itérateur, a chaque tour de boucle l'objet renverra le chiffre suivant, de 0 à 9, une fois arrivé à 10 l'objet ne renverra rien et la boucle ce terminera simplement. Elle peu prendre 1,2 ou 3 arguments, par exemple :

# start(0) / end (10)
>>> [i for i in range(0,10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# start (0) / end(10) / step (2)
>>> [i for i in range(0,10,2)]
[0, 2, 4, 6, 8]

# end (10)
>>> [i for i in range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Cette notation est un peu particulière, et nous revoiendrons dessus plus tard