Après les types et les opérateurs, il est temps de faire réagir nos programmes. Les conditions permettent à Python de choisir quoi exécuter selon la valeur des données. C'est le premier vrai pas vers des programmes intelligents.
Pourquoi des conditions ?
Un programme sans condition fait toujours la même chose, quelle que soit la situation. Les conditions permettent de brancher différemment selon les valeurs.
Exemple concret : déterminer si un apprenant a validé un examen.
note = 14
if note >= 10:
print("Admis")
else:
print("Recalé")En français : « si la note est supérieure ou égale à 10, alors afficher 'Admis', sinon afficher 'Recalé' ».
Les opérateurs de comparaison (rappel)
Déjà vus au chapitre 2, ces opérateurs renvoient toujours un booléen (True ou False) :
| Opérateur | Signification |
|---|---|
== |
Égal à |
!= |
Différent de |
< |
Strictement inférieur |
> |
Strictement supérieur |
<= |
Inférieur ou égal |
>= |
Supérieur ou égal |
La structure if
La forme la plus simple : exécuter un bloc seulement si une condition est vraie.
temperature = 35
if temperature > 30:
print("Il fait chaud !")
print("Pensez à bien vous hydrater.")Anatomie d'un if
if <condition>: ← deux-points obligatoires en fin de ligne
<instruction 1> ← indentation obligatoire (4 espaces)
<instruction 2>
<suite du programme> ← pas d'indentation : hors du ifTrois points critiques pour le TOSA :
- Les deux-points
:en fin de ligne duif— obligatoires. - L'indentation du bloc — obligatoire et cohérente (4 espaces par convention).
- Quand l'indentation s'arrête, c'est la fin du bloc
if.
La structure if / else
On ajoute un bloc alternatif qui s'exécute si la condition est fausse.
age = 17
if age >= 18:
print("Vous êtes majeur")
else:
print("Vous êtes mineur")Le else n'a pas de condition — c'est le « tout le reste des cas ».
La structure if / elif / else
Pour enchaîner plusieurs conditions qui s'excluent mutuellement, on utilise elif (contraction de else if).
note = 14
if note >= 16:
mention = "Très bien"
elif note >= 14:
mention = "Bien"
elif note >= 12:
mention = "Assez bien"
elif note >= 10:
mention = "Passable"
else:
mention = "Insuffisant"
print("Mention :", mention)Règles de l'exécution
Python évalue les conditions une à une, du haut vers le bas, et exécute le premier bloc dont la condition est vraie. Les suivants sont ignorés.
Dans l'exemple ci-dessus, avec note = 14 :
note >= 16→ False, on passe au suivantnote >= 14→ True → on exécute ce bloc et on sort de la structure- Les
elifetelsesuivants ne sont pas évalués
if / else / elif : que choisir ?
| Cas | Structure |
|---|---|
| Exécuter du code seulement dans un cas | if seul |
| Deux cas mutuellement exclusifs | if / else |
| Plus de deux cas mutuellement exclusifs | if / elif / else |
Combiner plusieurs conditions : and, or, not
Déjà vus au chapitre 2, ils sont omniprésents dans les conditions.
age = 25
permis = True
if age >= 18 and permis:
print("Peut conduire")
else:
print("Ne peut pas conduire")jour = "dimanche"
ferie = False
if jour == "dimanche" or ferie:
print("Pas de travail aujourd'hui")
else:
print("Journée de travail")connecte = False
if not connecte:
print("Veuillez vous connecter")Court-circuit — rappel
Python évalue and et or en court-circuit. Cela permet notamment d'éviter des erreurs :
# Éviter une division par zéro
diviseur = 0
if diviseur != 0 and 10 / diviseur > 1:
print("OK")
else:
print("Impossible (diviseur = 0 ou quotient trop petit)")Si on avait inversé les deux conditions, on aurait eu une ZeroDivisionError.
Conditions imbriquées
On peut mettre un if à l'intérieur d'un autre if. L'indentation devient alors plus profonde.
age = 25
permis = True
a_voiture = True
if age >= 18:
if permis:
if a_voiture:
print("Peut conduire sa voiture")
else:
print("Peut conduire, mais n'a pas de voiture")
else:
print("Majeur mais pas de permis")
else:
print("Trop jeune")Cas particuliers : la « véracité implicite »
En Python, on peut tester directement une valeur sans la comparer explicitement. Python la convertit en booléen selon les règles vues au chapitre 1.
nom = ""
if nom:
print("Bonjour", nom)
else:
print("Vous n'avez pas entré de nom")Ici, if nom: équivaut à if nom != "":. Quand nom est vide, il est considéré comme False.
Rappel des valeurs falsy (considérées comme fausses) :
- Nombres nuls :
0,0.0 - Chaîne vide :
"" - Listes/tuples/dicts/sets vides :
[],(),{} None
Tout le reste est truthy (vrai).
liste = []
if liste:
print("Il y a des éléments :", liste)
else:
print("La liste est vide")L'expression ternaire (bonus utile)
Quand on veut juste choisir entre deux valeurs selon une condition, on peut condenser un if/else sur une seule ligne.
Syntaxe : valeur_si_vrai if condition else valeur_si_faux
age = 17
statut = "majeur" if age >= 18 else "mineur"
print(statut)Équivalent à :
if age >= 18:
statut = "majeur"
else:
statut = "mineur"L'expression ternaire est utile pour les affectations simples — à ne pas abuser pour ne pas nuire à la lisibilité.
Exercices
x = 10
if x > 5:
print("A")
elif x > 8:
print("B")
else:
print("C")
x = 0
if x:
print("vrai")
else:
print("faux")
x = 5
if x > 0
print("positif")
age = 25
if age >= 18 and age < 30:
print("Jeune adulte")
elif age >= 30:
print("Adulte")
else:
print("Mineur")
resultat après exécution ?
x = 7 resultat = "pair" if x % 2 == 0 else "impair"
nom = " "
if nom:
print("Bonjour")
else:
print("Nom manquant")
Rangez dans la variable categorie la catégorie qui correspond à l'âge age :
- Moins de 3 ans :
bébé - De 3 à 11 ans :
enfant - De 12 à 17 ans :
adolescent - De 18 à 64 ans :
adulte - 65 ans et plus :
senior
Écrivez un programme qui vérifie que le mot de passe mdp remplit les critères suivants :
- Longueur minimale : 8 caractères.
- Contient au moins un caractère qui n'est pas une lettre (chiffre ou symbole).
- Contient au moins une lettre majuscule.
Si tout est bon, affichez Mot de passe OK. Sinon, affichez chaque critère non rempli sur sa propre ligne, dans cet ordre : moins de 8 caractères, pas de chiffre ni de symbole, pas de majuscule.
Indice : les méthodes de chaînes suffisent. isalpha() dit si une chaîne ne contient que des lettres ; une chaîne sans majuscule est égale à sa version en minuscules.
Un magasin applique des remises selon le montant d'achat :
- Moins de 50 € : aucune remise.
- De 50 à 99 € : 5 % de remise.
- De 100 à 199 € : 10 % de remise.
- 200 € et plus : 15 % de remise.
Calculez dans la variable prix le prix à payer pour le montant montant, remise déduite.