Instructions répétitives

  1. Ré-affectation

  2. Répétitions en boucle  : instruction while

Ré-affectation

Il est permis de ré-affecter une nouvelle valeur à une même variable autant de fois qu'on le souhaite.

L'effet d'une ré-affectation est de remplacer l'ancienne valeur d'une variable par une nouvelle.

>>> altitude = 320

>>> print(altitude)

320

>>> altitude = 375

>>> print(altitude)

375

Le symbole égale utilisé sous Python pour réaliser une affectation ne doit en aucun cas être confondu avec un symbole d'égalité tel qu'il est compris en mathématique.

Il est tentant d'interpréter l'instruction altitude = 320 comme une affirmation d'égalité, mais ce n'en est pas une !

L'égalité est commutative, alors que l'affectation ne l'est pas :

  • en mathématique :

  • en programmation : est illégal !

L'égalité est permanente, alors que l'affectation peut être remplacée comme nous venons de le voir.

Lorsqu'en mathématique, nous affirmons une égalité telle que au début d'un raisonnement, alors continue à être égal à durant tout le développement qui suit.

En programmation, une première instruction d'affectation peut rendre égales les valeurs de deux variables, et une instruction ultérieure en changer ensuite l'une ou l'autre.

>>> a = 5

>>> b = a # a et b contiennent des valeurs égales

>>> b = 2 # a et b sont maintenant différentes

Python permet d'affecter leurs valeurs à plusieurs variables simultanément :

>>> a, b, c, d = 3, 4, 5, 7

Cette fonctionnalité de Python est bien plus intéressante encore qu'elle n'en a l'air à première vue.

Supposons par exemple que nous voulions maintenant échanger les valeurs des variables a et c (actuellement, a contient la valeur 3, et c la valeur 5 ; nous voudrions que ce soit l'inverse).

Comment faire ?

Répétitions en boucle : instruction while

Boucle while

En Python, la structure algorithmique de répétition tant que... faire... s'écrit de la manière suivante :

while (<expression>) :

... instruction 1 ;

... instruction 2 ;

...

Tant que l'expression est vraie, le bloc d'instructions sera exécuté.

  • Parenthèses non obligatoires autour de l'expression.

  • Points virgules non obligatoires à la fin des instructions.

>>> a = 0

>>> while (a < 5): # (n'oubliez pas le double point !)

... a = a + 1 # (n'oubliez pas l'indentation !)

... print(a)

...

1

2

3

4

5

  • La variable évaluée dans la condition doit exister au préalable (il faut qu'on lui ait déjà affecté au moins une valeur).

  • Si la condition est fausse au départ, le corps de la boucle n'est jamais exécuté.

Boucle infinie

Si la condition reste toujours vraie, alors le corps de la boucle est répété indéfiniment (tout au moins tant que Python lui-même continue à fonctionner).

Il faut donc veiller à ce que le corps de la boucle contienne au moins une instruction qui change la valeur d'une variable intervenant dans la condition évaluée par while, de manière à ce que cette condition puisse devenir fausse et la boucle se terminer.

Boucle infinie (à éviter !)

>>> n = 3

>>> while n < 5:

... print("hello !")

...

Boucle for

En Python, la structure algorithmique de répétition pour... faire... s'écrit de la manière suivante :

for <variable> in <list> :

... instruction 1 ;

... instruction 2 ;

...

Le bloc d'instructions sera exécuté autant de fois qu'il y a d'éléments dans la liste.

La variable prendra successivement comme valeur les éléments de la liste.

La liste est un type spécial qui sera détaillé dans la section suivante et consiste à énumérer des valeurs.

Les éléments sont séparés par des virgules et encadrés par des crochets.

Boucles for

>>> for i in [1, 2, 3, 4] :

... print(i**2)

...

1

4

9

16

ou...

>>> for i in ['un', 'petit', 'exemple'] :

... print(i,len(i))

...

un 2

petit 5

exemple 7

Il est donc possible de travailler sur des séries numériques, mais également n'importe quel contenu d'une liste.

Fonction range()

La fonction range() permet de créer une énumération.

range(d,f,i) crée une liste allant de d jusqu'à f-1 avec un incrément de i : [d, d+i,d+2*i,...]. Le dernier élément est le dernier nombre tel que d+n*i<f-1

Si l'incrément i est omis, il est utilisé par défaut un incrément de 1.

Utilisée avec un seul élément, range(n) est équivalent à range(0,n) soit [0,1,2...., n-1].

Fonction range()

Avec 2 arguments

>>> for i in range(1,3) :

... print(i,2*i)

...

1 2

2 4

Avec un seul argument

>>> for i in range(3) :

... print(i,2*i)

...

0 0

1 2

2 4

En Python3, en interactif, range(n,m) n'est pas directement évalué, il faut utiliser list() pour récupérer les valeurs.

>>> range(3)

range(0,3)

>>> list(range(3))

[0,1,2]

range(0) donne la liste vide

>>> range(0)

[]

Si dans range(n,m) m est supérieur à n alors le résultat est également une liste vide.

>>> range(1,0)

[]

AccueilProgrammation en Python > Instructions répétitives< PrécédentSuivant >