Structures conditionnelles
Une structure conditionnelle permet d’exécuter une séquence d’instructions seulement dans le cas où une condition est vraie (ou fausse).
Si par exemple, une variable est positive, deux textes sont identiques, un booléen est faux, …
Conditions
Une condition (ou prédicat) est une expression logique : le résultat de son évaluation est un booléen True
ou False
.
Comparaisons
Il est possible de comparer des nombres ou des textes avec les opérateurs de comparaison : ==
, !=
, <
, >
, <=
, >=
>>> 3 < 4 # inférieur strict True >>> 3 <= 4 # inférieur ou égal True >>> 4 > 4 # supérieur strict False >>> 4 >= 4 # supérieur ou égal True >>> 3 == 4 # test d’égalité - ATTENTION à ne pas confondre avec l'affectation = False >>> 3 != 4 # différent True >>> 3 < 4 < 5 # Combinaison de : 3 < 4 et 4 < 5 True
Fonctionne aussi pour les chaînes de caractères :
>>> "Ane" < "Cheval" True
Appartenance
On peut tester si un élément est dans une liste :
>>> 1 in [0, 1, 2, 3] True
ou bien si une chaîne de caractères est dans une autre :
>>> 'z' in 'azerty' True
et si un élément fait partie des clefs d’un dictionnaire :
>>> 'mère' in {'fils': 'Bart ', 'fille': 'Lisa ', 'mère': 'Marge ', 'père': 'Homer'} True
Opérateurs logiques
On combine les conditions avec des opérateurs logiques : and
, or
et not
.
>>> True or True ; True and False; not False True False True
Structures
if …
Si une condition est vraie, alors une séquence est exécutée :
a = 5 if a > 0: # Si a est supérieur à 0 print("a est supérieur à 0")
Remarques importantes :
Comme pour les fonctions et procédures,
- la ligne commençant par le mot clef if doit être terminée par un :
- les instructions à exécuter si la condition est vraie doivent être indentées.
Mais cette structure a des limites. Par exemple si l’on veut exécuter des instructions différentes dans le cas où a > 0
et a <= 0
, on pourrait écrire :
a = 5 if a > 0: # Si a est supérieur à 0 print("a est supérieur à 0") if a <= 0: # Si a est inférieur ou égal à 0 print("a est inférieur ou égal à 0")
Mais ce ne serait pas très judicieux, car il faudrait réaliser l’évaluation de 2 conditions … qui sont pourtant exclusives !
Voici une structure qui évite cela …
if … else …
Cette structure prévoit également une action en cas de condition fausse :
a = 5 if a > 0: # Si a est supérieur à 0 print("a est supérieur à 0") else: # Sinon print("a est inférieur ou égal à 0")
Là encore, il y a une limite, car on peut vouloir exécuter des instructions dans le cas précis où a est nul… d’où le besoin de la structure suivante …
if … elif … else …
a = 5 if a > 0: # Si a est supérieur à 0 print("a est supérieur à 0") elif a < 0: # Si a est inférieur à 0 print("a est inférieur à 0") else: # Sinon print("a est nul")
Ce qui est équivalent à :
a = 5 if a > 0: # Si a est supérieur à 0 print("a est supérieur à 0") elif a == 0: # Si a est égal à 0 print("a est nul") else: # Sinon print("a est inférieur à 0")
Utilisation d’opérateurs logiques
Si l’on souhaite tester si un nombre est dans un intervalle donné, on peut s’y prendre de différentes manières, toutes fonctionnelles, mais certaines plus simples que d’autres :
a = 5 if a >= 2: if a <= 8: print("a est dans l'intervalle [2,8]") else: print("a n'est pas dans l'intervalle [2,8]") else: print("a n'est pas dans l'intervalle [2,8]")
a = 5 if a >= 2 and a <= 8: print("a est dans l'intervalle [2,8]") else: print("a n'est pas dans l'intervalle [2,8]")
a = 5 if a < 2 or a > 8: print("a n'est pas dans l'intervalle [2,8]") else: print("a est dans l'intervalle [2,8]")
a = 5 if 2 <= a <= 8: print("a est dans l'intervalle [2,8]") else: print("a n'est pas dans l'intervalle [2,8]")
Exercices
Réaliser les exercices spécifiques aux structures conditionnelles …
source : https://openclassrooms.com/courses/apprenez-a-programmer-en-python/les-structures-conditionnelles