3. Les conditions et les booléens (langage Python)

Sommaire

  1. L’instruction if
  2. Les opérateurs de comparaison
  3. Les expressions conditionnelles
  4. Les booléens

Introduction

Dans un programme écrit en langage Python, les instructions s’exécutent les unes après les autres. Par exemple, dans le code ci-dessous, je commence par déclarer une variable numb à laquelle j’affecte le nombre entier 5. Je fais appel à la fonction print() qui m’affiche 5 puis à la ligne suivante, je modifie ma variable numb avant de refaire un print(). Je déclare une variable numb2 à laquelle j’affecte deux fois la valeur de numb. Enfin, je fais appel aux méthodes print() et f-string. Celle-ci me permet d’intégrer directement dans la chaîne de caractères, le contenu des variables placées entre les accolades (voir chapitre précédent). Les instructions s’exécutent les unes après l’autres. Vous pouvez cliquer sur l’image ci-dessous pour l’agrandir.

1. L’instruction if

Cela dit, il est parfois nécessaire d’orienter le programme en fonction des données qu’un utilisateur va renseigner. Et c’est là que les conditions entrent en jeu. Prenons un exemple avec la fonction input(). Cette fonction met le programme en attente jusqu’à ce que l’utilisateur renseigne le champ d’entrée. C’est le cas dans le programme ci-dessous. Je demande à l’utilisateur de renseigner son âge. Selon sa réponse, l’une des quatre conditions va s’afficher.

Ouvrez un nouveau fichier avec votre éditeur de texte et copier-coller le code ci-dessous.

#!/usr/bin/env python3
# -*- coding: utf8 -*-

age = int(input("Veuillez entrer votre âge : "))
if age > 0 and age < 20:
    print("Tu es jeune!")
elif age > 20 and age < 60:
    print("Vous êtes un adulte.")
elif age > 60: 
    print("Vous avez acquis une certaine expérience de la vie.")
else:
    print("Âge négatif! Vous n'êtes pas encore né!")


Enregistrez le fichier sous le nom de condition.py. Placez le par exemple dans votre répertoire personnel /home/$USER et rendez-le exécutable en entrant dans un terminal :

chmod +x ./condition.py

Puis, lancez le programme :

./condition.py

Décomposons le code:

La première ligne de code fait appel à la fonction input() qui va enregistrer le nombre que l’utilisateur va entrer. Ce nombre est une chaîne de caractères immédiatement convertie en nombre entier grâce à la fonction int().

Pour écrire une condition, il faut utiliser le mot-clé if (si en français) suivi d’un bloc d’instructions indenté. C’est obligatoire en Python! Qu’est-ce donc que l’indentation? C’est le décalage de quatre espaces qui précède le bloc d’instructions. Je vous déconseille d’utiliser les tabulations pour effectuer le décalage. Utilisez plutôt quatre espaces. Vous pouvez configurer votre éditeur de texte de telle sorte que la touche →| créé un décalage de quatre espaces au lieu d’une tabulation. Surtout, ne mélangez pas les tabulations et les décalages de quatre espaces sous peine de voir Python vous lever une exception. Votre code ne sera pas exécuté.

Si le premier if ne s’exécute pas, c’est la deuxième condition ou la troisième condition qui entre en action grâce au mot-clé elif. elif est la contraction de else if. Cela signifie sinon si.

Enfin, si aucune condition ne s’applique à la valeur entrée par l’utilisateur, c’est la dernière condition qui entre en action: else signifie sinon.

Si vous entrez 44, c’est la deuxième condition qui va s’exécuter. Si vous entrez 18, c’est la première.

2. Les opérateurs de comparaison

Vous allez également très souvent utiliser les opérateurs de comparaison suivants. Notez que le signe d’égalité est == et non pas =. Un simple égal signifie qu’on affecte une valeur à une variable.

x == y x est égal à y
x != y x est différent de y
x > y x est supérieur à y
x < y x est inférieur à y
x >= y x est supérieur ou égal à y
x <= y x est inférieur ou égal à y

3. Les expressions conditionnelles

Il existe une autre façon plus compacte d’écrire une condition. Dans certains cas, il est possible d’utiliser une expression conditionnelle qui se résume à une seule ligne d’instructions. Voici un exemple avec ce petit bout de code :

numb = int(input())
numb2 = 10
numb3 = numb * numb2 if numb < numb2 else numb + numb2
print(numb3)

Selon le nombre que vous allez renseigner à la première ligne, si celui-ci est inférieur à 10, alors il sera multiplié par 10, sinon il sera additionné à 10. Essayez par exemple avec 6, vous allez obtenir 60, alors qu’avec 12, vous allez obtenir 22.

4. Les booléens

Maintenant, intéressons-nous aux booléens. Les booléens sont des êtres farouches qui vivent au fin fond des forêts binaires recouvrant la terre sacrée du Grand Python Digital. Très difficiles à observer dans leur milieu naturel, bla, bla, bla… Bon en fait, il s’agit d’une notion de programmation un peu déroutante que j’avais du mal à conceptualiser au début de mon apprentissage du Python. Figurez-vous que celui qui a inventé l’algèbre booléenne s’appelle George Boole. Ce sujet anglais est né en 1815 et vous ne serez pas étonné d’apprendre qu’il est mort. C’est une pneumonie qui l’a emporté à l’âge de 49 ans. Il est donc le père de l’algèbre de Boole que je suis bien incapable de vous expliquer. Mais je peux quand-même vous parler des booléens dans mon langage de programmation préféré.

4.1. Définition

En Python, un booléen est un type de variables qui possède deux états :

  • L’état « vrai » : True en anglais
  • Ou bien l’état « faux » : False en anglais

False == 0 et True == 1. Comment le prouver? C’est très simple.

print(3 + True)
4

print(0 ** False)
1

Le résultat de la deuxième opération est particulièrement déroutant mais il est correct. En fait, j’ai calculé 0 élevé à la puissance 0… Et ce résultat donne bien 1. Vous pouvez essayer avec une calculatrice.

4.2. Évaluation d’une expression

nombre1 = 5
nombre2 = 8
result = (nombre1 < nombre2)
print(result)
True

La variable result évalue si l’expression (nombre_1 < nombre_2) est vraie ou fausse. Il se trouve qu’elle est vraie puisque 5 est inférieur à 8. Donc le résultat est True.

4.3. Le type bool()

Dans l’exemple ci-dessous, Les variables faux et vrai sont de types bool() car elles stockent les valeurs False et True.

faux = False
vrai = True
print (type(faux))
print(type(vrai))
<class 'bool'>

 Si on déclare une variable de cette manière : var = bool(), alors var stockera la valeur False.

var = bool()
print(var)
False

4.4. Les conditions sont sous l’emprise des booléens

Lorsque Python évalue une condition, soit le résultat est False (== 0), soit il est True (== 1). C’est comme cela qu’un ordinateur pense… uniquement avec des zéros et des uns!

prenom = "Marie"
nombreDeLettres = len(prenom)
if nombreDeLettres < 6:
    print("Votre prénom compte moins de six lettres.")
else:
    print("Votre prénom compte six lettres ou plus.")

Qu’est ce qui s’est passé dans la tête de l’ordinateur? Il a évalué la condition. Est-ce que la variable nombreDeLettres est inférieure à 6 ? Oui, c’est vrai. Donc la condition vaut 1 car elle est True). Remplacez « Marie » par « Stanislas » par exemple et vous verrez que la condition vaudra 0. Elle sera False. Par conséquent, c’est le deuxième message qui s’affichera.

Pour finir de vous convaincre, je vais de nouveau utiliser une expression conditionnelle avec la même variable, et cette fois-ci, c’est vous qui allez me donner votre prénom! Si vous vous appelez « Maxence », il y a de fortes chances pour que le résultat soit False.

nombreDeLettres = len(input())
result = (nombreDeLettres < 6)
print(result)

À l’instar d’autres langages de programmation tels que le « C » par exemple, Python considère que toute valeur autre que 0 est vraie (True). Seule la valeur 0 est fausse (False).

  • Le nombre entier 0 est False tandis que les nombres entiers 6 et -6 sont True.
  • Une chaîne de caractères vide est False, une liste vide aussi.
  • Une chaîne de caractères avec au moins un élément est True, une liste avec au moins un élément est True aussi.
chain_car = ""
if chain_car:
    print("vrai")
else:
    print("faux")
faux
chain_car2 = "Boole"
if chain_car2:
    print("vrai")
else:
    print("faux")
vrai
liste = []
if liste:
    print("vrai")
else:
    print("faux")
faux
liste2 = ["George", "Boole"]
if liste2:
    print("vrai")
else:
    print("faux")
vrai

L’instruction else

Dans une condition, le code indenté qui suit l’instruction else s’exécute lorsque l’évaluation est False (ou les évaluations précédentes sont toutes False). L’instruction else exécute un code dont le résultat est False.

L’instruction elif 

Le code indenté qui suit l’instruction elif s’exécute lorsque les tests précédents if et elif sont déclarés False. Mais contrairement à else, l’instruction elif exécute un code qui est True.

a = 5
if a == 6: # False
    print("C'est vrai")
elif a == 7: # False
    print("C'est vrai")
elif a == 5: # True
    print("C'est vrai")
else: # False
    print("C'est faux")

L’instruction not

En Python, l’instruction not transforme False(0) en True(1) et True(1) en False(0).

not
a = 5
a = not a
print(not a)
False

L’instruction and

L’expression a and b est vraie si a et b sont vrais tous les deux. Elle est fausse si a ou b est faux ou si a et b sont faux tous les deux.

and
a, b = 5, 13
if a == 5 and b == 13:
    print("C'est vrai.")
else:
    print("C'est faux.")

L’instruction or

L’expression a or b est vraie si au moins l’une des deux variables est vraie. Elle est fausse si les deux variables sont fausses.

or
a, b = 5, 13
if a == 5 or b == 18:
    print("C'est vrai.")
else:
    print("C'est faux.")

Conclusion

Les booléens sont au coeur de la conscience-machine. Un ordinateur ne comprend que le langage binaire. C’est la raison pour laquelle il évalue la fausseté ou la véracité d’une expression uniquement en utilisant le 0 et le 1. Nous allons retrouver les booléens au prochain chapitre.

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s