Apprenez en lisant dans l'ordre

if / elif / else et branchements avancés

Apprends à construire des conditions Python avec if / elif / else et les motifs avancés comme l'opérateur ternaire et isinstance.

Les bases de if et if not

if condition: exécute le bloc uniquement quand la condition vaut True — c'est la structure de branchement la plus basique. Pour inverser une condition, ajoute not devant, comme dans if not condition:.

not est l'opérateur qui inverse True et False, donc des formulations comme « quand ce n'est pas… » ou « quand ce n'est pas vide » s'écrivent naturellement.

# if : s'exécute uniquement quand la condition est True
is_logged_in = True
if is_logged_in:
    print("Bienvenue")
# Sortie : Bienvenue

# if not : inverse la condition avant de l'évaluer
is_logged_in = False
if not is_logged_in:
    print("Connecte-toi s'il te plaît")
# Sortie : Connecte-toi s'il te plaît

# Combiner avec des expressions de comparaison
cart = []
if not cart:
    print("Ton panier est vide")
# Sortie : Ton panier est vide

Vérifie qu'un utilisateur a confirmé son adresse e-mail.

① Définis email_verified = False.

② Avec if email_verified:, affiche « Merci d'utiliser notre service » quand l'e-mail est vérifié.

③ Avec if not email_verified:, affiche « Termine la vérification de ton e-mail » quand il ne l'est pas.

(L'explication apparaît une fois que tu auras exécuté le code correctement.)

Éditeur Python

Exécuter le code pour voir le résultat

Écrire des branchements multi-voies avec elif et else

Pour gérer plusieurs branches, utilise elif et else.

elif est l'abréviation de else if — quand la condition du if est False, Python tente la condition suivante, et si aucune ne correspond, le else final s'exécute.

Comment if / elif / else sont évalués
Débutif cond1bloc 1elif cond2bloc 2elsebloc 3TrueFalseTrueFalsesinon

Les conditions sont évaluées de haut en bas. Seule la première qui devient True s'exécute, et les autres sont ignorées. Si aucune n'est True, c'est else qui s'exécute.

# Choisir une instruction selon un feu de circulation
signal = "YELLOW"

if signal == "GREEN":
    print("Avance")
elif signal == "YELLOW":
    print("Avance avec prudence")
elif signal == "RED":
    print("Arrête-toi")
else:
    print("Signal inconnu")
# Sortie : Avance avec prudence

Change le message à l'écran selon le role d'un utilisateur.

① Affecte role = "member".

② Affiche « Tu peux accéder au panneau admin » quand role == "admin", « Tu peux accéder à ton tableau de bord » quand role == "member", « Connecte-toi s'il te plaît » quand role == "guest", sinon « Rôle inconnu ».

Éditeur Python

Exécuter le code pour voir le résultat

elif est évalué de haut en bas

Si tu écris if age >= 0: ... elif age >= 20: ..., la condition la plus large vient en premier, donc la suivante ne correspond jamais. Avec des branchements multi-voies, liste les conditions les plus restreintes (les plus strictes) en premier.

Utiliser une valeur elle-même comme condition (truthiness)

Une condition de if ne se limite pas aux expressions de comparaison comme == — tu peux y placer une valeur elle-même. Python la convertit en bool en coulisses, traitant « vide » ou 0 comme False et tout le reste comme True.

Truthiness des valeurs
0 / "" /[] / {} / Noneconversion boolFalsea du contenuconversion boolTrue
TypeTraité comme FalseTraité comme True (exemples)
int / float0, 0.01, -1, 3.14
str"" (chaîne vide)"a", "0" (toute chaîne non vide est True)
list / tuple / set[], (), set() (collections vides)[1], (0,), {0}
dict{} (dict vide){"key": "value"}
NoneNone(toute valeur autre que None)

Ce comportement permet d'écrire très succinctement des vérifications du style « l'entrée est-elle vide ? » ou « y a-t-il quelque chose dans le panier ? ».

Au lieu de if len(cart) > 0:, écris simplement if cart: — le sens est le même. C'est un style très pythonique.

# Ne pas lancer de recherche quand le mot-clé est vide
search_query = ""
if search_query:
    print(f"Recherche : {search_query}")
else:
    print("Saisis un mot-clé")
# Sortie : Saisis un mot-clé

# Passer au paiement quand le panier contient au moins un article
cart = ["pomme", "pain"]
if cart:
    print(f"Validation avec {len(cart)} article(s)")
# Sortie : Validation avec 2 article(s)

Vérifie qu'une adresse de livraison a bien été enregistrée.

① Définis shipping_address = "" (une chaîne vide).

② Avec if shipping_address: — affiche « Prêt à expédier » s'il y a une adresse, sinon affiche « Enregistre ton adresse ».

③ Réaffecte shipping_address à quelque chose comme "100 rue de la Paix, Paris…" et exécute le même if pour confirmer que le résultat change.

Éditeur Python

Exécuter le code pour voir le résultat

Écrire des if d'une ligne avec l'opérateur ternaire

Quand tout ce dont tu as besoin, c'est affecter l'une de deux valeurs selon une condition, pas besoin de 4 lignes de if / else — tu peux le faire en une seule ligne. Cela s'appelle l'opérateur ternaire (ou expression conditionnelle). La forme est valeur_si_true if condition else valeur_si_false.

Comment lire l'opérateur ternaire
valeur 1ifcondelsevaleur 2
# 4 lignes avec un if / else classique
age = 25
if age >= 20:
    status = "adulte"
else:
    status = "mineur"

# Une ligne avec l'opérateur ternaire
status = "adulte" if age >= 20 else "mineur"
print(status)   # adulte

L'astuce, c'est de ne l'utiliser que pour des choix binaires simples. Quand les conditions ou les valeurs deviennent longues, ou qu'il y a trois branches ou plus, un if / elif / else classique reste plus lisible.

Change l'étiquette de livraison selon le total de la commande.

① Définis total_price = 3200.

② Avec l'opérateur ternaire, affecte « Livraison gratuite » à shipping_label quand total_price >= 5000, sinon « Livraison 5 € ».

③ Affiche shipping_label.

Éditeur Python

Exécuter le code pour voir le résultat

Les vérifications de plage peuvent être chaînées directement

Les vérifications de plage comme « entre 0 et 100 inclus » peuvent s'écrire en chaînant les opérateurs de comparaison au lieu d'utiliser and. Le résultat se lit comme une inéquation mathématique, ce qui rend l'intention très claire.

score = 78

# Avec and
if score >= 0 and score <= 100:
    print("Score valide")

# Forme chaînée (même sens)
if 0 <= score <= 100:
    print("Score valide")

Décide si un score de test est dans la plage valide (0–100).

① Définis score = 78.

② Avec la comparaison chaînée 0 <= score <= 100, affiche « Score valide » si c'est dans la plage, sinon « Hors plage ».

③ Réaffecte score = 120 et exécute la même vérification.

Éditeur Python

Exécuter le code pour voir le résultat

Inspecter le type et la valeur (isinstance et is None)

Quand tu veux vérifier le type d'une valeur contenue dans une variable, utilise isinstance(valeur, type). Passe la valeur en premier et le type en second — si la valeur est une instance de ce type, cela retourne True.

price = 980
user_name = "alice"

print(isinstance(price, int))      # True
print(isinstance(user_name, str))  # True
print(isinstance(price, str))      # False

# Combine avec if pour ne calculer que si c'est un nombre
if isinstance(price, int) and price > 0:
    tax_included = int(price * 1.1)
    print(tax_included)   # 1078

Qu'est-ce que None ?

None est la valeur spéciale de Python qui signifie « pas de valeur ». Elle représente des choses comme « un résultat pas encore récupéré », « un état non initialisé » ou « ce qu'une fonction renvoie quand elle ne renvoie rien ». C'est la seule et unique valeur qui signifie « rien », distincte de 0 ou d'une chaîne vide.

En quoi None diffère des autres valeurs
0(nombre)""(chaîne vide)[](liste vide)None(pas de valeur)
# Une fonction qui ne renvoie rien renvoie implicitement None
def greet():
    print("bonjour")

result = greet()      # "bonjour" est affiché
print(result)         # None

# Une valeur initiale signifiant « pas encore décidé »
selected_user = None
print(selected_user)  # None

Pour vérifier si une valeur est None, la façon pythonique est d'utiliser is None plutôt que ==. Comme None est un objet unique dans le programme, comparer si deux références pointent vers le même objet en mémoire avec is rend l'intention plus claire.

# Infos utilisateur depuis une API (suppose qu'elles n'ont pas encore été récupérées)
user = None

if user is None:
    print("Infos utilisateur non chargées")
else:
    print(f"Bienvenue, {user}")
# Sortie : Infos utilisateur non chargées

# Pour vérifier « pas None », utilise `is not None`
score = 0
if score is not None:
    print(f"Score : {score}")   # Score : 0

0 et None sont deux choses différentes

Écrire if score: traitera score == 0 aussi comme False. Quand tu dois distinguer « pas saisi (None) » de « 0 point », vérifie explicitement avec if score is None: ou if score is not None:.

Vérifie la présence et le type d'un âge utilisateur récupéré depuis une API.

① Définis user_age = None.

② Si user_age is None, affiche « Âge non enregistré » ; sinon, si isinstance(user_age, int) vaut True, affiche la valeur de user_age.

③ Réaffecte user_age = 29 et exécute la même vérification.

Éditeur Python

Exécuter le code pour voir le résultat

Vérifier le contenu d'une collection avec in / not in

Pour tester si une valeur est contenue dans une liste, utilise valeur in collection. L'inverse — « non contenu » — s'écrit valeur not in collection. Cela fonctionne pour les listes, tuples, ensembles et chaînes, et pour les dicts cela vérifie les clés.

allowed_roles = ["admin", "editor", "member"]
current_role = "member"

if current_role in allowed_roles:
    print("Accès autorisé")
else:
    print("Accès refusé")
# Sortie : Accès autorisé

# Vérifier si une sous-chaîne apparaît dans une chaîne
if "error" in "connection error: timeout":
    print("Ligne d'erreur détectée")

# Pour un dict, `in` vérifie les clés
user = {"name": "alice", "role": "admin"}
if "email" not in user:
    print("E-mail non enregistré")

Vérifie le statut de publication d'un article de blog.

① Définis published_slugs = ["python-intro", "sql-basics", "git-tips"].

② Définis target = "git-tips".

③ Si target est dans published_slugs, affiche « Publié » ; sinon affiche « Brouillon ».

④ Change target en "draft-post" et exécute la même vérification.

Éditeur Python

Exécuter le code pour voir le résultat

Dans cet article, on a couvert les branchements avancés avec les bases de if / if not, la logique multi-voies avec elif / else, la truthiness qui traite les valeurs vides et 0 comme False, l'opérateur ternaire valeur_1 if condition else valeur_2, les vérifications de type et de valeur avec isinstance et is None, et les vérifications de collection avec in / not in.

Dans le prochain article, on apprendra all() / any(), qui permettent de vérifier si chaque élément d'une liste satisfait une condition en un seul appel.

QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Lequel des suivants exécute le bloc de if not value: ?

Question 2Que va afficher ce code ?
age = 18
status = "adult" if age >= 20 else "minor"
print(status)

Question 3Lequel des suivants est la façon la plus recommandée de vérifier si une valeur vaut None ?