Aller au contenu

Boucle bornée☘

De manière générale, la boucle « for » s'utilise lorsqu'on connaît à l'avance le nombre de répétitions à effectuer dans un programme.

En Python, la syntaxe de la boucle « Pour » est un peu particulière. Elle s'écrit sous la forme :

1
2
3
4
for (variable) in (sequence):
    instructions (bloc) à répéter

## Sortie de la boucle en revenant en début de ligne

Une « séquence » peut être :

  • générée par un itérateur ;
  • une chaîne de caractères (str) ;
  • une liste de nombres ;
  • etc...

Valeurs générées par un itérateur☘

La fonction range() dans une boucle for permet à une variable de prendre successivement des valeurs entières selon le principe suivant :

A savoir

a, b et p sont des variables de type int.

  • range(a, b) génère les entiers a, a+1, a+2, ..., b-1.

  • range(b) est une abréviation pour range(0, b).

  • range(a, b, p) génère les entiers a, a+p, a+2*p, a+3*p, ..., a+k*p, où a+k*p est la dernière valeur s'écrivant sous cette forme tout en restant strictement inférieure à b.

Exemples☘

  1. Lister les valeurs successives prisent par la variable k avec l'instruction suivante :

    for k in range(2, 8)
    

    Une solution

    Les valeurs successives prises par la variable k sont :
    2, 3, 4, 5, 6 puis 7

  2. Lister les valeurs successives prisent par la variable k avec l'instruction suivante :

    for k in range(5, 25, 4)
    

    Une solution

    Les valeurs successives prises par la variable k sont :
    5, 9, 13, 17 puis 21. 25 n'est pas atteint puisqu'il représente la borne supérieure (exclue) de l'intervalle généré.

  3. La variable k prend successivement pour valeurs : 7, 10, 13, 16, 19.
    Donner une instruction utilisant la fonction range() permettant de générer cette liste d'entiers.

    Une solution

    Trois solutions sont possibles :

    for k in range(7, 20, 3)
    
    ou
    for k in range(7, 21, 3)
    
    ou
    for k in range(7, 22, 3)
    
    mais pas
    for k in range(7, 23, 3)
    
    qui génère la liste : 7, 10, 13, 16, 19 puis 22

Notion d'accumulateur☘

Un accumulateur est une variable ayant une valeur initiale et à laquelle on ajoute (ou multplie par) une valeur à chaque répétition des instructions d'une boucle.

1
2
3
4
5
accumulateur = valeur_initiale

for i in range(a, b):
    instructions (bloc)
    accumulateur = accumulateur + valeur
Dans le cas d'une fonction, c'est généralement la valeur finale de l'accumulateur qui est renvoyée.

Exemple☘

Complétez la définition de la fonction produit() qui prend pour paramètre un entier naturel n et qui renvoie le produit P des entiers de 1 à n : P = 1 + 2 + ... + n.

1
2
3
4
5
def produit(n):
    """
    n - int, n >= 0
    Sortie : int - le produit des entiers de 1 à n.
    """
Une solution

Question importante : pourquoi faut-il initialiser P avec la valeur 1 ?

1
2
3
4
5
6
7
8
9
def produit(n):
    """
    n - int, n >= 0
    Sortie : int - le produit des entiers de 1 à n.
    """
    P = 1
    for i in range(1, n+1):
        P = P*i
    return P