Python If...Else
Apprenez à utiliser if, elif et else en Python : syntaxe, opérateurs de comparaison, opérateurs logiques, conditions imbriquées et expression ternaire.
Les instructions conditionnelles permettent à un programme Python de choisir entre différents chemins d'exécution selon qu'une condition est vraie ou fausse. Ce chapitre couvre toutes les formes de conditionnelles Python : if, if-else, if-elif-else, if imbriqué et le raccourci en une ligne — ainsi que les opérateurs de comparaison et logiques qui font fonctionner les conditions.
L'instruction if
L'instruction if est la conditionnelle la plus simple. Le bloc indenté s'exécute uniquement lorsque la condition est évaluée à True.
if condition:
# code that runs when condition is TrueExemple
Python utilise l'indentation (4 espaces par convention) pour définir le bloc — il n'y a pas d'accolades. Si la condition est False, le bloc est simplement ignoré.
Opérateurs de comparaison
Les conditions sont construites à partir d'expressions qui comparent deux valeurs. Chaque expression produit un boolean Python — True ou False.
| Opérateur | Signification | Exemple | Résultat |
|---|---|---|---|
== | Égal à | 5 == 5 | True |
!= | Différent de | 5 != 3 | True |
> | Supérieur à | 5 > 3 | True |
< | Inférieur à | 5 < 3 | False |
>= | Supérieur ou égal à | 5 >= 5 | True |
<= | Inférieur ou égal à | 4 <= 5 | True |
Consultez les opérateurs Python pour la référence complète des opérateurs, y compris les opérateurs arithmétiques et d'affectation.
Opérateurs logiques
Les opérateurs logiques combinent plusieurs conditions en une seule expression.
| Opérateur | Renvoie True quand… | Exemple |
|---|---|---|
and | Les deux conditions sont True | x > 0 and x < 10 |
or | Au moins une condition est True | x < 0 or x > 100 |
not | La condition est False | not logged_in |
Exemple — and
Exemple — or et not
day = "Saturday"
if day == "Saturday" or day == "Sunday":
print("It is the weekend")
logged_in = False
if not logged_in:
print("Please log in")L'instruction if-else
Ajoutez une clause else pour gérer le cas où la condition est False.
if condition:
# runs when condition is True
else:
# runs when condition is FalseExemple
Un seul des deux blocs s'exécutera pour une exécution donnée.
L'instruction if-elif-else
Utilisez elif (abréviation de « else if ») pour tester plusieurs conditions en séquence. Python les vérifie de haut en bas et exécute le premier bloc correspondant. Le bloc else à la fin est un attrape-tout pour quand aucune condition ne correspond.
if condition1:
# runs when condition1 is True
elif condition2:
# runs when condition2 is True and condition1 is False
elif condition3:
# runs when condition3 is True and the above are False
else:
# runs when none of the above are TrueVous pouvez avoir autant de clauses elif que nécessaire, mais un seul if et au maximum un seul else.
Exemple — classification des notes
Pourquoi l'ordre compte : dès que Python trouve une condition True, il arrête la vérification. Si vous écriviez score >= 60 en premier, un score de 95 afficherait "Grade: C" car 95 est aussi >= 60. Mettez toujours la condition la plus spécifique (la plus stricte) en premier.
Instructions if imbriquées
Une instruction if peut apparaître à l'intérieur du bloc d'une autre instruction if. C'est ce qu'on appelle l'imbrication et cela est utile lorsque vous devez appliquer un test secondaire uniquement après qu'un test primaire a réussi.
score = 85
if score >= 60:
if score >= 90:
print("Grade: A")
elif score >= 80:
print("Grade: B")
else:
print("Grade: C")
else:
print("Grade: F")
# Output: Grade: BAttention : une imbrication profonde rend le code difficile à lire. Préférez les chaînes elif pour les comparaisons à plat, et envisagez d'extraire la logique imbriquée dans une fonction lorsque l'imbrication dépasse deux niveaux.
Véracité et valeurs falsy
Python traite de nombreuses valeurs comme implicitement True ou False sans utiliser d'opérateur de comparaison. Les valeurs considérées comme False dans un contexte boolean sont :
NoneFalse0(zéro entier),0.0(zéro flottant)""(string vide),[](liste vide),{}(dict vide),()(tuple vide),set()(ensemble vide)
Tout le reste est considéré comme True. Cela vous permet d'écrire des gardes concises :
name = "Alice"
if name:
print("Name is set") # prints because "Alice" is truthy
items = []
if not items:
print("The list is empty") # prints because [] is falsy
value = None
if value is None:
print("No value provided") # use 'is None' for explicit None checksUtilisez is None / is not None (pas == None) lorsque vous testez spécifiquement None — c'est la convention de style Python et cela évite les correspondances accidentelles.
L'expression ternaire if abrégée
L'expression conditionnelle en une ligne de Python affecte l'une de deux valeurs selon une condition :
value = result_if_true if condition else result_if_falseExemple
age = 20
status = "adult" if age >= 18 else "minor"
print(status)
# Output: adultC'est équivalent à :
if age >= 18:
status = "adult"
else:
status = "minor"Utilisez la forme ternaire pour les affectations de valeurs simples. Évitez de l'imbriquer — a if c1 else b if c2 else c devient rapidement illisible.
L'instruction pass
Python requiert au moins une instruction à l'intérieur de chaque bloc. Si vous souhaitez définir une branche if qui ne fait intentionnellement rien (un espace réservé pendant le développement), utilisez pass :
x = 10
if x > 5:
pass # TODO: handle this case later
else:
print("x is 5 or less")pass est une instruction sans effet — elle indique à Python que « ce bloc est intentionnellement vide ».
L'opérateur walrus := (Python 3.8+)
L'opérateur walrus assigne une valeur à une variable et la teste dans la même expression. Il est particulièrement utile lorsque vous avez besoin de la valeur testée à l'intérieur du bloc if :
numbers = [1, 2, 3, 4, 5]
if (n := len(numbers)) > 3:
print(f"List has {n} items, which is more than 3")
# Output: List has 5 items, which is more than 3Sans :=, vous auriez besoin d'une ligne d'affectation séparée. Les parenthèses autour de n := len(numbers) sont nécessaires ici pour éviter toute ambiguïté.
Erreurs courantes
Utiliser = au lieu de ==
# Wrong — this is assignment, not comparison, and causes a SyntaxError in conditions
# if x = 5:
# Correct
if x == 5:
print("x is five")Oublier le deux-points
Chaque ligne if, elif et else doit se terminer par :. Un deux-points manquant produit une SyntaxError.
Indentation incohérente
Toutes les instructions du même bloc doivent utiliser exactement la même indentation. Mélanger tabulations et espaces provoque une IndentationError. Restez sur 4 espaces, ce qui est la norme PEP 8.
Quoi utiliser et quand
| Scénario | Meilleur choix |
|---|---|
| Une condition, une seule action | if |
| Deux chemins mutuellement exclusifs | if-else |
| Trois chemins ou plus | if-elif-else |
| Test secondaire à l'intérieur d'une branche | if imbriqué |
| Affectation simple d'une valeur | Ternaire x if c else y |
| Vérifications d'égalité multi-valeurs (Python 3.10+) | instruction match |
Pratique
Une fois que vous maîtrisez les conditionnelles, la prochaine étape naturelle est de répéter du code avec les boucles while Python et les boucles for Python.