Opérations logiques et booléennes en Python

@joekakone

Joseph Konka @joekakone

03/03/2026 · 9 min

Maîtrisez les opérateurs relationnels, logiques (and, or, not), d'identité (is) et d'appartenance (in). Comprenez le court-circuit, les comparaisons enchaînées et les notions de Truthy et Falsy.

Opérations logiques et booléennes en langage Python#

Les opérations logiques permettent à un programme d'évaluer des prédicats et de formuler des conditions. En Python, le résultat d'une comparaison est un objet de type booléen (bool) valant soit True (Vrai), soit False (Faux).


1. Les opérateurs de comparaison#

Ces opérateurs comparent les valeurs de deux opérandes :

Opérateur Signification Exemple Résultat
== Égalité de valeur 5 == 5 True
!= Différence (inégalité) 5 != 3 True
< Strictement inférieur 4 < 9 True
<= Inférieur ou égal 10 <= 10 True
> Strictement supérieur 7 > 12 False
>= Supérieur ou égal 15 >= 20 False

Les comparaisons enchaînées (Spécificité élégante de Python)#

En C ou Java, pour vérifier si une variable \(x\) est comprise entre deux bornes, on doit écrire 10 <= x && x <= 20.
En Python, vous pouvez enchaîner les opérateurs exactement comme en notation mathématique :

note = 14.5

# Syntaxe Pythonique enchaînée :
if 10.0 <= note <= 20.0:
    print("La note est comprise dans l'intervalle valide.")

2. Les opérateurs logiques : and, or, not#

Contrairement à d'autres langages qui utilisent des symboles ésotériques (&&, ||, !), Python privilégie des mots-clés explicites en anglais :

flowchart TD
    subgraph and [Operateur and]
        A["Vrai and Vrai -> Vrai"]
        B["Tout autre cas -> Faux"]
    end
    subgraph or [Operateur or]
        C["Faux or Faux -> Faux"]
        D["Tout autre cas -> Vrai"]
    end
    subgraph not [Operateur not]
        E["not Vrai -> Faux"]
        F["not Faux -> Vrai"]
    end

Table de vérité#

A B A and B A or B not A
True True True True False
True False False True False
False True False True True
False False False False True

L'évaluation en court-circuit (Short-Circuit Evaluation)#

Python évalue les expressions logiques de gauche à droite et s'arrête dès que le résultat final est certain : - Dans A and B : si A est faux, l'expression globale est nécessairement fausse ; B n'est pas évalué. - Dans A or B : si A est vrai, l'expression globale est nécessairement vraie ; B n'est pas évalué.

# Exemple de protection contre la division par zéro grâce au court-circuit
diviseur = 0
# L'expression à droite n'est jamais exécutée car 'diviseur != 0' est False !
if diviseur != 0 and (100 / diviseur) > 10:
    print("Calcul effectue.")
else:
    print("Division evitee sans aucune erreur !")

3. Identité vs Égalité : is contre ==#

Il est capital de distinguer l'égalité de contenu et l'identité mémoire : - == compare la valeur des objets. - is compare l'adresse mémoire (id()) des objets.

liste1 = [1, 2, 3]
liste2 = [1, 2, 3]

print(liste1 == liste2)  # True : les deux listes ont le même contenu
print(liste1 is liste2)  # False : ce sont deux objets distincts en mémoire RAM !

[!TIP] Bonne pratique PEP 8 :
Pour tester si une variable est nulle (None), n'utilisez jamais == None, mais toujours :

if resultat is None:
    print("Aucune donnee trouvee.")
if resultat is not None:
    print("Resultat valide.")


4. Les opérateurs d'appartenance : in et not in#

L'opérateur in vérifie si un élément est présent dans une séquence (chaîne, liste, tuple, ensemble ou dictionnaire) :

# 1. Dans une chaîne de caractères
email = "contact@algojungle.com"
if "@" in email and not email.endswith("@"):
    print("Format d'email plausible.")

# 2. Dans une liste de rôles
roles_autorises = ["admin", "moderateur", "analyste"]
role_utilisateur = "moderateur"

if role_utilisateur in roles_autorises:
    print("Acces autorise au tableau de bord.")

5. Les notions de Truthy et Falsy#

En Python, n'importe quel objet peut être évalué dans un contexte booléen (bool(objet)).

Les valeurs considérées comme Falsy (fausses) sont : - La constante False - L'objet nul None - Les zéros numériques : 0, 0.0, 0j - Les conteneurs vides : chaîne vide "", liste vide [], tuple vide (), dictionnaire vide {}, ensemble vide set()

Absolument tout le reste est considéré comme Truthy (vrai).

nom_utilisateur = input("Entrez votre pseudo : ").strip()

# Idiome Python : tester directement la vérité de la chaîne
if nom_utilisateur:  # Équivalent à : if len(nom_utilisateur) > 0:
    print(f"Bienvenue, {nom_utilisateur} !")
else:
    print("Erreur : vous n'avez rien saisi !")

6. Mise en pratique : Système de contrôle d'accès sécurisé#

Concevons un script de validation d'accès combinant l'ensemble de ces opérateurs logiques :

# Profil utilisateur simulé
utilisateur_actif = True
age = 22
role = "analyste"
roles_privilegies = ["admin", "superviseur", "analyste"]
banni = False

# Évaluation de la politique de sécurité
acces_autorise = (
    utilisateur_actif
    and not banni
    and age >= 18
    and role in roles_privilegies
)

print(f"Tentative d'acces pour l'utilisateur (Role: {role}, Age: {age})")
if acces_autorise:
    print(">>> ACCES ACCORDE : Bienvenue dans l'espace confidentiel.")
else:
    print(">>> ACCES REFUSE : Votre profil ne satisfait pas les regles de securite.")

7. Défi d'application#

Écrivez un programme nommé annee_bissextile.py qui détermine si une année saisie par l'utilisateur est bissextile. Pour rappel, une année est bissextile si elle est divisible par 4 mais pas par 100, ou si elle est divisible par 400. Écrivez cette condition en une seule expression booléenne combinant and, or et %.

Commentaires

Inscrivez-vous à une formation complète

Voir le catalogue