Image de couverture de Opérateurs Python et prise de décision : if, elif, else et match

En un coup d’œil

Temps de lecture

~200 mots/min

Publié

il y a 1 mois

Jun 13, 2026 · Mis à jour Jul 2, 2026

Vues

218

Total depuis le début

Opérateurs Python et prise de décision : if, elif, else et match

Dans la première partie, vos programmes s'exécutaient du début à la fin, chaque ligne, à chaque fois. Les vrais programmes ne fonctionnent pas ainsi. Ils vérifient une condition et empruntent un chemin ou un autre : le mot de passe est-il correct, le panier est-il vide, le score est-il suffisant pour une mention. Cette leçon donne ce pouvoir à votre code. Vous allez découvrir l'ensemble des opérateurs Python, comment le langage détermine ce qui est considéré comme vrai, et les trois outils de branchement : la classique cascade if, elif et else, l'expression conditionnelle pour les instructions en une ligne, et la moderne instruction match introduite avec Python 3.10.

C'est aussi la leçon où la caractéristique la plus célèbre de Python cesse d'être une anecdote pour devenir une règle de grammaire que vous utiliserez : l'indentation. Chaque construction de branchement crée un bloc, et en Python un bloc est défini par le niveau d'indentation de ses lignes. Familiarisez-vous avec cela ici et le reste du cours, où les blocs s'imbriquent dans des fonctions à l'intérieur de classes, vous semblera naturel plutôt que tatillon.

Ce que vous apprendrez dans la partie 2

  • Les opérateurs arithmétiques, d'affectation et de comparaison, y compris les comparaisons chaînées
  • La logique booléenne avec and, or et not, ainsi que l'évaluation paresseuse
  • La véracité : ce que Python traite comme vrai et faux au-delà de True et False
  • Comment l'indentation définit les blocs, de manière précise et sans exception
  • Le branchement avec if, elif et else, et les expressions conditionnelles en une ligne
  • Le filtrage par motif structurel avec match et case

Remarque

Avant de commencer

Vous devez être à l'aise avec les variables, les types de base et les f-strings de la partie 1. Chaque exemple ci-dessous s'exécute dans l'environnement de test plus bas sur la page, gardez-le donc ouvert dans un second onglet si vous aimez expérimenter au fil de votre lecture.

1. Opérateurs arithmétiques et d'affectation, version complète

La partie 1 a présenté les opérateurs arithmétiques en passant ; voici le tableau complet. L'addition, la soustraction et la multiplication se comportent comme prévu. La division avec une simple barre oblique produit toujours un float, même lorsque le résultat est entier, car Python refuse de perdre silencieusement de la précision. La double barre oblique effectue une division entière, en arrondissant au nombre entier inférieur, et le signe pour cent donne le reste de cette division. Deux astérisques élèvent à une puissance. L'opérateur modulo est le héros méconnu de cet ensemble : vérifier si un nombre est pair, parcourir un intervalle fixe, et le classique entretien d'embauche FizzBuzz reposent tous sur lui.

print(17 / 5)    # 3.4   true division, always float
print(17 // 5)   # 3     floor division
print(17 % 5)    # 2     remainder
print(17 % 2)    # 1     odd number, remainder 1; even numbers give 0
print(3 ** 4)    # 81    power

# Augmented assignment rewrites the variable in place
score = 10
score += 5       # same as score = score + 5
score *= 2       # same as score = score * 2
print(score)     # 30

Les opérateurs d'affectation augmentée, +=, -=, *= et leurs semblables, sont de purs raccourcis, mais vous les verrez dans tous les fichiers Python jamais écrits, alors rendez-les automatiques dès maintenant. Une autre famille d'opérateurs qu'il vaut la peine de rencontrer tôt : les chaînes répondent aussi à + et *. Ajouter deux chaînes les colle ensemble, et multiplier une chaîne par un entier la répète. Python n'ajoutera cependant pas une chaîne à un nombre ; comme vous l'avez appris à vos dépens dans la partie 1, il lève une TypeError et vous explique exactement pourquoi.

2. Comparaisons, et un tour de magie de Python

Les opérateurs de comparaison posent des questions sur les valeurs et répondent toujours par un booléen. Vous avez l'égalité ==, l'inégalité !=, et les quatre relations d'ordre <, <=, >, >=. Ils fonctionnent sur les nombres, sur les chaînes (ordre alphabétique, toutes les majuscules se classant avant toutes les minuscules), et sur la plupart des choses que vous rencontrerez plus tard. Le double égal mérite le respect : le confondre avec l'affectation simple égal est le bug classique du débutant, bien que Python refuse au moins de vous laisser faire une affectation à l'intérieur d'une condition if, transformant l'erreur en une erreur visible plutôt que silencieuse.

age = 19
print(age == 19)        # True
print(age != 21)        # True
print("apple" < "banana")  # True, alphabetical

# Chained comparisons read like math
print(18 <= age < 65)   # True: age is between 18 and 64

Cette dernière ligne est le tour de magie. La plupart des langages vous obligent à écrire age >= 18 and age < 65. Python vous permet de chaîner les comparaisons exactement comme le font les mathématiques, et la forme chaînée est à la fois plus courte et plus difficile à mal écrire. Utilisez-la chaque fois que vous vérifiez qu'une valeur se situe dans un intervalle.

3. Logique booléenne et notion de véracité

Les conditions se combinent avec trois mots-clés : and, or et not. Une expression and est vraie seulement quand les deux côtés sont vrais ; une expression or est vraie quand au moins un côté l'est ; not inverse son opérande. Python les évalue de manière paresseuse, un comportement appelé évaluation en court-circuit : dans a and b, si a est déjà faux, b n'est même pas examiné, et dans a or b, si a est vrai, b est ignoré. Ce n'est pas seulement une optimisation. Du code comme balance > 0 and price / balance < 0.5 en dépend : quand le solde est nul, la division dangereuse à droite ne s'exécute jamais.

Python étend le vrai et le faux au-delà des deux valeurs booléennes, et la règle vaut la peine d'être mémorisée une fois car elle ne change jamais. Le nombre zéro, la chaîne vide, la liste vide, le dictionnaire vide et None comptent tous comme faux dans une condition. Tout le reste compte comme vrai. Le code pythonique s'appuie constamment là-dessus : if name: se lit comme si un nom a été fourni, et if not items: se lit comme si la liste est vide. Vous écrirez ces deux lignes exactes des centaines de fois dans votre carrière.

name = ""
items = [1, 2, 3]

if not name:
    print("No name given")          # runs: empty string is falsy
if items:
    print(f"{len(items)} items")    # runs: non-empty list is truthy

logged_in = True
is_admin = False
print(logged_in and is_admin)       # False
print(logged_in or is_admin)        # True
print(not is_admin)                 # True

Point de contrôle

À quoi bool("False") s'évalue-t-il ?

Publicité

4. Indentation : comment Python définit un bloc

Venons-en à la grammaire qui rend le branchement possible. Un bloc en Python est un groupe d'instructions qui appartiennent à une ligne d'en-tête, et cette appartenance est déclarée par l'indentation. L'en-tête se termine par deux-points, et chaque ligne indentée d'un niveau en dessous lui appartient. Le bloc se termine à la première ligne qui revient à l'indentation précédente. La convention universelle est de quatre espaces par niveau, et tout éditeur sérieux les insère quand vous appuyez sur Tab. La seule règle véritable est la cohérence : mélanger tabulations et espaces dans un même fichier est une erreur, et changer la largeur d'indentation en cours de fichier est un crime contre la lisibilité.

Si vous avez programmé ailleurs, cela remplace les accolades, et après une journée vous ne les regretterez pas. Si Python est votre premier langage, vous avez la tâche la plus facile : la structure visuelle que vous utiliseriez naturellement pour garder le code propre est tout simplement la loi. Dans les deux cas, quand Python se plaint d'une IndentationError ou d'une indentation inattendue, il vous dit que la forme de votre code ne correspond pas à votre intention, et la solution consiste toujours à aligner correctement le bloc.

5. if, elif et else

L'instruction if évalue une condition et n'exécute son bloc que si la condition est vraie. Un bloc else optionnel prend en charge le cas contraire. Entre les deux, vous pouvez empiler autant de branches elif que vous voulez, abréviation de else if, qui sont testées dans l'ordre jusqu'à ce que l'une corresponde. Exactement une branche de l'échelle s'exécute, toujours, et l'ordre des elif a donc de l'importance : placez les tests les plus spécifiques en premier. Voici un exemple complet et réaliste, la logique de seuil de notes utilisée par pratiquement toutes les écoles du monde.

score = 73

if score >= 75:
    grade = "A"
elif score >= 65:
    grade = "B"
elif score >= 50:
    grade = "C"
elif score >= 35:
    grade = "S"
else:
    grade = "F"

print(f"Score {score} earns grade {grade}")   # Score 73 earns grade B

Parcourez l'échelle avec un score de 73. Le premier test échoue car 73 est inférieur à 75. Le deuxième test réussit, la note devient B, et le reste de l'échelle est entièrement ignoré, ce qui explique pourquoi les conditions plus larges qui suivent n'ont jamais la possibilité d'écraser la réponse. Si vous inversiez l'ordre et testiez score >= 35 en premier, chaque score de passage aboutirait à S. Lorsqu'une échelle se comporte mal, simulez-la à la main exactement comme ceci, de haut en bas, et le bogue se révèle presque toujours en quelques secondes.

Pour les choix simples, Python propose une expression conditionnelle qui tient sur une ligne : valeur_si_vrai if condition else valeur_si_faux. Elle brille pour les affectations simples comme label = "pair" if n % 2 == 0 else "impair" et devient illisible dès que vous l'imbriquez, alors traitez-la comme un assaisonnement, pas comme un plat principal.

6. L'instruction match

Python 3.10 a ajouté match, et c'est l'outil approprié lorsque vous comparez une valeur à une série de formes spécifiques plutôt que de tester des conditions arbitraires. La valeur après match est comparée à chaque cas dans l'ordre ; le premier motif qui correspond l'emporte, un tiret bas sert de valeur par défaut universelle, et vous pouvez attacher une condition supplémentaire à n'importe quel cas avec if. Là où une échelle if pose de nombreuses questions sans rapport, un match se lit comme un menu.

command = "help"

match command:
    case "start":
        print("Starting the engine")
    case "stop" | "halt":              # either word matches
        print("Stopping")
    case "help":
        print("Available: start, stop, help")
    case _:
        print(f"Unknown command: {command}")

match peut faire bien plus que comparer des chaînes ; il peut déstructurer des tuples, des listes et des dictionnaires, et plus tard dans la série vous le verrez déballer des données structurées en un seul mouvement élégant. Pour l'instant, utilisez-le chaque fois qu'une échelle if consisterait entièrement en tests x == quelque chose, et tenez-vous-en à if pour tout le reste. Les deux sont idiomatiques ; choisir entre eux revient à déterminer lequel se lit le mieux à l'endroit de l'appel.

Point de contrôle

Dans une échelle if/elif/else, combien de branches s'exécutent ?

Publicité

7. Pratique : un calculateur de tranches d'imposition

Il est temps de tout combiner : comparaisons, logique booléenne, une échelle et les f-strings de la Partie 1. Le bac à sable ci-dessous implémente un calcul d'impôt progressif simplifié. Exécutez-le, puis faites les exercices dans les commentaires : ils vous demandent d'ajouter une tranche, de vous prémunir contre les entrées négatives avec un test de vérité, et de convertir une décision en expression conditionnelle. Chaque modification que vous effectuez et vérifiez vaut dix fois celles que vous vous contentez de lire.

Bac à sable Python

Remarquez comment la garde contre les revenus négatifs enveloppe tout le calcul, l'échelle étant indentée d'un niveau supplémentaire à l'intérieur du else. Une telle imbrication est normale et saine jusqu'à deux ou trois niveaux. Au-delà, le code devient difficile à suivre, et la solution professionnelle consiste à restructurer, généralement en retournant tôt depuis une fonction, une technique qui prendra tout son sens après la Partie 4.

! Erreurs courantes à éviter

  • Écrire if score = 100: et obtenir une SyntaxError.

    L'affectation utilise =, la comparaison utilise ==. Python refuse d'affecter à l'intérieur d'une condition précisément pour attraper cette erreur classique.

  • Oublier les deux-points à la fin des lignes if, elif ou else.

    Chaque en-tête de bloc en Python se termine par deux-points. Le message d'erreur pointe vers la ligne ; la correction ne demande qu'une frappe.

  • Ordonner les tests elif du plus large au plus strict, de sorte que le premier test large intercepte tout.

    Ordonnez l'échelle du plus spécifique au moins spécifique, et parcourez une valeur d'exemple à la main pour confirmer.

  • Tester if réponse == "oui" or "o": et constater que c'est toujours vrai.

    Cela est analysé comme (réponse == "oui") or ("o"), et une chaîne non vide est évaluée comme vraie. Écrivez plutôt réponse in ("oui", "o").

? Foire aux questions

Existe-t-il une instruction switch en Python ? +

match, ajouté dans Python 3.10, remplit ce rôle et va plus loin avec les motifs structurels. Avant la 3.10, l'idiome était une échelle if/elif ou une recherche dans un dictionnaire, que vous rencontrerez encore dans du code plus ancien.

Pourquoi quatre espaces et pas des tabulations ? +

Quatre espaces est la convention de la PEP 8, le guide de style officiel, et la valeur par défaut dans tout éditeur moderne. Ce qui importe vraiment, c'est la cohérence au sein d'un fichier ; mélanger tabulations et espaces est une erreur de syntaxe.

Puis-je mettre un if sur une seule ligne ? +

De deux manières : l'expression conditionnelle (x if cond else y) pour choisir une valeur, et une instruction simple comme if prêt: lancer(). La première est idiomatique ; la seconde est autorisée mais déconseillée en dehors de scripts rapides.

Python a-t-il && et || comme d'autres langages ? +

Non, Python les écrit and, or et not. Si vous tapez &&, vous obtenez une SyntaxError ; ces mots sont l'une des raisons pour lesquelles les conditions Python se lisent si près de l'anglais.

8. Récapitulatif et la suite

Vos programmes peuvent maintenant réfléchir : opérateurs arithmétiques et de comparaison complets, comparaisons chaînées, logique booléenne avec court-circuit, véracité, blocs définis par l'indentation, l'échelle if/elif/else, les expressions conditionnelles et match. Ces outils apparaissent dans chaque leçon d'ici la fin de la série, ce qui explique qu'ils aient eu droit à une leçon entière.

Les décisions seules ne suffisent pas ; les programmes gagnent leur vie en répétant le travail. La Partie 3, Boucles et contrôle de flux en Python couvre for, while, break, continue et les motifs de boucle qui alimentent tout, des tables de multiplication aux pipelines de données. Les leçons Opérateurs, Prise de décision et Contrôle de flux dans l'application Apprendre Python ci-dessous reflètent ce contenu avec des quiz supplémentaires si vous voulez plus de pratique, et le programme complet se trouve sur le hub de la série.

💡

Astuce de pro

Quand une condition vous embrouille, affichez-la. La ligne print(revenu <= 500_000, taux) ne coûte rien et montre les booléens réels que votre échelle voit, ce qui est plus efficace que de fixer le code en devinant à chaque fois.

Icône de l'application Android Learn Python

Pratiquez en déplacement

Apprendre Python, l'application Android gratuite

Chaque sujet de cette série se trouve aussi dans l'application : leçons concises, exemples exécutables, quiz, mini-projets et un environnement Python hors ligne qui fonctionne sur votre téléphone.

Bishrul Haq

Written by

Bishrul Haq

Software engineer writing practical tutorials on Laravel, PHP, Python, and the tools behind real projects. More about me

Newsletter

Want more posts like this?

Get practical software notes and tutorials delivered when something new is published.

Pas de spam. Désinscription à tout moment.

Qu’en avez-vous pensé ?

Commentaires

0
Se connecter ou Créer un compte pour participer à la discussion et réagir à cet article.

Aucun commentaire pour l’instant. Soyez la première personne à donner votre avis.

Related posts

Fonctionnalités essentielles de Pandas en Python : astuces et fonctionnalités

Pandas est l'une de mes bibliothèques Python préférées. Elle est très utile pour visualiser les données de manière claire et structurée. De nos jours, Pandas est largement utilisée en science des données, en apprentissage automatique et dans d'autres domaines.

il y a 6 ans

Comment récupérer des données de Twitter avec Tweepy en Python ?

Pour commencer à travailler avec Python, vous devez avoir Python installé sur votre ordinateur. Si ce n’est pas encore fait, rendez-vous sur le site officiel de Python pour l’installer.

il y a 6 ans

Prédire le revenu par habitant des États-Unis avec la régression linéaire

Python permet de prédire et d'analyser des données à l'aide de la régression linéaire. La régression linéaire est l'une des techniques fondamentales de machine learning ou de statistique conçues pour résoudre des problèmes complexes.

il y a 6 ans

Algorithmes de tri essentiels pour les étudiants en informatique

Les algorithmes sont couramment enseignés dans les cursus d'informatique et de génie logiciel, en licence ou en master. Certains les trouvent difficiles à comprendre parce qu'ils les apprennent par cœur.

il y a 6 ans

Python 3.14 pour les projets réels : Free Threading, JIT, t-strings et Zstandard

Ce qui compte vraiment dans Python 3.14 pour la production : les builds officiels sans GIL, le JIT expérimental, les t-strings pour une interpolation sécurisée, Zstandard dans la bibliothèque standard et un plan d'adoption à faible risque.

il y a 1 mois