Créer des conditions Python complexes

Dans cette nouvelle leçon, nous allons aller plus loin avec les conditions Python est voir comment créer des conditions complexes en utilisant notamment les opérateurs logiques et les opérations d’appartenance.

 

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.

Imbrication de conditions Python

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é.

Utilisation de l'opérateur logique and avec les conditions Python

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é.

Utilisation de l'opérateur logique or avec les conditions Python

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.

Utilisation de l'opérateur logique not avec les conditions Python

 

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.

Python opérateur membership appartenance in

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.

Python opérateur membership appartenance not in

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”

Laisser un commentaire

© Pierre Giraud - Toute reproduction interdite - Mentions légales