Aller au contenu

Les conditions⚓︎

Une condition est une expression dont le résultat, True (vrai) ou False (faux), va généralement influencer l'exécution du programme. Parmi les conditions les plus courantes, on peut citer le test d'égalité qui détermine si deux valeurs sont égales.

Les conditions simples⚓︎

Pour déterminer si une variable longueur a pour valeur 42 on écrira l'expression longueur == 42 qui vaudra True en cas d'égalité et False lorsque longueur sera différente de 42. L'opérateur == permet de tester l'égalité entre la valeur de l'expression de gauche (la variable longueur) et l'expression de droite (l'entier 42).

Voici les différents opérateurs disponibles et leur signification :

  • == égalité. On écrira par exemple x == 5 pour déterminer si la valeur de x est égale à 5.
  • != différent. On écrira par exemple y != 1 pour déterminer si la valeur de y est différente de 1.
  • > supérieur strictement. On écrira par exemple a > 0 pour déterminer si la valeur de a est strictement supérieure à 0.
  • < inférieur strictement. On écrira par exemple b < 7 pour déterminer si la valeur de b est strictement inférieure à 7.
  • >= supérieur ou égal. On écrira par exemple c >= 4 pour déterminer si la valeur de c est supérieure ou égale à 4.
  • <= inférieur ou égal. On écrira par exemple d <= 3 pour déterminer si la valeur de d est inférieure ou égale à 3.

Voici quelques exemples de conditions⚓︎

Pour déterminer si une variable z n'est pas nulle, on écrira la condition z != 0.

Pour déterminer si un nombre entier n est pair, on écrira la condition n % 2 == 0. Le calcul de n % 2 donne le reste de la division de n par 2, qui vaut 0 lorsque n est un nombre pair (et 1 s'il est impair). On détermine par cette condition si ce reste est bien zéro.

Exercices⚓︎

On a affecté la valeur 15 à la variable x. Donnez les résultats, True ou False, de chaque condition.

  • x == 4
  • x > 20
  • x <= 15
  • x != 12
Réponses
  • x == 4 vaut False car 15 n'est pas égal à 4.
  • x > 20 vaut False car 15 n'est pas supérieur à 20.
  • x <= 15 vaut True car 15 est bien inférieur ou égal à 15.
  • x != 12 vaut True car 15 n'est pas égal à 12, 15 est différent de 12.

A-t-on 0.1 + 0.2 == 0.3 ?

Réponse

Non. Les nombres flottants utilisent une représentation en base 2. Ceci a deux conséquences : certains nombres décimaux ne peuvent pas être représentés exactement et cela entraîne des arrondis. Dans le cas présent 0.1 + 0.2 == 0.3 a pour valeur False. Il est donc fortement déconseillé de comparer des flottants.

Les comparaisons peuvent se faire entre deux chaînes de caractères comme entre les mots d'un dictionnaires. On a ainsi "cahier" < "livre" en ce sens ou le mot "cahier" apparaît avant le mot "livre" dans le dictionnaire. Pour comparer deux chaînes de caractères non vides, on commence par comparer leur première lettre. Si elles sont différentes, c'est la plus petite lettre, au sens de l'ordre alphabétique, qui détermine l'ordre lexicographique entre les deux chaînes. Et si elles sont identiques, alors on compare la lettre suivante de chaque mot, etc.

On a affecté la chaîne "crayon" à la variable outil. Donnez les résultats de chaque comparaison.

  • outil == "stylo"
  • outil <= "livre"
  • outil > "ardoise"
  • outil != "crayon"
Réponses
  • outil == "stylo" vaut False car "crayon" n'est pas égal à "stylo" (ils différent déjà par leur première lettre).
  • outil <= "livre" vaut True car "crayon" est avant "livre" dans le dictionnaire (les mots commençant par c sont avant ceux commençant par l).
  • outil > "ardoise" vaut True car "crayon" est après "ardoise" selon l'ordre lexicographique (les c sont après les a).
  • outil != "crayon" vaut False car ils s'écrivent de manière identique.

Note

Majuscules et minuscules doivent être considérées comme des caractères différents. Les majuscules sont avant les minuscules.

Opérateurs logiques⚓︎

On peut combiner plusieurs conditions grâce aux opérateurs logiques :

  • not de négation (non) qui transforme True en False et False en True.
  • and de conjonction (et) qui donne True seulement lorsque les deux conditions sont toutes les deux True.
  • or de disjonction (ou) qui donne True lorsqu'au moins une des deux conditions est True.

Illustration :

Pour déterminer si une chaîne de caractères prenom est égale à "Toto" ou "TOTO" on écrira prenom == "Toto" or prenom == "TOTO". Notez bien qu'il faut écrire ici deux comparaisons !

De la même façon, pour déterminer si un nombre x est compris entre 3 et 4 inclus, c'est à dire à la fois supérieur à 3 et inférieur à 4, on pourra écrire 3 <= x and x <= 4, même si on préférera généralement écrire l'encadrement 3 <= x <= 4 à la place.

Exercices⚓︎

On a affecté à x la valeur 7. Indiquez le résultat True ou False de chaque condition.

  • x == 5 or x == 3
  • x == -2 or x == 7
  • x == 4 and x == 1
  • x == 7 and x == 6
  • 5 <= x < 9
  • not -3 < x < 8
Réponses
  • x == 5 or x == 3 vaut False car les deux conditions combinées par or sont False.
  • x == -2 or x == 7 vaut True car les deux conditions combinées par or sont False et True (True l'emporte avec or).
  • x == 4 and x == 1 vaut False car les deux conditions combinées par and sont False.
  • x == 7 and x == 6 vaut True car les deux conditions combinées par and sont True et False (False l'emporte avec and).
  • 5 <= x < 9 vautt True car le nombre 7 est bien compris entre 5 et 9.
  • not -3 < x < 8 vaut False en raison du not qui inverse le résultat True de l'encadrement (7 est compris entre -3 et 8).