Aller au contenu

IV) Booléens, logique et instructions conditionnelles

1) Les expressions et les booléens


Si quelqu'un vous dit que "4 est égal à 5", vous lui répondez quoi ? "c'est faux". Si maintenant la même personne vous dit que "7 est égal à 7", vous lui répondrez bien évidemment que "c'est vrai".

En Python, ces deux "affirmations" ("4 est égal à 5" et "7 est égal à 7") s'écriront 4 == 5 et 7 == 7 (notez bien le double signe égal).

4 == 5 est appelé une expression, une expression est soit vraie (True comme 7 == 7), soit fausse (False comme 4 == 5).

Pour l'instant nous avons vu deux grands types de données : les nombres (entier ou flottant) et les chaînes de caractères, il existe un troisième type tout aussi important que les deux premiers : les booléens. Un booléen est un type de données qui ne peut prendre que deux valeurs : vrai (True) ou faux (False).

Une expression est soit True, soit False.

ATTENTION : notez le double égal "==" qui permet de distinguer une expression et une affectation (association d'une valeur à un nom (variable)). Le fait de confondre le "simple égal" et le "double égal" est une erreur classique qu'il faut éviter.

Il est possible d'utiliser des variables dans une expression, par exemple avec :

a = 5
b = 7
on aura a == b qui sera False.

  • A la place de l'opérateur "==" il est possible d'utiliser l'opérateur "!=" qui signifie "différent de".

  • Par exemple "7 != 7" est False alors que 5 != 4 est True.

  • Pour résumer :

Opérateurs Symboles Exemples Résultat
égal == 3 == 5 False
différent != 3 != 5 True
strictement inférieur à < 5 < 7 True
inférieur ou égal à <= 5 <= 7 True
strictement supérieur à > 9 > 9 False
supérieur ou égal à >= 9 >= 9 True

2) Les opérateurs "or", le "and" et le "not"


Il est aussi de combiner plusieurs expressions grâce aux opérateurs logiques or et and. Une combinaison d'expression est aussi une expression (une combinaison d'expression est donc aussi soit True soit False).

Opérateurs mots-clés Exemple Résultats
Et logique and (2 < 3) and (5 <7 ) True
Ou logique or (2 == 3) or (5 <7 ) True
Non logique not not (5 <7 ) False
  • Il est aussi de combiner plusieurs expressions grâce aux opérateurs logiques or et and. Une combinaison d'expression est aussi une expression (une combinaison d'expression est donc aussi soit True soit False)

  • Par exemple si nous avons 2 expressions exp1 et exp2 il est possible de les combiner à l'aide de l'opérateur logique or : exp1 or exp2 est False uniquement si exp1 et exp2 sont False, elle est True dans tous les autres cas.

Les résultats peuvent être regroupés dans ce que l'on appelle une table de vérité :

  • Table de vérité pour le or
exp1 exp2 exp1 or exp2
True True True
True False True
False True True
False False False
  • Table de vérité pour le and
exp1 exp2 exp1 and exp2
True True True
True False False
False True False
False False False

On trouve aussi le not comme opérateur logique avec la table de vérité suivante :

exp not (exp)
True False
False True

3) Les instructions conditionnelles


Nous allons maintenant étudier une structure fondamentale en programmation le " si ...... alors.......sinon........".

L'idée de base est la suivante :

1
2
3
4
si expression:
    suite_instruction1
sinon:
    suite_instruction2
Si expression est True alors suite_instruction1 est exécuté et suite_instruction2 est ignoré.

Sinon (sous-entendu que expression est False), suite_instruction2 est exécuté et suite_instruction1 est ignoré.

Notez l'indentation suite_instruction1 et de suite_instruction2.

Si on considère le programme suivant :

1
2
3
4
5
6
7
8
9
a = 4
b = 7
if a < b:
    print("Je suis toto.");
    print("Je n'aime pas titi.")
else:
    print("Je suis titi.")
    print("Je n'aime pas toto.")
print("En revanche, j'aime le Python.")
nous avons a < b qui est True, nous allons donc exécuter les 2 lignes

print("Je suis toto.");
print("Je n'aime pas titi.")
Alors, les lignes

print("Je suis titi.")
print("Je n'aime pas toto.")
seront ignorées.

En revanche la ligne linenums="0"

print("En revanche, j'aime le Python.")
sera systématiquement exécutée.

L'exécution de ce programme permettra d'afficher à l'écran :

Je suis toto.
Je n'aime pas titi.
En revanche, j'aime le Python.

Si maintenant on considère ce programme :

1
2
3
4
5
6
7
8
9
a = 8
b = 7
if a < b:
    print("Je suis toto.");
    print("Je n'aime pas titi.")
else:
    print("Je suis titi.")
    print("Je n'aime pas toto.")
print("En revanche, j'aime le Python.")
L'exécution de ce programme entraînera l'affichage suivant :

Je suis titi.
Je n'aime pas toto.
En revanche, j'aime le Python.

4) La boucle while


La notion de boucle est fondamentale en informatique. Une boucle permet d'exécuter plusieurs fois des instructions qui ne sont présentes qu'une seule fois dans le code.

La structure de la boucle while est la suivante :

1
2
3
4
while expression:
    instruction1
    instruction2
suite programme
Tant que expression sera True, on exécutera encore et encore instruction1 et instruction2. Après chaque exécution de instruction1 et instruction2 (on dit souvent "après chaque tour de boucle"), expression sera de nouveau évaluée (pour savoir si elle est toujours True ou si elle est devenue False).

Quand expression deviendra False on passera directement à suite programme (sans entrer de nouveau dans la boucle), la boucle sera terminée.

Que se passe-t-il si expression ne devient jamais False ? On entre alors dans une boucle "infinie" : c'est une erreur classique en programmation (aucun programme "bien fait" ne tombe dans une boucle infinie, s'il y a une boucle infinie, c'est qu'il y a forcement une erreur dans votre programme).

Considérons le programme suivant :

1
2
3
4
5
i = 0
while i < 3  :
    print(i)
    i = i + 1
print("FIN")
Voici comment analyser ce programme :

  • Au début de l'exécution de ce programme nous avons la variable i qui a pour valeur 0.

  • Nous arrivons ensuite au niveau du while : l'expression i < 3 est True, on "entre" donc dans la boucle : on affiche la valeur de i,donc 0, et on incrémente i de 1 (i a maintenant pour valeur 1)

  • Nous passons au 2e tour de boucle : l'expression i < 3 est True, on "entre" donc dans la boucle : on affiche la valeur de i, donc 1, et on incrémente i de 1 (i a maintenant pour valeur 2).

  • Nous passons au 3e tour de boucle : l'expression i < 3 est True, on "entre" donc dans la boucle : on affiche la valeur de i, donc 2 et on incrémente i de 1 (i a maintenant pour valeur 3).

  • Nous passons au 4e tour de boucle : l'expression i < 3 est False (3 n'est pas strictement inférieur à 3), on n'entre pas dans la boucle et on passe à l'instruction qui suit immédiatement la boucle : on exécute print("FIN") et le programme s'arrête (il n'y a plus d'instruction après)

  • Après l'exécution de ce programme, nous aurons à l'écran :

0
1
2
FIN

Il est très important que vous soyez capable d'effectuer l'analyse d'un programme comme nous venons de la faire ci-dessus, cela vous permettra d'éviter beaucoup d'erreurs.