6 – La boucle for (… pour)

Dans certaines situations on sait par avance combien de fois on doit répéter des instructions, dans ces cas là on utilise une boucle POUR ou FOR (en anglais).

Exemple : un jeu consiste à lancer 3 fois de suite un dé. Si l’on obtient au moins un six, on gagne; sinon, on perd. Nous savons à l’avance combien de fois il faudra lancer le dé (3 fois).

Pour ce genre de situation, les langages de programmation proposent la boucle POUR :

Remarque :
La variable i joue ici le rôle d’un compteur : elle compte les tours de boucles réalisés et est incrémenté automatiquement de 1 par défaut.

6.1 La boucle for … in … en Python

En Python nous utiliserons un générateur de nombres nommé range qui décrit les valeurs prises par le compteur.

En anglais range à plusieurs signification, nous devons en python le comprendre comme un intervalle discret de valeurs, une séquence de nombres.

Testons ces quelques lignes :

Quelles sont les valeurs qui ont été prises par i ?

Après avoir fait des test ci-dessus avec range(1,6) et range(2,10,2), compléter la signification de  :

  • range(n)         génère des entiers naturels de …  à ….  non compris avec un pas de …..
  • range(a,n)      génère des entiers naturels de …. à ….. non compris avec un pas de …..
  • range(a,n,p)  génère des entiers naturels de ….. à ….. non compris avec un pas de …..

 

Remarques :

  • Comme les instructions if et while, l’instruction «  for … in … » amorce une séquence d’instructions.
    • Le double point à la fin de la ligne introduit le bloc d’instructions à répéter,
    • lequel doit obligatoirement se trouver en retrait : être indenté.
    • La fin du bloc d’instructions à répéter est signalé par la fin de l’indentation.
  • Dans les sujets de Bac en mathématiques, nous trouverons la syntaxe suivante :
    • Pour i allant de 1 à N; sous-entendu, N compris.
    • En Python, for i in range (1,N) : s’arrête à N-1 , donc N non compris.
    • Pour aller jusqu’à N, il faut donc écrire ; for i in range(1,N+1) :
    • On peut aussi itérer N fois avec for i in range(N) : mais i prendra les valeurs de 0 à N-1

Exercice : Table de Multiplication 

Ecrire et sauvegarder sous « 12_table7.py » un programme qui affiche la table de 7 à l’aide de l’instruction print et d’une boucle for.


Exercice : Frise

Ecrire et sauvegarder sous « 13_frise.py » un programme qui dessiner avec Turtle une frise de carré dont la longueur du coté et le nombre de carré sont entrés par l’utilisateur.


6.2 La boucle for pour parcourir une chaîne de caractères

Jusqu’ici la boucle for … in … a été utilisée pour parcourir une séquence de nombres entiers. Ce mécanisme permet de parcourir d’autres d’objets comme une chaîne de caractères telle que  »Cléopatre » qui est une séquence de 9 caractères.


Testez le programme suivant :

Il arrive fréquemment lorsqu’on parcours une séquence avec une boucle for qu’on ait besoin de récupérer en même temps l’élément de la séquence et son indice à chaque itération. Pour cela on peut utiliser la fonction enumerate :

Modifiez la boucle du programme ci-dessus par :


Exercice : Occurence

A l’aide de boucle forin…, écrire un programme 14_occurence.py qui :

  • demandera à l’utilisateur de saisir une chaîne de caractères,
  • affichera le nombre d’occurence de chaque caractères contenus dans la chaîne saisie
  • ainsi que le nombre de caractères de la chaîne


6.3 For / break / continue /else

Comme pour la boucle While :

  • Il est possible d’interrompre une boucle for avec l’instruction : break
  • Il est possible de court-circuiter une boucle avec l’instruction : continue
  • Les boucles for peuvent posséder une clause else qui ne s’exécute que si la boucle se termine normalement, c’est-à-dire sans interruption par un break.

Les programmes doivent pouvoir être compris par d’autres programmeurs, c’est pourquoi il faut largement les commenter. En Python les commentaires sont insérés dans les programmes eux-mêmes et précédés du symbole # suivi des commentaires. C’est une habitude qu’il faut dès à présent prendre.


Exercice  : l’Emir Hifik

L’Emir Hifik a conservé les bougies de ses gâteaux d’anniversaire, depuis son premier anniversaire, et jusqu’à aujourd’hui, sauf celles d’une année où il était trop malade pour fêter quoi que ce soit. Il possède actuellement 1999 bougies.
Sachant qu’il a moins de 100 ans aujourd’hui, quel âge avait-il lorsqu’il n’a pas pu fêter son anniversaire ?

Résoudre ce problème à l’aide de boucle for .. in …. que vous enregistrerez dans un programme 15_emir.py