Aller au contenu principal

Ch. 01 · Leçon 2

Structures conditionnelles : Si…Sinon, Selon

180 minanalyse · python
Affichage du code

Ce que vous saurez faire

  • Identifier les opérateurs de comparaison et les opérateurs logiques
  • Écrire une structure Si…Sinon en notation algorithmique et en Python 3
  • Comparer les structures Si imbriquées avec la structure Selon
  • Concevoir un algorithme combinant plusieurs conditions pour résoudre un problème de décision

Plan de cours

Quand le programme doit choisir : trois portes, une seule à ouvrir

Sans conditions, un programme exécute toujours les mêmes instructions dans le même ordre. Cette leçon vous donne la capacité de faire varier l'exécution selon les données rencontrées — c'est la naissance de l'intelligence algorithmique.

Concepts clés

  1. Expression booléenne — toute condition s'évalue à vrai ou faux.
  2. Si…Sinon — exécute deux branches mutuellement exclusives.
  3. Si…Sinon Si… — chaîne plusieurs cas hiérarchisés.
  4. Selon — choix multiple sur une valeur unique.
  5. Opérateurs logiques — ET, OU, NON combinent plusieurs conditions.

Avant de commencer — qu'est-ce que vous savez déjà ?

  • Q1. Quelle valeur prend l'expression (5 > 3) ET (2 < 1) ?
  • Q2. Si note = 12, que retourne l'expression note >= 10 ?
  • Q3. Pouvez-vous citer le mot-clé Python pour « sinon si » ?

Si vous bloquez sur Q1 ou Q2, revoyez la leçon 1.1 (section types booléens). Q3 : la réponse arrive section 1.3.


1. Le contenu du cours

1.1 Analogie : le portier sélectif

Imaginez un portier à l'entrée d'un concert. À chaque visiteur, il pose une question (la condition) :

  • Si vous avez un billet → vous entrez (branche alors),
  • Sinon → vous restez dehors (branche sinon).

Une structure conditionnelle, c'est exactement ce portier dans votre code : une question, deux issues possibles.

1.2 Les expressions booléennes

Opérateurs de comparaison

AnalysePython 3Signification
===égal à
!=différent de
<<strictement inférieur à
<=inférieur ou égal à
>>strictement supérieur à
>=supérieur ou égal à

Opérateurs logiques

AnalysePython 3Table de vérité
ETandvrai uniquement si les deux opérandes sont vrais
OUorvrai si au moins un opérande est vrai
NONnotinverse la valeur (vrai → faux et inversement)

1.3 La structure Si…Alors…Sinon

Forme algorithmique

Si condition Alors
    instructions_alors
Sinon
    instructions_sinon
FinSi

Forme Python

if condition:
    instructions_alors
else:
    instructions_sinon

Exemple — Tester la majorité

Si age >= 18 Alors
    Écrire("Majeur")
Sinon
    Écrire("Mineur")
FinSi

1.4 La structure Si sans Sinon

Quand il n'y a rien à faire dans le cas faux, on omet la branche Sinon :

Si note >= 10 Alors
    Écrire("Admis")
FinSi

1.5 Les conditions chaînées : Si…Sinon Si…

Lorsque plusieurs cas mutuellement exclusifs existent :

Si note >= 16 Alors
    Écrire("Très Bien")
Sinon Si note >= 14 Alors
    Écrire("Bien")
Sinon Si note >= 12 Alors
    Écrire("Assez Bien")
Sinon Si note >= 10 Alors
    Écrire("Passable")
Sinon
    Écrire("Insuffisant")
FinSi

1.6 La structure Selon (choix multiple)

Quand la décision dépend de la valeur précise d'une variable (pas d'un intervalle), Selon est plus lisible qu'une cascade de Si :

Selon jour Faire
    1 : Écrire("Lundi")
    2 : Écrire("Mardi")
    3 : Écrire("Mercredi")
    4 : Écrire("Jeudi")
    5 : Écrire("Vendredi")
    6, 7 : Écrire("Week-end")
    Sinon : Écrire("Jour invalide")
FinSelon

1.7 Trace d'exécution d'une cascade

Énoncé. Pour note = 13.5, tracer l'algorithme des mentions ci-dessus.

Trace d'exécution
0 / 5
Instructionnotemention
01···??
02···??
03···??
04···??
05···??

2. Exercices pratiques

Niveau Débutant — Type bac courant

Exercice 1facile
Pair ou impair

Écrire un programme qui lit un entier n et affiche "Pair" si n est divisible par 2, "Impair" sinon. Fournir : Tableau de Déclaration des Objets (T.D.O), algorithme, code Python 3.

Voir le corrigé

T.D.O

n          | Variable / entier  | Nombre saisi

Algorithme

0) Début parite
1) Lire(n)
2) Si n MOD 2 = 0 Alors
       Écrire("Pair")
   Sinon
       Écrire("Impair")
   FinSi
3) Fin parite

Python 3

n = int(input("n = "))
if n % 2 == 0:
    print("Pair")
else:
    print("Impair")

Remarque. L'opérateur MOD en algorithmique correspond à % en Python (reste de la division euclidienne).

Niveau Intermédiaire — Type bac difficile

Exercice 2moyen
Catégorisation d'âge

Lire l'âge d'une personne et afficher sa catégorie :

  • moins de 13 ans → "Enfant",
  • entre 13 et 17 inclus → "Adolescent",
  • entre 18 et 64 inclus → "Adulte",
  • 65 ans ou plus → "Senior".

Refuser les âges négatifs ou supérieurs à 130 en affichant "Âge invalide".

Voir le corrigé
age = int(input("Âge : "))

if age < 0 or age > 130:
    print("Âge invalide")
elif age < 13:
    print("Enfant")
elif age <= 17:
    print("Adolescent")
elif age <= 64:
    print("Adulte")
else:
    print("Senior")

Astuce de relecture. Toujours tester les bornes : 12, 13, 17, 18, 64, 65 doivent tomber dans la bonne catégorie. Une erreur fréquente est de remplacer <= 17 par < 17, ce qui exclut accidentellement les jeunes de 17 ans de la catégorie Adolescent.

Niveau Avancé — Hors bac (bonus)

Exercice 3difficile
Validité d'une date

Écrire un algorithme qui lit trois entiers jour, mois, annee représentant une date, et affiche "Valide" ou "Invalide" selon les règles suivantes :

  • mois doit être entre 1 et 12,
  • jour doit être entre 1 et le nombre maximum de jours du mois donné (31 pour janvier, 28 ou 29 pour février selon que annee est bissextile, 30 ou 31 pour les autres mois),
  • annee doit être strictement positive.

Rappel : une année est bissextile si elle est divisible par 4 et non par 100, OU bien divisible par 400.

Voir le corrigé
jour = int(input("Jour : "))
mois = int(input("Mois : "))
annee = int(input("Année : "))

# Année bissextile ?
bissextile = (annee % 4 == 0 and annee % 100 != 0) or (annee % 400 == 0)

# Nombre de jours du mois
if mois in (1, 3, 5, 7, 8, 10, 12):
    max_jour = 31
elif mois in (4, 6, 9, 11):
    max_jour = 30
elif mois == 2:
    max_jour = 29 if bissextile else 28
else:
    max_jour = 0   # mois invalide

# Validation finale
if annee > 0 and 1 <= mois <= 12 and 1 <= jour <= max_jour:
    print("Valide")
else:
    print("Invalide")

Cas de test à passer mentalement :

EntréeAttendu
29/02/2024Valide (2024 bissextile : 2024 % 4 = 0 et non divisible par 100)
29/02/2023Invalide (2023 non bissextile)
29/02/2000Valide (2000 divisible par 400)
29/02/1900Invalide (divisible par 100 mais pas par 400)
31/04/2026Invalide (avril a 30 jours)
00/01/2026Invalide (jour = 0)

Cet exercice combine opérateurs logiques (and, or), appartenance à un ensemble (in (...)) et calcul conditionnel (x if cond else y). C'est un excellent entraînement pour le bac.


⚠️ Erreurs fréquentes au bac

Avant le quiz, mémorisez ces pièges classiques qui font perdre des points :

  • Erreur 1. = au lieu de == dans une condition Python : c'est la cause N°1 d'erreur compilation.
  • Erreur 2. Ordre des conditions en cascade : tester note ≥ 16 AVANT note ≥ 14, jamais l'inverse, sinon toutes les notes ≥ 14 deviennent « Bien ».
  • Erreur 3. Oublier les parenthèses : Si a ET b > 0 Alors est ambigu. Toujours écrire Si (a > 0) ET (b > 0) Alors.
  • Erreur 4. Sauter le Sinon final quand on doit gérer tous les cas. Si la cascade est exhaustive, c'est OK ; sinon, danger.

3. Quiz de vérification

Conditions et opérateurs (5 questions)

1

Quelle valeur retourne l'expression (5 > 3) ET (2 < 1) ?

2

Quel est l'équivalent Python de l'opérateur de comparaison algorithmique = ?

3

Si note = 17, que fait elif note >= 14: print('Bien') dans une cascade qui teste d'abord note >= 16 ?

4

Combien de branches au minimum a une structure Si sans Sinon ?

5

L'expression NON (a > b) est équivalente à :


En résumé

Avant la leçon suivante (Structures itératives complètes : Pour…Faire), vérifiez que vous savez :

  • ✅ Écrire une expression booléenne avec ≥3 opérateurs sans hésiter sur la priorité,
  • ✅ Construire un Si…Sinon Si… cohérent (sans cas en double, sans trou),
  • ✅ Détecter qu'un test de bornes est faux à la relecture,
  • ✅ Choisir entre Si chaîné et Selon selon la nature de la condition.

Sinon, refaites l'exercice 2 (catégorisation d'âge) en variant les bornes : c'est l'exercice canonique pour s'entraîner.

Bravo d'être arrivé jusqu'ici. Marquez la leçon terminée pour ancrer le progrès.