La boucle for en python
La boucle for en python
-
Objectifs
- Comprendre et savoir utiliser la boucle for dans Python.
- Savoir utiliser les boucles for (imbriquées) et la technique du « drapeau » sous Python
-
Présentation
- Les boucles permettent de répéter une certaine opération autant de fois que nécessaire.
- En Python, on trouve deux types de boucle :
- La boucle for dans laquelle une variable parcourt une collection de valeurs.
- La boucle while qui se répète tant qu’une condition est vraie.
- L’instruction « for » est une structure de contrôle itérative complète permet de répéter l’exécution d’une suite d’instructions un nombre fini de fois connu à l’avance.
- L’instruction « for » travaille sur des séquences. Elle est spécialisées dans le parcours d’une séquence de plusieurs éléments.
- Contrairement à d’autres langages comme le C ou PERL, python n’utilise pas de délimiteurs pour regrouper les lignes. L’indentation, souvent présentée comme un moyen de rendre les programmes plus lisibles, est ici intégrée à la syntaxe du langage. Il n’y a pas non plus de délimiteurs entre deux instructions autre qu’un passage à la ligne.
-
Syntaxe
- Où
var
est un élément de l’ensembleséquence
. Les instructions 1 à n sont exécutées pour chaque élément var de l’ensemble séquence. - Cette séquence peut être une chaîne de caractères, un tuple, une liste, un dictionnaire, un set ou tout autre type.
- Admettons que l’on veuille afficher 5 fois le message « Je suis votre formateur en Python ». Voici ce qu’on peut faire.
-
Les mots clés "break" et "continue"
- Le mot-clé
break
permet tout simplement d’interrompre une boucle. - Permet d’interrompre une boucle.
- Arrête une boucle quelle que soit la condition de celle-ci.
- Utile et fait gagner du temps.
- Mais préférez une boucle avec une condition claire.
- La boucle
while
a pour condition 1, c’est-à-dire une condition qui sera toujours vraie. Autrement dit, en regardant la ligne duwhile
, on pense à une boucle infinie. - Puis, on demande à l’utilisateur de taper une lettre (un ‘Q‘ pour quitter).
- Tant que l’utilisateur ne saisit pas cette lettre, le programme lui redemande de taper une lettre. Quand il tape ‘Q‘, le programme affiche Fin de la boucle et la boucle s’arrête grâce au mot-clé break.
- Permet de continuer une boucle.
- Fait repartir directement à la ligne du while ou for.
- Le mot-clé
continue
permet de. . . continuer une boucle, en repartant directement à la ligne duwhile
oufor
. - Ce qui nous donne:
- Comme vous le voyez, tous les six tours de boucle, i s’incrémente de 4. Arrivé au mot clé
continue
, Python n’exécute pas la fin du bloc mais revient au début de la boucle en testant à nouveau la condition duwhile
. - Autrement dit, quand Python arrive à la ligne 6, il saute à la ligne 2 sans exécuter les lignes 7 et 8.
- Au nouveau tour de boucle,Python reprend l’exécution normale de la boucle (continue n’ignore la fin du bloc que pour le tour de boucle courant).
-
Applications
- 1- Écrire une ligne de commande qui affiche tous les multiples de 7 entre 0 et 70.
- 2- Écrire un programme qui demande à l’utilisateur de saisir un nombre entier positif et calcule la somme des nombres pairs compris entre 1 et le nombre saisi inclus. La saisie de l’utilisateur est contrôlée pour s’assurer qu’il entre un nombre entier positif. En cas de saisie incorrecte, l’utilisateur est invité à entrer un nouveau nombre jusqu’à ce qu’un nombre entier positif valide soit saisi.
- Dans ce code, nous utilisons une boucle while pour demander à l’utilisateur de saisir un nombre entier positif.
- Nous utilisons la méthode ‘isdigit() pour vérifier si la saisie de l’utilisateur est un nombre, puis nous vérifions si le nombre est supérieur à zéro. Si l’utilisateur a saisi un nombre entier positif, nous convertissons la saisie en un entier et sortons de la boucle while. Sinon, nous affichons un message d’erreur et demandons à l’utilisateur de saisir un nouveau nombre.
- Une fois que nous avons le nombre entier positif saisi par l’utilisateur, nous initialisons la variable ‘somme‘ initialisée à zéro et utilisons une boucle ‘for‘ pour parcourir tous les nombres entre 1 et n inclus. Si le nombre est pair, nous l’ajoutons à la variable somme.
- Enfin, nous affichons la somme des nombres pairs calculée.
- 3-Écrire un programme qui calcule la factorielle d’un nombre entier positif saisi par l’utilisateur en utilisant une boucle ‘for1 à n, c’est-à-dire n! = 1 * 2 * 3 * … * n.
- Dans ce code, nous utilisons une boucle while pour demander à l’utilisateur de saisir un nombre entier positif. Nous utilisons la méthode isdigit() pour vérifier si la saisie de l’utilisateur est un nombre, puis nous vérifions si le nombre est supérieur à zéro. Si l’utilisateur a saisi un nombre entier positif, nous convertissons la saisie en un entier et sortons de la boucle while. Sinon, nous affichons un message d’erreur et demandons à l’utilisateur de saisir un nouveau nombre.
- Une fois que nous avons le nombre entier positif saisi par l’utilisateur, nous initialisons la variable à 1 et utilisons une boucle pour parcourir tous les nombres entre 1 et inclus. Nous multiplions le nombre par le produit à chaque itération de la boucle.produitforniproduit
- Enfin, nous affichons la factorielle du nombre saisi par l’utilisateur.
- 4- Écrire un programme qui demande à l’utilisateur de saisir une chaîne de caractères et qui affiche le nombre de voyelles présentes dans cette chaîne. Pour les besoins de cet exercice, nous considérons les voyelles comme les lettres « a », « e », « i », « o » et « u », en majuscules ou en minuscules.
- Ce petit programme va nous permettre de voir comment on manipule facilement les chaînes de caractères avec Python.
- Dans la boucle principale, on demande à l’utilisateur de saisir un mot. Le programme affiche alors le nombre de voyelles du mot donné.
- Dans ce code, nous utilisons une boucle
for
pour parcourir tous les caractères de la chaîne saisie par l’utilisateur. Nous initialisons le compteur de voyelles nb_voyelles à 0 avant de commencer la boucle. - À chaque itération de la boucle, nous vérifions si le caractère actuel est une voyelle en utilisant la méthode lower() pour convertir le caractère en minuscule, puis en utilisant l’opérateur in pour vérifier si le caractère est présent dans la chaîne « aeiou ». Si le caractère est une voyelle, nous incrémentons le compteur nb_voyelles.
- Enfin, nous affichons le nombre de voyelles dans la chaîne saisie par l’utilisateur.
- 5- Écrire un programme qui demande à l’utilisateur de saisir un entier positif, puis qui affiche la table de multiplication de cet entier de 1 à 10.
- Dans ce code, nous utilisons une boucle for pour parcourir les nombres de 1 à 10 (inclus) et nous multiplions chaque nombre par l’entier n saisi par l’utilisateur.
- Nous utilisons la fonction range() pour générer les nombres de 1 à 10. La fonction range(1, 11) génère une séquence de nombres allant de 1 à 10 (inclus). Nous utilisons la variable i pour stocker chaque nombre de cette séquence.
- À chaque itération de la boucle, nous affichons la multiplication de n par i, en utilisant la chaîne de caractères « x » pour séparer les deux facteurs et la chaîne de caractères « = » pour séparer le calcul de son résultat.
- Enfin, nous affichons le résultat à l’utilisateur.
- 6- Écrire un programme qui calcule et affiche la somme des nombres premiers compris entre 1 et 100. Un nombre premier est un nombre entier supérieur à 1 qui n’est divisible que par 1 et par lui-même.
- Dans ce code, nous utilisons deux boucles for et une variable ‘est_premier‘ initialisée à True.
- La seconde boucle parcourt tous les nombres entre 2 et le nombre courant – 1 inclus.
- Si le nombre courant est divisible par un nombre autre que 1 ou lui-même, nous mettons l’indicateur de primalité à ‘False‘
- Si le nombre courant est premier, c’est-à-dire que l’indicateur de primalité est resté à ‘True‘
- Enfin, nous affichons la somme des nombres premiers entre 1 et 100.
-
for var in séquence:
instruction 1
…
instruction n
Tout comme les tests, l’indentation est importante.
t = (1, 2, 3, 4)
for x in t:
print(x)
>>>
1
2
3
4
Activité01:
for i in range(5): """ pour i allant de 0 à 4"""
print("Je suis votre formateur en Python")
break
while 1:
""" 1 est toujours vrai -> boucle infinie"""
lettre = input (" Tapez 'Q' pour quitter : ")
if lettre == "Q":
print ("Fin de la boucle ")
break
continue
i = 1
while i < 40: # Tant que i est inférieure à 20
if i % 5 == 0:
print ("Valeur de i divisible sur cinq",i)
i += 4 # On ajoute 4 à i
print ("On incrémente i de 4. i est maintenant é gale à",i)
continue # On retourne au while sans exécuter les autres lignes
print ("La variable i =", i)
i += 1 # Dans le cas classique on ajoute juste 1 à i
Solution
for i in range(0,70):
if i%7==0:
print(i)
Solution
# Demander à l'utilisateur de saisir un nombre entier positif
while True:
n = input("Entrez un nombre entier positif : ")
if n.isdigit() and int(n) > 0:
n = int(n)
break
else:
print("Vous devez entrer un nombre entier positif.")
# Initialiser la somme à zéro
somme = 0
# Parcourir tous les nombres de 1 à n inclus
for i in range(1, n + 1):
# Ajouter le nombre à la somme si c'est un nombre pair
if i % 2 == 0:
somme += i
# Afficher la somme des nombres pairs
print("La somme des nombres pairs entre 1 et", n, "est", somme)
Explication:
Solution
# Demander à l'utilisateur de saisir un nombre entier positif
while True:
n = input("Entrez un nombre entier positif : ")
if n.isdigit() and int(n) > 0:
n = int(n)
break
else:
print("Vous devez entrer un nombre entier positif.")
# Initialiser le produit à 1
produit = 1
# Calculer la factorielle en utilisant une boucle for
for i in range(1, n + 1):
produit *= i
# Afficher la factorielle du nombre saisi par l'utilisateur
print(n, "! = ", produit)
Explication:
Solution
# Demander à l'utilisateur de saisir une chaîne de caractères
chaine = input("Entrez une chaîne de caractères : ")
# Initialiser le compteur de voyelles à 0
nb_voyelles = 0
# Parcourir tous les caractères de la chaîne avec une boucle for
for car in chaine:
# Si le caractère est une voyelle, incrémenter le compteur de voyelles
if car.lower() in "aeiou":
nb_voyelles += 1
# Afficher le nombre de voyelles dans la chaîne
print("La chaîne contient", nb_voyelles, "voyelle(s).")
Explication:
Solution
# Demander à l'utilisateur de saisir un nombre entier positif
while True:
n = input("Entrez un nombre entier positif : ")
if n.isdigit() and int(n) > 0:
n = int(n)
break
else:
print("Vous devez entrer un nombre entier positif.")
# Afficher la table de multiplication de n de 1 à 10
for i in range(1, 11):
print(n, "x", i, "=", n*i)
Explication:
Solution
Explication: