Imbriquer des conditions
Souvent, nous allons vouloir comparer plusieurs valeurs au sein d’une même condition, c’est-à-dire n’exécuter son code que si plusieurs conditions sont vérifiées.
Pour faire cela, nous allons pouvoir soit utiliser plusieurs opérateurs de comparaison, soit les opérateurs logiques, soit imbriquer plusieurs conditions les unes dans les autres.
Les opérateurs logiques vont nous permettre de créer des conditions plus puissantes mais dans certains cas il sera plus intéressant et plus rapide d’imbriquer des conditions.
Dans cet exemple, on imbrique deux structures if…else
l’une dans l’autre. La première structure demande à Python de tester si notre variable x
contient un nombre strictement inférieur à 5. Si c’est le cas, on rentre dans le if
et on teste donc la condition du deuxième if
. Dans le cas contraire, on va directement au else
de fin.
Notre deuxième condition teste si y
contient une valeur strictement inférieure à 10. Si c’est le cas, on exécute le code dans la condition. Sinon, on va directement au else
de cette condition imbriquée.
Utiliser les opérateurs logiques avec les conditions
Les opérateurs logiques vont être principalement utilisés avec les conditions puisqu’ils vont nous permettre d’écrire plusieurs comparaisons au sein d’une même condition ou encore d’inverser la valeur logique d’un test.
Opérateur | Définition |
---|---|
and | Renvoie True si toutes les deux expressions sont évaluées à True |
or | Renvoie True si une des comparaisons vaut True |
not | Renvoie True si la comparaison vaut False (et inversement) |
Les opérateurs logiques and
et or
vont nous permettre de passer plusieurs tests pour évaluation à Python. On va par exemple pour tester si une variable x
contient une valeur inférieure à 5 et / ou si y
contient une valeur inférieure à 10 au sein d’une même condition.
Dans le cas où on utilise and
, chaque expression devra être évaluée à True
par Python pour que le code dans la condition soit exécuté.
Dans le cas où on utilise or
, il suffit qu’une expression soit évaluée à True
par Python pour que le code dans la condition soit exécuté.
Ici, vous pouvez noter que Python a l’inverse de la plupart des autres langages possède une syntaxe très logique et très intuitive qui va nous permettre d’effectuer plusieurs tests dans une condition “comme si” on utilisait un opérateur logique and
en utilisant tout simplement plusieurs opérateurs de comparaison à la suite.
Je vous recommande cependant plutôt d’utiliser des opérateurs logiques dans cette situation afin de rendre votre code plus clair.
Finalement, l’opérateur logique not
est très particulier puisqu’il nous permet d’inverser la valeur logique d’un test : si Python renvoie False
à l’issue d’une évaluation par exemple et qu’on utilise l’opérateur not
sur cette expression l’opérateur inversera la valeur renvoyée par Python et la valeur finale passée à la condition sera True
.
Présentation des opérateurs d’appartenance ou d’adhésion
Python met à notre disposition deux opérateurs d’appartenant qui vont nous permettre de tester si une certaine séquence de caractères ou de valeurs est présente ou pas dans une valeur d’origine.
Ces opérateurs ne vont fonctionner qu’avec des séquences (chaines de caractères, listes, etc.) et ne vont donc pas marcher avec des valeurs de type numérique par exemple.
L’opérateur in
permet de tester si une certaine séquence de caractères ou de valeurs est présente dans une valeur d’origine et renvoie True
si c’est le cas.
L’opérateur not in
permet au contraire de tester si une certaine séquence de caractères ou de valeurs n’est pas présente dans une valeur d’origine et renvoie True
si c’est le cas.
Comme des valeurs booléennes sont renvoyées, on va tout à fait pouvoir utiliser ce type d’opérateurs au sein de nos conditions même si ils sont communément plus utilisés au sein de boucles qu’on étudiera dans la prochaine leçon.
Un point sur l’ordre de priorité des opérateurs
Dans les exemples précédents, nous avons utilisé plusieurs opérateurs différents dans nos conditions : des opérateurs de comparaisons divers, des opérateurs logiques, etc.
Rien ne nous empêche à priori de rajouter des opérateurs arithmétiques et d’utiliser plusieurs opérateurs logiques dans ces mêmes conditions.
A partir de là, cependant, il faut commencer à être très rigoureux pour obtenir des résultats conformes à nos attentes et il va notamment falloir bien connaitre l’ordre de priorité d’application des différents opérateurs en Python.
Ci-dessous, vous pourrez trouver l’ordre de traitement de chaque opérateur Python (classés du plus prioritaire au moins prioritaire). Certains nous sont encore inconnus, je vous demande de ne pas vous en préoccuper pour le moment.
Opérateur | Description |
---|---|
() |
Opérateur de groupement |
** |
Elévation à la puissance |
~ |
Opérateur d’inversion de bit |
* , / , % |
Opérateurs arithmétiques multiplication, division et modulo |
<< , >> |
Décalage de bits à gauche ou à droite |
& |
Définit chaque bit à 1 si les deux bits valent 1 |
^ |
Définit chaque bit à 1 si seulement l’un des deux bits vaut 1 |
| |
Définit chaque bit à 1 si au moins l’un des deux bits vaut 1 |
== , != , < , <= , > , >= , in , not in , is , is not |
Opérateurs de comparaison, d’appartenance et d’identité |
not |
Opérateur logique (booléen) inverse ou “non” |
and |
Opérateur logique (booléen) “et” |
or |
Opérateur logique (booléen) “ou” |