Structures conditionnelles
Une structure conditionnelle permet d’exécuter une séquence d’instructions seulement dans le cas où une condition est vraie.
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 …
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 …
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]")
Un thermostat permet de maintenir à température relativement constante une enceinte.
- L’utilisateur fixe une consigne de température Tc = 21 °C.
- Lorsque la température passe en dessous de cette consigne moins un écart constant de valeur dT = 1.5 °C, un dispositif de chauffage se met en marche : C = True.
- Lorsque la température passe au dessus de cette consigne plus l’écart constant de valeur dT, le dispositif de chauffage s’arrête : C = False.
(nécessite la connaissance de la notions de fonction)
sqrt()
du module math
)
(nécessite la connaissance des notions de fonction et de dictionnaire)
Soient deux dictionnaires, de la forme : d1 = {'a' : 15, 'b' : 9, 'c' : -12, 'd' : 2} et d2 = {'b' : 5, 'c' : 3, 'd' : 1, 'e' : -6}
Écrire une fonction qui accepte comme arguments deux dictionnaires et une « clef » et qui renvoie :
- si la clef est dans les deux dictionnaires, la somme des valeurs qui sont associées à cette clef ;
- si la clef est dans un seul dictionnaire, la valeur associée ;
- sinon, la valeur 0 .
Exercices
Réaliser les exercices spécifiques aux structures conditionnelles …
Dépôt de fichier réponse
source : https://openclassrooms.com/courses/apprenez-a-programmer-en-python/les-structures-conditionnelles