Il existe différents types de structures de contrôle. Les deux types de structures les plus communément utilisées sont les structures de contrôle conditionnelles qui permettent d’exécuter un bloc de code si une certaine condition est vérifiée et les structures de contrôle de boucle qui permettent d’exécuter un bloc de code en boucle tant qu’une condition est vérifiée.
Présentation des conditions Python
Les structures de contrôle conditionnelles (ou plus simplement conditions) vont nous permettre d’exécuter différents blocs de code selon qu’une condition spécifique soit vérifiée ou pas.
Nous allons très souvent utiliser les conditions avec des variables : selon la valeur stockée dans une variable, nous allons vouloir exécuter un bloc de code plutôt qu’un autre.
Python nous fournit les structures conditionnelles suivantes :
- La condition
if
(“si”) ; - La condition
if…else
(“si…sinon”) ; - La condition
if…elif…else
(“si…sinon si… sinon”) .
Nous allons étudier et comprendre l’intérêt de chacune de ces conditions dans la suite de cette leçon. Avant de les étudier, cependant, nous allons devoir présenter un nouveau type d’opérateurs : les opérateurs de comparaison qui vont être au centre de nos conditions.
Les opérateurs de comparaison
Comme je l’ai précisé plus haut, nous allons souvent construire nos conditions autour de variables : selon la valeur d’une variable, nous allons exécuter tel bloc de code ou pas.
Pour pouvoir faire cela, nous allons comparer la valeur d’une variable à une certaine autre valeur donnée et selon le résultat de la comparaison exécuter un bloc de code ou pas. Pour comparer des valeurs, nous allons devoir utiliser des opérateurs de comparaison.
Voici ci-dessous les différents opérateurs de comparaison disponibles en Python ainsi que leur signification :
Opérateur | Définition |
---|---|
== | Permet de tester l’égalité en valeur et en type |
!= | Permet de tester la différence en valeur ou en type |
< | Permet de tester si une valeur est strictement inférieure à une autre |
> | Permet de tester si une valeur est strictement supérieure à une autre |
<= | Permet de tester si une valeur est inférieure ou égale à une autre |
>= | Permet de tester si une valeur est supérieure ou égale à une autre |
Notez bien ici que ces opérateurs ne servent pas à indiquer à Python que telle valeur est supérieure, égale, inférieur ou différente à telle autre valeur. Lorsqu’on utilise un opérateur de comparaison, on demande au contraire à Python de tester si telle valeur est supérieure, égale, inférieur ou différente à telle autre valeur. Python va donc comparer les deux valeurs et toujours renvoyer un booléen : True
si la comparaison est vérifiée ou False
dans le cas contraire.
Notez également que les opérateurs de comparaison d’égalité et de différence testent l’égalité et la différence à la fois sur les valeurs et sur les types. Ainsi, si on demande à Python de tester l’égalité entre la chaine de caractères “4” et le chiffre 4, celui-ci renverra False
puisque pour lui ces deux valeurs ne sont pas égales.
Regardez plutôt les exemples suivants pour vous en persuader :
Vous pouvez retenir ici que c’est cette valeur booléenne renvoyée par le Python à l’issue de toute comparaison que nous allons utiliser pour faire fonctionner nos conditions.
La condition if en Python
La structure conditionnelle if
est une structure de base qu’on retourne dans de nombreux langages de script. Cette condition va nous permettre d’exécuter un code si (et seulement si) une certaine condition est vérifiée.
On va en fait passer une expression à cette condition qui va être évaluée par Python. Cette expression sera souvent une comparaison explicite (une comparaison utilisant les opérateurs de comparaison) mais pas nécessairement.
Si Python évalue l’expression passée à True
, le code dans la condition if
sera exécuté. Dans le cas contraire, le code dans if
sera ignoré.
Prenons immédiatement un premier exemple afin de nous familiariser avec le fonctionnement et la syntaxe de cette condition :
Nous créons ici deux conditions if
. Comme vous pouvez le voir, la syntaxe générale d’une condition if
est if condition : code à exécuter
. Pensez bien à indiquer le :
et à bien indenter le code qui doit être exécuté si la condition est vérifiée sinon votre condition ne fonctionnera pas.
Dans le premier if
, nous demandons à Python dévaluer la comparaison x > y
. Comme notre variable x
stocke 8 et que notre variable y
stocke 4, Python valide cette comparaison et renvoie True
. La condition if
reçoit True
et le code qu’elle contient est exécuté.
Dans notre deuxième if
, on demande cette fois-ci à Python de nous dire si le contenu de x
est égal au chiffre 5. Ce n’est pas le cas et donc Python renvoie False
et le code dans ce if
n’est donc pas exécuté.
Au final, vous pouvez retenir que toute expression qui suit un if
va être évaluée par Python et que Python renverra toujours soit True
, soit False
. Nous n’avons donc pas nécessairement besoin d’une comparaison explicite pour faire fonctionner un if
.
Pour comprendre cela vous devez savoir qu’en dehors des comparaisons Python évaluera à True
toute valeur passée après if
à l’exception des valeurs suivantes qui seront évaluées à False
:
- La valeur
0
(et0.0
) ; - La valeur
None
; - Les valeurs chaine de caractères vide
””
, liste vide[]
, dictionnaire vide{}
et tuile vide()
.
La condition if… else en Python
Avec la condition if
, nous restons relativement limités puisque cette condition nous permet seulement d’exécuter un bloc de code si que le résultat d’un test soit évalué à True
.
La structure conditionnelle if…else
(« si… sinon » en français) est plus complète que la condition if
puisqu’elle nous permet d’exécuter un premier bloc de code si un test renvoie True
ou un autre bloc de code dans le cas contraire.
La syntaxe d’une condition if…else
va être la suivante :
Ici, on demande dans notre première condition à Python d’évaluer si la valeur de x
est différente du chiffre 5 ou pas. Si c’est le cas, Python renverra True
(puisqu’on lui demande ici de tester la différence et non pas l’égalité) et le code du if
sera exécuté. Dans le cas contraire, c’est le code du else
qui sera exécuté.
Notre deuxième condition fait exactement le même travail mais cette fois si on compare la valeur de y
à 5.
Notez bien ici qu’on n’effectuera jamais de test dans un else
car le else
est par définition censé prendre en charge tous les cas non pris en charge par le if
.
La condition if… elif… else en Python
La condition if…elif…else
(« si…sinon si…sinon ») est une structure conditionnelle encore plus complète que la condition if…else
qui vannons permettre cette fois-ci d’effectuer autant de tests que l’on souhaite et ainsi de prendre en compte le nombre de cas souhaité.
En effet, nous allons pouvoir ajouter autant de elif
que l’on souhaite entre le if
de départ et le else
de fin et chaque elif
va pouvoir posséder son propre test ce qui va nous permettre d’apporter des réponses très précises à différentes situations.
Il faut cependant faire attention à un point en particulier lorsqu’on utilise une structure Python if… elif… else
: le cas où plusieurs elif
possèdent un test évalué à True
par Python. Dans ce cas là, vous devez savoir que seul le code du premier elif
(ou du if
si celui-ci est évalué à True
) va être exécuté. En effet, Python sort de la structure conditionnelle dans son ensemble sans même lire ni tester la fin de celle-ci dès qu’un cas de réussite à été rencontré et que son code a été exécuté.