Tutoriels gratuits et ouverts à toutes et à tous · conçus au Lycée Chevrollier — AngersÀ propos

Série « Parcours Python » · partie 3 / 8

Python niveau 2 — Prendre des décisions

Les conditions : faire réagir un programme différemment selon la situation : niveau 2 du parcours Python, avec exercices corrigés et QCM.

Développement✎ B. Jousseaume📅 17 octobre 2026⏱ 4 h📶 Débutant

1. Comparer : les booléens

Une comparaison produit toujours un booléen : True (vrai) ou False (faux).

OpérateurSignificationExempleRésultat
==est égal à5 == 5True
!=est différent de5 != 3True
< >inférieur / supérieur2 > 7False
<= >=inférieur ou égal / supérieur ou égal18 >= 18True

On peut aussi comparer des textes : "chat" == "chat" est vrai, mais "Chat" == "chat" est faux (la majuscule compte).

2. La structure if

C’est la traduction directe du SI … ALORS du pseudo-code :

age = int(input("Ton âge ? "))

if age >= 18:
    print("Tu es majeur.")
    print("Tu peux voter.")

print("Fin du programme.")     # toujours exécuté
  • La ligne if se termine par deux-points :.
  • Les instructions qui dépendent de la condition sont décalées de 4 espaces (Thonny le fait automatiquement après les deux-points, ou avec la touche Tab).
  • Dès qu’on revient à gauche, on sort du bloc.

3. if … else et if … elif … else

else (sinon) traite le cas où la condition est fausse :

nombre = int(input("Un nombre ? "))
if nombre % 2 == 0:
    print("Pair")
else:
    print("Impair")

Pour plus de deux cas, on enchaîne avec elif (contraction de « else if ») :

note = float(input("Ta note sur 20 ? "))

if note >= 16:
    print("Très bien")
elif note >= 14:
    print("Bien")
elif note >= 12:
    print("Assez bien")
elif note >= 10:
    print("Passable")
else:
    print("Insuffisant")

Python teste les conditions dans l’ordre et s’arrête à la première vraie. Avec 15, le premier test est faux, le deuxième vrai : il affiche « Bien » et ignore la suite. C’est pourquoi l’ordre des elif est important.

4. Combiner des conditions

OpérateurVrai quand…Exemple
andles deux conditions sont vraiesage >= 18 and age < 65
orau moins une condition est vraiejour == "samedi" or jour == "dimanche"
notla condition est faussenot est_connecte
jour = input("Quel jour sommes-nous ? ").lower()   # .lower() met en minuscules
heure = int(input("Quelle heure (0-23) ? "))

if (jour == "samedi" or jour == "dimanche") and heure < 10:
    print("Grasse matinée autorisée !")
else:
    print("Debout !")

Python permet aussi une écriture proche des maths : if 10 <= note <= 20:.

5. Conditions imbriquées

Un if peut contenir un autre if. Chaque niveau ajoute 4 espaces :

a_un_billet = input("As-tu un billet (o/n) ? ") == "o"
age = int(input("Ton âge ? "))

if a_un_billet:
    if age < 12:
        print("Entrée enfant, bon film !")
    else:
        print("Bon film !")
else:
    print("Direction la billetterie.")

Remarque la première ligne : la comparaison == "o" produit directement un booléen rangé dans la variable. Évite toutefois d’imbriquer trop profondément : au-delà de deux ou trois niveaux, le code devient difficile à lire.

6. Mini-projet : le conseiller vestimentaire

7. Bilan

Exercices corrigés

Pour les conditions, pense à tester chaque branche du programme (chaque if, elif et else) ainsi que les valeurs limites (exactement 10, exactement 50…).

Exercice 2.1 — Premiers choix

Voir le corrigé
# 1. Signe
n = float(input("Un nombre ? "))
if n > 0:
    print("Positif")
elif n < 0:
    print("Négatif")
else:
    print("Nul")

# 2. Le plus grand
a = float(input("a ? "))
b = float(input("b ? "))
if a > b:
    print(f"Le plus grand est {a}")
elif b > a:
    print(f"Le plus grand est {b}")
else:
    print("Égaux")

# 3. Livraison
montant = float(input("Montant de la commande ? "))
if montant >= 50:
    frais = 0
else:
    frais = 4.90
print(f"Total à payer : {montant + frais:.2f} €")

Explication

Dans le 3, on calcule les frais dans une variable puis on fait un seul affichage : cela évite de répéter le print dans chaque branche.

Exercice 2.2 — Année bissextile

Voir le corrigé
annee = int(input("Année ? "))
if (annee % 4 == 0 and annee % 100 != 0) or annee % 400 == 0:
    print(f"{annee} est bissextile")
else:
    print(f"{annee} n'est pas bissextile")

Explication

La règle se traduit presque mot pour mot : « divisible par 4 et pas par 100 », ou « divisible par 400 ». Les parenthèses rendent la priorité explicite.

Pour aller plus loin

Le module calendar contient déjà calendar.isleap(annee). Refaire soi-même une fonction existante est un excellent exercice, mais dans un vrai projet on utilise ce qui existe.

Mini-projet

Voir le corrigé
temp = float(input("Température (°C) ? "))
pluie = input("Pleut-il (o/n) ? ").lower()

if temp < 5:
    conseil = "manteau, bonnet et gants"
elif temp < 15:
    conseil = "une veste"
elif temp < 25:
    conseil = "un pull léger"
else:
    conseil = "tee-shirt et casquette"

if pluie == "o":
    print(f"Mets {conseil} et n'oublie pas ton parapluie.")
elif pluie == "n":
    print(f"Mets {conseil}.")
else:
    print("Réponse non comprise pour la pluie.")

Explication

On sépare les deux décisions : d’abord la tenue selon la température (un if/elif/else qui remplit la variable conseil), ensuite l’affichage selon la pluie. Grâce aux elif, il suffit d’écrire temp < 15 : on sait déjà que temp n’est pas inférieure à 5.

🧠 Testez vos connaissances

5 questions. Répondez puis cliquez sur « Corriger ». Rien n’est enregistré : c’est de l’auto-évaluation.

1. Quelle est la différence entre = et == ?

💬 C’est la confusion la plus fréquente chez les débutants.

2. À quoi sert l’indentation en Python ?

💬 En Python, le décalage fait partie de la syntaxe : une mauvaise indentation change le programme.

3. Avec note = 15, que fait cette suite : if note >= 16: ... elif note >= 14: ... elif note >= 10: ... ?

💬 Python s’arrête à la première condition vraie et ignore les suivantes.

4. Quand la condition age >= 18 and age < 65 est-elle vraie ?

💬 and exige les deux ; or se contente d’une seule.

5. Pourquoi comparer un mot de passe avec if saisie == "secret" est-il une mauvaise pratique ?

💬 En vrai, on stocke une empreinte (hash) du mot de passe et on limite le nombre de tentatives.

© 2026 Bruno Jousseaume. Ce cours est publié sous licence CC BY-NC-SA 4.0 : vous pouvez le partager et l’adapter en citant l’auteur et un lien vers cette page, sans usage commercial, et en partageant vos adaptations sous la même licence.

Pour aller plus loin