Introduction.
Dans certaines situations, nous sommes amenés à répéter plusieurs fois de suite une même tâche. Nous avons déjà vu que pour éviter de répéter la même instruction plusieurs fois, nous avions recours en informatique à des boucles.
Deux types de situation peuvent se présenter :
- le nombre de répétitions n’est pas connu à l’avance, mais on connaît un test d’arrêt de la boucle :
- Exemple :
un jeu consiste à lancer un dé jusqu’à obtenir un six.
Nous ne savons pas à l’avance combien de fois il faudra lancer le dé. - Pour ce genre de situation, les langages de programmation proposent la boucle TANT QUE :
TANT QUE ( ) FAIRE : lancer le dé FIN_TANT_QUE
- Exemple :
- le nombre de répétitions est connu à l’avance : on utilise alors une boucle POUR :
- 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 :
POUR i ALLANT_DE 1 A 3 : lancer le dé FIN_POUR
- Exemple :
Remarque :
La variable i joue ici le rôle d’un compteur : elle compte les tours de boucles réalisés.
La boucle for … in … en Python.
En anglais, range signifie ampleur, gamme, envergure, étendue. Même si cette traduction n’est pas correcte, nous penserons intervalle.
Exemple:
Testons ces quelques lignes :
–> Terminons par Enter; que se passe-t-il ?
–> Quelles sont les valeurs qui ont été prises par i ?
–> Traduire en français « for i in range (1,4)» :
–> Ce que nous pouvons encore comprendre comme : 1 <= i < 4, ou encore : 1 <= i <= 4-1.
Attention
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, nous taperons : for i in range(1,N+1) :.
Remarques
1. 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.
2. Dans les exercices de mathématiques, les valeurs prises par le compteur de la boucle ont souvent une importance déterminante. C’est pourquoi nous avons privillégié la syntaxe :
for i in range(1,4) :
print("T'as le bonjour d'Albert !")
Dans un cas comme celui-ci, seul compte le nombre de répétitions, et non les valeurs par lesquelles passe le compteur i.
On peut alors opter pour une syntaxe plus simple qui indique seulement le nombre de répétitions :
for i in range(3) :
print("T'as le bonjour d'Albert !")
Le compteur i passe alors par les valeurs 0, 1 et 2.
Exercice 17
Écrire un programme qui va :
- demander à l’utilisateur un nombre entier.
- lui répondre le même nombre de fois bonjour.
n = int(input("Combien de fois voulez-vous que l'on vous dise bonjour? ")) for compteur in range(1,n+1): print("Bonjour!")
Exercice 18
Écrire un programme qui permet de calculer la somme des entiers de 1 à n, n étant le nombre donné par l’utilisateur.
# Fonction qui permet de faire la somme des nombres de 1 a n n = int(input("Veuillez entrer le nombre entier n : ")) resultat = 0 for compteur in range(1,n+1): # pour i allant de 1 a n resultat = resultat+compteur print ("la somme des nombres de 1 a "+str(n)+" est : "+str(resultat))
La boucle for pour parcourir une chaîne de caractères.
Jusqu’ici la boucle for a été utilisée pour parcourir une liste de nombres entiers consécutifs : de 1 à 5, par exemple ( for i in range(1,6)).
Ce mécanisme permet de parcourir d’autres d’objets que des listes de nombres entiers. En effet, la boucle for … in … permet parcourir n’importe quel type de liste.
Une chaîne de caractères telle que »Cléopatre » est une liste de 9 caractère que Python sait parcourir.
Exemple
Testons ainsi le programme suivant :
–> Résultat ?
Exercice 19
A l’aide d’une boucle for…in…, écrire un programme qui :
- demandera à l’utilisateur de saisir une chaîne de caractères,
- comptera puis affichera le nombre de caractères contenus dans la chaîne saisie.
chaine = input("Ecrivez votre chaine de caractères! ") compteur = 0 for lettre in chaine: compteur = compteur + 1 print("Votre chaîne de caractères contient "+str(compteur)+" caractères")
Exercice 20
A l’aide d’une boucle for…in …, écrire un programme qui :
- demandera à l’utilisateur quelle est la lettre dont il souhaite connaître l’occurrence,
- demandera à l’utilisateur la chaîne dans laquelle il souhaite dénombrer l’occurrence de ce caractère,
- renverra alors l’occurrence du caractère choisi, dans la chaîne saisie.
chaine = input("Ecrivez votre chaine de caractères! ") recherche = input("Quel est la lettre à rechercher? ") compteur = 0 for lettre in chaine: if recherche == lettre: compteur = compteur + 1 print("Votre chaîne contient "+str(compteur)+" fois la lettre "+recherche)