• Keine Ergebnisse gefunden

Exemple 3: Instructions avec la clause if… elif… else…

1.2.3. Les instructions en boucle

Sous python, on distingue deux principales catégories d’instructions en boucles : les instructions en boucle « while… » et les instructions en boucle « for… in… »

Les instructions en boucle « while… » sont exécutées tant que la (les) condition(s) définies par l’expression logiques sont vraies. Tandis que les instructions en boucle « for…in » sont exécutées pour chaque élément pris dans un ensemble d’éléments préalablement indiquées (généralement dans un objet range ou list).

1.2.3.1. Les instructions en boucle « while… »

La syntaxe générale de la définition des instructions en boucle while se présente comme suit : Initialisation de la variable d’incrémentation

while condition :

bloc_instructions incrémentation

33 Une boucle while nécessite trois éléments pour fonctionner correctement : 1. l’initialisation de la variable de test (ou variable d’incrémentation) avant la boucle ; 2. La définition de la condition à évaluer définie en fonction de la variable de test; 3. l’incrémentation de la variable de test dans le corps de la boucle à la suite des instructions.

Là aussi, il faut prêter attention au symbole « : » qui marque la fin de la déclaration de la boucle while et le début de la définition des instructions tout comme dans le cas de l’utilisation de la fonction « if »

L’exemple ci-dessous illustre la définition d’une boucle while… : x = 1 # Initialisation de la variable x

while (x < 10):

print('La valeur de x est ', a)

x = x + 1 # Incrémentation de la variable x

Dans l’exemple ci-dessus, on affiche la valeur de x tant que x est inférieur à 10. La valeur de x est initialisée à 1 et incrément avec +1 après chaque instruction print(). Comme dans la structure if, la condition est d’abord évaluée et si elle vraie, le bloc d’instructions est exécuté.

Mais ici avec la clause while après exécution du bloc d’instruction, la condition est évaluée à nouveau. Cette exécution se répète jusqu’à ce que la condition devienne fausse. C’est pourquoi il n’est nécessaire de définir une variable d’incrémentation dont la valeur se modifie après chaque exécution de sorte que la condition puisse être fausse à partir d’une certaine valeur.

Cette incrémentation est nécessaire pour éviter que les instructions soient indéfiniment évaluées créant ainsi une boucle infinie (ou boucle folle). Une telle situation nécessite alors un arrêt forcé de l’exécution du programme. Dans ce cas, on peut utiliser la touche « CTRL+C » pour interrompre l’exécution du programme.

NB : Il faut aussi noter que comme dans la définition des instructions en clause if, les blocs d’instruction dans une clause while sont aussi définis par indentation (décalage de positions à l’intérieur de la clause while)

1.2.3.2. Les instructions en boucle « for… in… »

La syntaxe générale de la définition d’instructions en boucle for… in… est la suivante : for element in sequence_de_valeurs :

bloc instructions

Dans cette syntaxe, le bloc d’instruction est exécuté pour chaque élément figurant dans la séquence de valeurs qui est généralement une liste de valeurs ou un tuple de valeurs (nous reviendrons sur la définition des listes et de tuples un peu plus tard).

34 Contrairement à la variable d’incrémentation dans une boucle while, la variable indice (element) n’est pas initialisée par l’utilisateur. Elle prend successivement les valeurs figurant dans la séquence parcourue.

Nb : element est ici un nom générique, on peut utiliser n’importe quel nom à la place.

Là également, il faut prêter une attention au symbole « : » qui marque la fin de la déclaration de la boucle « for » et le début de la définition des instructions tout comme dans le cas de l’utilisation de la fonction « if » et de la boucle « while »

Les exemples ci-dessous illustrent la définition d’une boucle « for ».

Exemple 1 : Instruction dans une boucle « for.. in … » simple for i in range(1,11) :

print(i)

Dans cet exemple, on affiche chaque valeur défini par la séquence de valeur range(1, 11) qui fournit en fait les valeurs allant de 1 à 10. On pouvait aussi utiliser la structure syntaxique suivante :

for i in [1,2,3,4,5,6,7,8,9,10]:

print(i)

Ce qui vaut en réalité à la commande suivante : for i in list(range(1,11)):

print(i)

Exemple 2 : Boucle « for.. in… » sur une chaine de caractères listch = "Hello world"

for i in listch : print ( i )

Attention : Dans cet exemple, il ne s'agit pas de répéter les instructions pour les deux mots mais plutôt pour chaque par lettre apparaissant dans la séquence de caractères y compris les espace. C’est la particularité des chaînes de caractères. Nous reviendrons plus en détails sur les opérations sur les chaînes de caractères plus tard.

Exemple 3 : Combinaison d’une boucle « for…in … » et d’une clause « if » listnb = [4, 5, 6]

for i in listnb:

if i == 5:

print("La condition est vérifiée pour l’élement", i) else :

print("La condition ,n’est pas vérifiée pour l’élément", i)

35 mych = "Hello World"

for i in mych :

if i in "AEIOUYaeiouy":

print ('La lettre', i, 'est une voyelle') else :

print ('La lettre', i, 'est une consonne')

1.2.4. Les instructions break et continue dans une clause « while… » ou « for … in…»

Les mots réservés break et continue sont utilisés pour modifier le comportement d'une boucle

« for…in » ou d'une boucle « while… ». L’instruction break permet d’arrêter l’évaluation de la boucle et l’exécution des instructions pour sortir prématurément de la boucle même la condition principale définissant la boucle reste encore vraie. Et l’instruction continue permet de suspendre l’exécution des instructions lorsque la condition principale est vérifiée. Les exemples ci-dessous sont des illustrations.

Exemple de boucle avec l’instruction break for i in range(5):

if i > 2:

break print (i)

Au départ, cette boucle for vise à afficher tous éléments de la séquence de valeurs allant de 1 à 4. Mais avec l’instruction break définie à l’intérieur de la clause if, la boucle for est stoppée lorsque i devient supérieur à 2.

Exemple de boucle avec l’instruction continue for i in range(5):

if i == 2:

continue print (i)

Au départ, cette boucle for est conçue pour afficher tous éléments de la séquence de valeurs allant de 1 à 4. Mais avec l’instruction continue définie à l’intérieur de la clause if, l’instruction print() n’est pas exécutée lorsque i prend la valeur 2. Mais elle est exécutée pour toutes les autres valeurs de la séquence.