Chapitre 7 : Les Conditions (if, elif, else)
Contrôle de flux, Indentation, elif, Truthy/Falsy
1. Quoi : Le Contrôle de Flux
Le contrôle de flux (ou control flow) est la capacité d'un programme à exécuter différentes actions en fonction de différentes conditions. C'est ce qui permet à un programme de prendre des "décisions".
En Python, la structure de contrôle de flux la plus fondamentale est le bloc if/elif/else.
2. Pourquoi : Rendre les programmes intelligents
Sans conditions, un programme ne serait qu'une séquence d'instructions exécutées toujours dans le même ordre. Les conditions permettent de :
- Réagir aux entrées de l'utilisateur.
- Gérer différents états ou cas de figure.
- Valider des données.
- Créer des logiques complexes.
3. Comment : La Syntaxe
A. La condition if
Le bloc if exécute un morceau de code uniquement si une condition est True.
La règle d'or de Python : l'indentation ! Le code à exécuter à l'intérieur de la condition doit être indenté (généralement avec 4 espaces). C'est ainsi que Python sait que ce code appartient au bloc if.
age = 20
if age >= 18:
# Ce bloc est indenté, il ne s'exécute que si la condition est vraie.
print("You are an adult.")
print("You can vote.")
# Ce bloc n'est pas indenté, il s'exécute toujours.
print("End of program.")
B. La condition else
Le bloc else est optionnel et s'exécute uniquement si la condition du if est False.
age = 16
if age >= 18:
print("You are an adult.")
else:
# Ce bloc s'exécute car la condition (16 >= 18) est fausse.
print("You are a minor.")
C. La condition elif (else if)
Le bloc elif permet de tester plusieurs conditions en séquence. Python les évalue dans l'ordre. Dès qu'une condition if ou elif est True, son bloc de code est exécuté, et le reste de la structure est ignoré.
score = 85
if score >= 90:
print("Grade: A")
elif score >= 80:
# Le score (85) n'est pas >= 90, donc on teste cette condition.
# 85 >= 80 est vrai, donc ce bloc s'exécute.
print("Grade: B")
elif score >= 70:
# Cette condition ne sera même pas testée.
print("Grade: C")
else:
print("Grade: F")
4. "Truthy" et "Falsy"
En Python, d'autres valeurs que True et False peuvent être évaluées dans un contexte booléen.
-
Valeurs "Falsy" (considérées comme fausses) :
FalseNone- Le nombre
0(entier ou flottant) - Les séquences vides : chaîne
"", liste[], tuple(), dictionnaire{}.
-
Valeurs "Truthy" (considérées comme vraies) :
- Toutes les autres valeurs ! (ex: un nombre non nul, une chaîne non vide, une liste non vide).
Ceci permet d'écrire des conditions plus concises.
# Au lieu d'écrire : if len(my_list) > 0:
my_list = [1, 2, 3]
if my_list: # ✅ Bon : Plus "pythonic"
print("The list is not empty.")
# Au lieu d'écrire : if name != "":
name = "Alice"
if name: # ✅ Bon
print(f"Hello, {name}")
# Un cas d'usage courant pour vérifier si une variable a une valeur
user = None
# ... plus tard dans le code
if user:
print("User is logged in.")
else:
print("User is not logged in.")
5. L'Opérateur Ternaire
C'est une manière compacte d'écrire une instruction if/else sur une seule ligne, principalement pour assigner une valeur à une variable.
Syntaxe : valeur_si_vrai if condition else valeur_si_faux
age = 22
# Version longue
if age >= 18:
status = "Adult"
else:
status = "Minor"
# Version avec opérateur ternaire
# ✅ Bon : Plus concis pour les assignations simples
status = "Adult" if age >= 18 else "Minor"
print(status) # Affiche "Adult"
Exercices :
Exercice 7 - Le Videur de Boîte de Nuit
Objectif
Cet exercice a pour but de vous faire utiliser une structure conditionnelle if/elif/else pour implémenter une logique de décision simple.
Contexte
Vous êtes le développeur du logiciel pour un videur de boîte de nuit. Vous devez écrire un programme qui décide si un client peut entrer ou non, en fonction de son âge et s'il est accompagné.
Règles d'Admission
- Le client doit avoir 18 ans ou plus pour entrer.
- Cependant, il y a une exception : si le client a exactement 17 ans, il peut entrer, mais uniquement s'il est accompagné (
is_accompaniedestTrue). - Dans tous les autres cas (moins de 17 ans), l'entrée est refusée.
Énoncé
-
Créez un nouveau fichier Python nommé
bouncer.py. -
Déclarez les variables suivantes au début de votre script. Vous changerez leurs valeurs pour tester tous les cas de figure.
age = 17
is_accompanied = True -
Écrivez une structure
if/elif/elsequi implémente les règles d'admission.- Utilisez les opérateurs logiques (
and) et de comparaison (>=,==) pour construire vos conditions. - Pour chaque cas, affichez un message clair :
"Welcome, you can enter.""You can enter, but you must be accompanied.""Sorry, you are too young to enter."
- Utilisez les opérateurs logiques (
-
Testez votre code en modifiant les valeurs des variables
ageetis_accompaniedpour couvrir les scénarios suivants :age = 25,is_accompanied = False(devrait être autorisé)age = 17,is_accompanied = True(devrait être autorisé avec la mention spéciale)age = 17,is_accompanied = False(devrait être refusé)age = 16,is_accompanied = True(devrait être refusé)
Résultat Attendu
- Pour
age = 25,is_accompanied = False->"Welcome, you can enter." - Pour
age = 17,is_accompanied = True->"You can enter, but you must be accompanied." - Pour
age = 17,is_accompanied = False->"Sorry, you are too young to enter." - Pour
age = 16,is_accompanied = True->"Sorry, you are too young to enter."
Cliquez ici pour voir un exemple de code de solution
# bouncer.py
age = 25
is_accompanied = False
print(f"Testing with age: {age} and accompanied: {is_accompanied}")
# L'ordre des conditions est important. On traite le cas général d'abord.
if age >= 18:
print("Welcome, you can enter.")
# Ensuite, on traite le cas spécial pour les 17 ans.
elif age == 17 and is_accompanied:
print("You can enter, but you must be accompanied.")
# 'else' attrape tous les autres cas (moins de 18 ans sans être dans le cas spécial).
else:
print("Sorry, you are too young to enter.")
Note sur la logique : L'ordre dans lequel vous écrivez vos conditions if/elif est crucial. Il est souvent plus simple de gérer les cas les plus spécifiques ou les plus généraux en premier, en fonction de la logique. Dans cet exemple, commencer par age >= 18 simplifie grandement la suite.