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]")
Exercice : thermostat

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.
Écrire un script permettant d’obtenir la valeur de la température mesurée (valeur saisie par l’utilisateur), puis d’afficher l’état C du dispositif de chauffage, selon cette valeur de température.

 

Connectique RPI

(nécessite la connaissance de la notions de fonction)

Écrire une fonction qui prend en argument trois nombres réels \(a\), \(b\), \(c\) et qui retourne les solutions réelles de l’équation \(ax^2 + bx + c = 0\) quand elles existent et affiche une phrase indiquant qu’il n’y a pas de solutions réelles quand c’est le cas (on n’oubliera pas d’importer la fonction sqrt() du module math).

 

Connectique RPI

(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

 

 

source : https://openclassrooms.com/courses/apprenez-a-programmer-en-python/les-structures-conditionnelles

 

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *