Vous êtes sur la page 1sur 17

Les structures conditionnelles et itératives

Objectifs

 Écrire une structure conditionnelle


 Utiliser les conditions pour réaliser des programmes avancés
 Écrire une structure répétitive
 Utiliser les structures répétitives pour simplifier des parties d'un programme
 Réaliser des programmes qui s'exécute en boucle
Introduction

Python exécute normalement les instructions de la première à la dernière ligne, sauf lorsqu'il
rencontre une instruction conditionnelle. Une telle instruction va permettre de faire une
action précise si, par exemple, une variable est positive, une autre action si cette variable est
négative, ou une troisième action si la variable est nulle.
Aussi un principe fondamental de la programmation est la factorisation du code. Factoriser un
code consiste à l'écrire une seule fois et à le réutiliser autant de fois que possible. Une structure
répétitive sert à répéter un certain nombre d'instructions d'un programme autant de fois que
nécessaire de façon automatique.
Cette leçon présente les structures conditionnelles et répétitives avec lesquelles l'apprenant
pourra réaliser des programmes complexes, simplifiés et qui s'exécutent autant de fois que
nécessaire.
I. Instructions conditionnelles

Objectifs
 Décrire la structure d'une instruction conditionnelle
 Identifier une indentation

1. Forme minimale "if"


Blocs d'instructions
On entend par bloc d'instructions une série d'instructions qui s'exécutent dans un cas précis.

if pour dire "si"


L'instruction if permet d'exécuter un bloc d'instruction si une condition est vraie. Si la
condition n'est pas vraie alors le bloc d'instruction n'est pas exécuté.

Sy nt ax e : python
1. >>>if condition :
2. [indentation] bloc d'instruction en python
La ligne 1 représente un test conditionnel. Il se compose de :
1. Le mot clé « if », en anglais qui signifie « si » en français
2. De la « condition », qui est un test généralement réalisé sur des variables.
3. Du signe deux points, « : », qui termine la condition et est indispensable ; son
omission entraîne l'affichage d'un message d'erreur.
La ligne 2, représente le bloc d'instruction qui sera exécuté si et seulement si la condition de
la ligne 1 est vraie. [Indentation]signifie que toutes les instructions contenues dans le bloc
d'instruction doivent être décalées vers la droite (soit par des espaces ou par une tabulation).
Atte nti on : indentation
En Python l'indentation est très importante car elle permet à l'interpréteur de savoir
où se trouve le début et la fin d'un bloc d'instruction.

2. Forme normale "if" et "else"


else pour dire "sinon"
L'instruction else permet d'exécuter un autre bloc d'instruction au cas où la condition qui suit
l'instruction if n'est pas vraie (la condition est fausse).

Sy nt ax e : python
1. >>>if condition :
2. [Indentation] bloc d'instruction 1
3. else :
4. [Indentation] bloc d'instruction 2
Si la condition de la ligne 1 est fausse alors le bloc d'instruction 1 n'est pas exécuté mais le
bloc d'instruction 2 est exécuté.

R e m arq ue
L'instruction if et l'instruction else sont au même niveau d'indentation.

3. Forme complète "if", "elif" et "else"


elif pour dire "sinon si"
La forme normale permet de tester seulement une condition et son contraire (c'est à dire
deux cas). Cependant il existe des situations où il faudrait traiter plus que deux cas. Par
exemple, pour vérifier la mention qu'un étudiant à obtenu à un examen, il existe quatre
mentions (passable, bien, très bien, honorable) ; dans ce cas il faudrait traiter quatre cas.
L'instruction elif se place toujours entre le if et le else, elle permet de tester des conditions
intermédiaire et elle peut se répéter autant de fois que possible dans un code.

Sy nt ax e
1. >>>if condition 0 :
2. [Indentation] bloc d'instruction 0
3. elif condition 1 :
4. [indentation] bloc d'instruction 1
5. elif condition 2 :
6. [indentation] bloc d'instruction 2
7. else :
8. [indentation] bloc d'instruction 3
Si aucune condition n (n appartient à [0, 2]) n'est vraie alors le bloc d'instruction 3 sera
exécuté. Sinon si une condition n est vraie alors seulement le bloc d'instruction n
correspondant sera exécuté.

R e m arq ue
l'instruction else ne peut figurer qu'une fois, clôturant le bloc de la condition. Deux instructions
else dans une même condition ne sont pas envisageables.
4. Exercice
[Solution n°1 p 15]
Quelle partie d'une instruction conditionnelle if doit être indentée ?
La première ligne

Toutes les lignes

Le bloc d'instruction qui est à l'intérieur du if

5. Exercice
[Solution n°2 p 15]
Agencez dans l'ordre les mots suivants pour que le code fonctionne correctement
1. condition:
2. if
3. [indentation]
4. else
5. bloc d'instruction pour condition vrai
6. [indentation] bloc d'instruction pour condition fausse
7. :
Réponse : ___ ___ ___ ___ ___ ___ ___

6. Exercice
[Solution n°3 p 15]
1. elif 1
2. else
3. elif 2
4. if
Réponse : ___ ___ ___ ___

II. Condition : prédicat ou prédicats


Objectifs
 Identifier les opérateurs de comparaison en Python
 Construire un programme avancé en utilisant les conditions

1. Opérateurs de comparaison

Opérateur Signification

< Strictement inférieur à

> Strictement supérieur à

<= Inférieur ou égal à

>= Supérieur ou égal à

== Égal à

!= Différent de
Les conditions introduisent ces opérateurs appelés opérateurs de comparaison

Atte nti on
Il existe une différence entre l'opérateur d'affectation "=" et l'opérateur d'égalité
"=="

2. Prédicat et booléens
Prédicat
Un prédicat est la condition qui est située après le "if" et les ":"lorsqu'on écrit une instruction
conditionnelle.

Rapport entre prédicat et booléen


Un prédicat fourni toujours en sortie une valeur booléenne ; c'est-à-dire soit True pour vrai
soit False pour faux. En fonction de la valeur retournée par un prédicat, un bloc d'instruction
peut être exécuté ou non.

Ex e m p le : Python 2 ou Python 3
>>>age = 25
>>>age > 12 -> cette instruction représente un prédicat
True -> valeur retournée par le prédicat
>>>age <25
False
>>>age == 25
True
R ap p e l : Les variables booléennes
True et False sont des valeurs ayant leur première lettre en majuscule. Écrire False sans
un 'F' majuscule ou True sans un 'T' majuscule va entraîner une erreur lors de
l'interprétation de l'instruction Python.

3. Imbrication de prédicat ou de condition


Imbrication
Une imbrication consiste à écrire une condition à l'intérieur d'une autre condition. Dans ce cas,
l'indentation permet de comprendre clairement le schéma d'exécution du programme

Ex e m p le : Python 2 ou Python 3
On voudrait vérifier si une variable age est comprise dans un intervalle afin de décider si un
individu est adolescent ou pas. On sait qu'un individu est adolescent si son age est compris
entre 14 et 21 ans

Exécution de conditions imbriquées


le prédicat 1 renvoie True, dans le bloc d'instruction qui est exécuté, on y voit le prédicat 2
qui renvoie aussi True. Le bloc d'instruction indenté est alors affiché à l'écran et le programme
s'arrête. On dit que l'instruction conditionnelle if age <= 21 est imbriquée à l'intérieur de
l'instruction if age >= 14.

4. prédicat(s)
Une condition peut contenir plusieurs prédicats. Dans ce cas ils sont associés par des
connecteurs. Dans certains cas, il est possible de transformer des conditions imbriquées en
une seule condition où les prédicats sont reliés par un ou des connecteurs. Le tableau suivant
montre les différents connecteurs
Connecteur Signification Valeur de retour

and et True and True = True


True and False = False

or ou True or False = True

not non not True = False


not False = True

Ex e m p le : reprise de l'exemple précédent

prédicats reliés par un connecteur


On a le prédicat 1 qui renvoie la valeur True et le prédicat 2 qui renvoie la valeur False. Or
True and False = False donc le bloc d'instruction exécuté est celui qui est contenu dans
l'instruction else.

C ons e il
En reliant les prédicats par le connecteur and, le code devient beaucoup plus court et surtout
il est lisible par rapport au code imbriqué qui est un peu moins lisible.

5. Exercice
[Solution n°4 p 15]
Les variables Python de type booléen peuvent prendre deux valeurs :
true and false

True and false

True and False

Vrai et Faux

6. Exercice
[Solution n°5 p 15]
Quelle est la valeur retournée par ce prédicat ?
>>>7 != 8
False

True

Ce prédicat entraînera une erreur


7. Exercice
[Solution n°6 p 16]
Donnez le résultat d'exécution de ce code ?
oeuf = 7
if oeuf > 5 :
[indentation] print("cinq")
if oeuf > 8 :
[indentation] print("huit")

8. Exercice
[Solution n°7 p 16]
Donnez le resultat d'exécution de ce code ?
numero = 7
if numero >3 :
[indentation] print("3")
[indentation] if numero < 5 :
[indentation][indentation] print("5")
[indentation][indentation] if numero == 7 :
[indentation][indentation][indentation] print("7")

9. Exercice
[Solution n°8 p 16]
Quel est le résultat d'exécution de ce code ?
age = 25
if age >= 25 or age/2 > 30 :
[indentation] print("Vrai")
else :
[indentation] print("Faux")

III. La structure while


Objectifs
 Décrire la syntaxe de l'instruction répétitive while
 Créer des programmes contenant des boucles
 Créer des programmes qui s'exécute en boucle sans s'arrêter
 Créer des programmes qui s’exécute en boucle avec une condition
d'arrêt

La structure while est utilisée pour faire des répétitions (boucles) sur une portion de code en
fonction de la valeur de retour d'un prédicat. Cette partie introduit la notion de boucle et
présente l'utilité de la structure while.

1. Forme de la structure while


Sy nt ax e : python 2 ou 3
while condition :
[indentation] bloc d'instruction

2. Boucle finie
Une structure while ("tant que" en Français) permet de répéter un bloc d'instruction tant
qu'une condition renvoie le booléen True. Si la condition renvoie le booléen False, alors
la répétition ou la boucle s'arrête et le bloc d'instruction n'est plus exécuté. On dit alors que
la boucle est finie. chaque répétition d'un bloc d'instruction est appelée une itération.

Ex e m p le : table de multiplication
Ce programme a pour but de réaliser la table de multiplication d'un nombre donné

table de multiplication de la variable nombre avec while


A la ligne 1, une variable est déclarée et initialisée en vue de réaliser sa table de multiplication,
il est aussi possible d'utiliser la fonction de lecture input pour recueillir la valeur de cette
variable.
Au niveau de la ligne 2, une variable compteur est initialisée à 0, elle va servir comme test
d'arrêt pour la boucle while.
A la ligne 3, une boucle démarre en vérifiant la valeur renvoyé par le prédicat compteur<=10
; pour la première itération, compteur vaut 0 alors le prédicat renvoie True car 0 <= 10.
La ligne 4 affiche la table de multiplication à l'écran et la ligne 5 augmente la valeur de la
variable compteur de 1.
L'instruction de la ligne 3 est ré-exécutée avec la nouvelle valeur de la variable compteur qui
vaut maintenant 1. Les lignes 3, 4 et 5 sont ré-exécutée jusqu'à ce que le prédicat
compteur<=10 renvoie la valeur False ; c'est à dire que compteur prennent la valeur 11.

3. Boucle infinie
Une boucle infinie est une structure répétitive dont la condition renvoie toujours la valeur True.

Ex e m p le : Python 2 ou 3
cette instruction affiche de façon continue l'instruction "ca marche"

boucle infinie

R e m arq ue : Arrêter une boucle infinie


Pour arrêter une boucle infinie dans un interpréteur interactif de python, il faudrait appuyer la
combinaison de touche ctrl+c

4. Arrêt instantané d'une boucle : break


l'instruction "break"
Il est possible d'arrêter une boucle infinie sans appuyer la combinaison de touche ctrl+c grâce
à l'instruction break. l'instruction break met fin immédiatement à une boucle lorsqu'elle est
exécutée

Ex e m p le : Python 2 ou 3

instruction break dans une boucle infini


Ce programme affiche "ca marche" a l'écran jusqu’à ce que la variable i soit égale à 6, ensuite
la boucle infinie qui renvoie toujours la valeur True est stoppé par l'instruction break.

R e m arq ue
L'utilisation de l'instruction break en dehors d'une structure répétitive entraîne une erreur.
5. L'instruction continue
continue est une instruction qui à l’intérieur d'une structure répétitive termine l'itération
courante et débute l'itération suivante.

Ex e m p le : python 2 ou 3

instruction continue dans une structure répétitive


Ce code affichera les valeurs de 1 à 10 sauf la valeur 5. Lorsque i prend la valeur 5 le prédicat
i==5 renvoie la valeur True, alors le bloc d'instruction qui contient l'instruction continue est
exécuté. Cependant l'instruction i=i+4 n'est pas exécutée car continue termine l'itération
courante et fait remonter l'exécution à la 1ère instruction de la boucle while qui est i=i+1, il
débute ainsi l'itération pour i=6.

R e m arq ue
L'utilisation de l'instruction continue en dehors d'une structure répétitive entraîne une erreur.

6. Exercice
[Solution n°9 p 16]
ce code exécute l'instruction print combien de fois ?
7. Exercice
[Solution n°10 p 16]
Complétez ce code afin de créer une boucle qui n' affiche que les valeurs paires
>>>x=0
>>> x<=20 :
[indentation] (x)
[indentation] x = x+

8. Exercice
[Solution n°11 p 17]
Quelles instruction termine instantanément une boucle?

9. Exercice
[Solution n°12 p 17]
Que fait ce programme ?

Il génère un message d'erreur

Il crée une boucle finie sans condition d'arrêt

Il crée une boucle infinie avec condition d'arrêt

Il crée une boucle infinie

IV. La structure for

Objectifs
 Décrire la syntaxe de l'instruction répétitive for
 Utiliser la structure for pour parcourir des séquences
 Créer des programmes simplifiés et moins complexe à lire
La structure for est utilisée pour parcourir des séquences. Une séquence est un ensemble
fini d'élément indexé de p à n-1 où p est le 1er élément et n le nème élément. Cette leçon
présente la structure répétitive for et son utilisation sur les séquences de nombre entier.

1. la fonction range
range
la fonction range est une fonction qui crée une séquence contenant des éléments entier d'un
intervalle donné en fonction des paramètres fournis à la fonction.

Ex e m p le
>>>range(10) -> contient tous les entiers de 0 inclus à 10 exclus ; i.e. [0,
10[ ou [0, 9]
>>>range(1, 11) -> contient tous les entiers de 1 inclus à 11 exclus ; i.e. [1,
11[ ou [1, 10]
>>>range(0, 10, 2) -> contient un ensemble d'entiers de 0 inclus à 10 exclus avec
un pas de 2 ; i.e. {0, 2, 4, 6, 8}

2. Forme de la boucle for


Sy nt ax e
>>>for element in sequence :
[indentation] bloc d'instruction
element est une variable que le programmeur appelle, mais la structure for se charge de la
créer et de lui affecter successivement chaque élément de la séquence. Ainsi le programmeur
n'a pas besoin de déclarer auparavant la variable element.
Le mot clé in permet de faire un test d'appartenance d'un élément à une séquence. Le test
d'appartenance renvoie la valeur True si l'élément est dans la séquence ou il renvoie la valeur
False si l'élément n'est pas dans la séquence. Il peut être utilisé ailleurs que dans une
structure for

Ex e m p le
Reprenons l'exemple de la table de multiplication d'un nombre donné

table de multiplication avec la boucle for


On remarque d'abord qu'il n'y a pas de déclaration et d'initialisation de la variable compteur.
Ensuite, il n'y a pas d'incrémentation de la variable compteur ; c'est-à-dire l'instruction
compteur=compteur+1 n'existe pas. Enfin le code avec la boucle for est beaucoup plus
court que celui avec la boucle while.
3. Recommandation
R e m arq ue : Imbrication
Il est possible de faire une imbrication de structures répétitives; i.e. qu'on peut écrire un while
à l'intérieur d'un while, un for à l'intérieur d'un for, un for à l'intérieur d'un while et vice-versa.

C ons e il
La boucle while est parfaitement adaptée pour : réaliser des boucles finies sur un bloc
d'instruction en fonction d'un prédicat bien défini, réaliser des programmes qui se répètent
jusqu’à ce que l'utilisateur décide d'y mettre fin, faire des programmes qui s'exécute sans fin.
La boucle for est beaucoup plus adaptée pour parcourir des séquences d'élément. Elle rend le
code moins surchargé et beaucoup plus lisible. Parcourir une séquence avec une boucle while
demande beaucoup de ligne de code.

4. Exercice
[Solution n°13 p 17]
Laquelle de ces structures est utilisée pour réaliser des itérations sur une séquence en python
foreach

fore

forever

for

whole

5. Exercice
[Solution n°14 p 17]
Complétez ce code afin de créer une boucle qui n' affiche que les valeur impaires de la
séquence.
for i in range( , 20, ):
[indentation] print( )

Conclusion

Cette leçon a présenté dans un premier temps la notion de structure conditionnelle qui permet
à l'apprenant de réaliser des programmes un peu plus complexe que ceux vu lors des deux
première leçon. Il pourra par exemple écrire un programme qui résout une équation de second
degré.
Dans un second temps, elle a présenté la notion de structure répétitive et leur utilité.
L'apprenant pourra s'aider de ces structures pour factoriser son code, créer des boucles ou
parcourir des séquences d'élément. La prochaine leçon s'intéressera à la factorisation de code
avec les fonctions.
Solution des exercices

> Solution n°1 (exercice p. 4)


Quelle partie d'une instruction conditionnelle if doit être indentée ?
La première ligne

Toutes les lignes

Le bloc d'instruction qui est à l'intérieur du if

> Solution n°2 (exercice p. 4)


Agencez dans l'ordre les mots suivants pour que le code fonctionne correctement
1. if
2. condition:
3. [indentation]
4. bloc d'instruction pour condition vrai
5. else
6. :
7. [indentation] bloc d'instruction pour condition fausse

> Solution n°3 (exercice p. 4)


1. if
2. elif 1
3. elif 2
4. else

> Solution n°4 (exercice p. 7)


Les variables Python de type booléen peuvent prendre deux valeurs :
true and false

True and false

True and False

Vrai et Faux

> Solution n°5 (exercice p. 7)


Quelle est la valeur retournée par ce prédicat ?
>>>7 != 8
False

True

Ce prédicat entraînera une erreur


> Solution n°6 (exercice p. 8)
Donnez le résultat d'exécution de ce code ?
oeuf = 7
if oeuf > 5 :
[indentation] print("cinq")
if oeuf > 8 :
[indentation] print("huit")
cinq

> Solution n°7 (exercice p. 8)


Donnez le resultat d'exécution de ce code ?
numero = 7
if numero >3 :
[indentation] print("3")
[indentation] if numero < 5 :
[indentation][indentation] print("5")
[indentation][indentation] if numero == 7 :
[indentation][indentation][indentation] print("7")
3
toutes les instructions en dessous de l'instruction if numero < 5 constitue un bloc
d'instruction. Donc elle s'exécute si et seulement l'instruction if numero < 5 vaut True.

> Solution n°8 (exercice p. 8)


Quel est le résultat d'exécution de ce code ?
age = 25
if age >= 25 or age/2 > 30 :
[indentation] print("Vrai")
else :
[indentation] print("Faux")
Vrai

> Solution n°9 (exercice p. 11)


ce code exécute l'instruction print combien de fois ?

> Solution n°10 (exercice p. 12)


Complétez ce code afin de créer une boucle qui n' affiche que les valeurs paires
>>>x=0
>>>while x<=20 :
[indentation] print(x)
[indentation] x = x+2

> Solution n°11 (exercice p. 12)


Quelles instruction termine instantanément une boucle?
break

> Solution n°12 (exercice p. 12)


Que fait ce programme ?

Il génère un message d'erreur

Il crée une boucle finie sans condition d'arrêt

Il crée une boucle infinie avec condition d'arrêt

Il crée une boucle infinie

> Solution n°13 (exercice p. 14)


Laquelle de ces structures est utilisée pour réaliser des itérations sur une séquence en python
foreach

fore

forever

for

whole

> Solution n°14 (exercice p. 14)


Complétez ce code afin de créer une boucle qui n' affiche que les valeur impaires de la
séquence.
for i in range(1, 20,2) :
[indentation] print(i)

Vous aimerez peut-être aussi