Back

La boucle for en python

La boucle for en python

  1. Objectifs

    • Comprendre et savoir utiliser la boucle for dans Python.
    • Savoir utiliser les boucles for (imbriquées) et la technique du “drapeau” sous Python
  2. 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.




  3. Syntaxe

    • for var in séquence:
      instruction 1

      instruction n

      • var est un élément de l’ensemble sé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.

      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:
    • Admettons que l’on veuille afficher 5 fois le message “Je suis votre formateur en Python”. Voici ce qu’on peut faire.
    • for i in range(5): """ pour i allant de 0 à 4"""
         print("Je suis votre formateur en Python")
  4. Les mots clés "break" et "continue"

    • break
      • 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.
      • while 1:
            """ 1 est toujours vrai -> boucle infinie"""
            lettre = input (" Tapez 'Q' pour quitter : ")
            if lettre == "Q":
                print ("Fin de la boucle ")
            break
      • La boucle while a pour condition 1, c’est-à-dire une condition qui sera toujours vraie. Autrement dit, en regardant la ligne du while , 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.
      continue
      • 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 du while ou for.
      • 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
      • Ce qui nous donne:
      • La boucle for en python

      • 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 du while.
      • 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).
  5. Applications

    • 1- Écrire une ligne de commande qui affiche tous les multiples de 7 entre 0 et 70.
      • Solution
        for i in range(0,70):
            if i%7==0:
                print(i)
    • 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.
      • 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:

        • 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.
      • 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:

        • 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é.
      • 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:

        • 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.
      • 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:

        • 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.
      • Solution
        Explication:

        • 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.



Riadh HAJJI

Abonnez vous à notre chaîne YouTube gratuitement