Les boucles en python
Voici un code très simple :
Mais à quoi sert la variable i ? En fait, dans le cas de ce code très simple, i ne sert à rien !→ i est un compteur de la boucle : une variable qui augmente de 1 à chaque passage. Au départ, i vaut 0, puis 1, puis 2.
Vérifions cela, en demandant d'afficher la valeur de i dans la boucle :
Et une fois sorti de la boucle, est-ce que i vaut quelque chose ? Regardons !
Souvent une boucle va effectuer des opération en utilisant des variables qui ont déjà une valeur en dehors de cette boucle, et qui seront modifiées durant l'exécution de la boucle.
Voyons un exemple simple :
Avant le début de la boucle, a vaut 1.
Au premier passage dans la boucle, a=a+1 (donc a vaut 2) avant qu'on affiche sa valeur.
Au second passage dans la boucle, a=a+1 (donc a vaut 3) avant qu'on affiche sa valeur.
Au 3ème passage dans la boucle, a=a+1 (donc a vaut 4) avant qu'on affiche sa valeur.
A la sortie de la boucle a vaut toujours 4 (on ne l'a pas modifiée).
Attention ! |
Regardons ce code, très légèrement différent du précédent ;
Cette fois, on affiche la valeur de a AVANT de l'augmenter. Du coup, au 1er passage, a vaut 1 et on fait a=a+1 après le print.
Du coup, au 3ème passage on affichera a qui vaut 3 mais on ajoutera encore 1 avant de sortir de la boucle.
Les accumulateurs - La règle des 3I
Dans de nombreux cas, une boucle est accompagnée d'un accumulateur qui suit la règle des 3i.
L'accumulateur est la variable qui nous sert à calculer quelques chose. Par exemple, pour calculer la somme des entiers de 1 à 10, je défini une variable, que je peux appeler somme, qui à la fin de la boucle sera égale au résultat souhaité.
Pour faire cela je dois :
- Initialisation :Avant la boucle, je met somme à 0 ← choix de la valeur de départ
- Itération On va ajouter chaque entier en allant de 1 à 10← choix des bornes de la boucle de .. à ...
- Instructions : Dans la boucle, j'ajoute i à la somme : somme = somme + i← que doit on faire à chaque itération
L'initialisation n'est pas toujours mettre à 0. Par exemple, si je veux calculer le produit des entiers de 1 à 10:
- Initialisation : je vais initialiser une variable (cette fois ci, je l'appellerais produit mais ce n'est évidement pas obligé de la nommer ainsi...). produit = 1
- Itérations Les bornes seront bien les mêmes, je vais de 1 à 10
- Instructions dans la boucle calculera produit=produit*i.
Attention : l'initialisation est différente, on a initialisé à 1, pas à 0. Si j'initialise produit à 0, à la première itération je vais calculer 0*1 qui fait 0, puis à la 2eme 0*2 etc....
Ici la produit doit donc être initialisé à 1 (avant la boucle bien entendu) .
Regardez le code ci-dessous et essayez de prévoir le résultat, puis exécutez le.