Exercices – Flux conditionnel (if-else)
Aide-mémoire : les flux conditionnels
Section intitulée « Aide-mémoire : les flux conditionnels »Avant de commencer les exercices, voici un rappel des notions que tu utiliseras.
Opérateurs de comparaison
Section intitulée « Opérateurs de comparaison »Les comparaisons retournent un booléen : True ou False.
| Opérateur | Signification | Exemple | Résultat |
|---|---|---|---|
== | Égal à | 5 == 5 | True |
!= | Différent de | 5 != 3 | True |
< | Inférieur à | 3 < 5 | True |
> | Supérieur à | 5 > 5 | False |
<= | Inférieur ou égal | 5 <= 5 | True |
>= | Supérieur ou égal | 3 >= 5 | False |
Structures de base
Section intitulée « Structures de base »# if seul : exécute le bloc SI la condition est vraieif condition: instructions
# if-else : deux chemins possiblesif condition: instructions_si_vraielse: instructions_si_faux
# if-elif-else : plusieurs conditions testées dans l'ordreif condition_1: instructions_1elif condition_2: instructions_2elif condition_3: instructions_3else: instructions_par_defautOpérateurs logiques
Section intitulée « Opérateurs logiques »| Opérateur | Signification | Exemple | Résultat |
|---|---|---|---|
and | Les deux conditions sont vraies | 5 > 3 and 2 < 4 | True |
or | Au moins une condition est vraie | 5 > 3 or 2 > 4 | True |
not | Inverse la condition | not 5 > 3 | False |
Niveau 1 — Le if simple
Section intitulée « Niveau 1 — Le if simple »Exercice 1.1 : Mot de passe
Section intitulée « Exercice 1.1 : Mot de passe »Écris un programme mot_de_passe.py qui demande un mot de passe et affiche « Accès autorisé » seulement si le mot de passe est python123.
Exemple d’exécution (bon mot de passe) :
Mot de passe : python123Accès autoriséExemple d’exécution (mauvais mot de passe) :
Mot de passe : hello💡 Indice
Utilise == pour comparer deux chaînes. Pas besoin de else ici : si le mot de passe est mauvais, on n’affiche simplement rien.
🔑 Solution
mot_de_passe = input("Mot de passe : ")
if mot_de_passe == "python123": print("Accès autorisé")Exercice 1.2 : Nombre positif
Section intitulée « Exercice 1.2 : Nombre positif »Écris un programme positif.py qui demande un nombre et affiche « Ce nombre est positif » seulement si le nombre est strictement supérieur à zéro.
Exemple d’exécution :
Entre un nombre : 7Ce nombre est positifEntre un nombre : -3Entre un nombre : 0🔑 Solution
nombre = float(input("Entre un nombre : "))
if nombre > 0: print("Ce nombre est positif")Exercice 1.3 : Nombre pair
Section intitulée « Exercice 1.3 : Nombre pair »Écris un programme pair.py qui demande un nombre entier et affiche « Ce nombre est pair » si c’est le cas.
Exemple d’exécution :
Entre un nombre entier : 8Ce nombre est pairEntre un nombre entier : 7💡 Indice
Un nombre est pair si le reste de sa division par 2 est égal à 0. Quel opérateur donne le reste d’une division ?
🔑 Solution
nombre = int(input("Entre un nombre entier : "))
if nombre % 2 == 0: print("Ce nombre est pair")Niveau 2 — Le if-else
Section intitulée « Niveau 2 — Le if-else »Exercice 2.1 : Majeur ou mineur
Section intitulée « Exercice 2.1 : Majeur ou mineur »Écris un programme age.py qui demande l’âge de l’utilisateur et affiche s’il est majeur (18 ans ou plus) ou mineur.
Exemple d’exécution :
Quel est ton âge ? 22Tu es majeur(e).Quel est ton âge ? 15Tu es mineur(e).🔑 Solution
age = int(input("Quel est ton âge ? "))
if age >= 18: print("Tu es majeur(e).")else: print("Tu es mineur(e).")Exercice 2.2 : Réussite ou échec
Section intitulée « Exercice 2.2 : Réussite ou échec »Au CÉGEP, la note de passage est de 60 %. Écris un programme note.py qui demande une note et affiche si l’étudiant a réussi ou échoué.
Exemple d’exécution :
Note obtenue (%) : 72Résultat : RéussiteNote obtenue (%) : 45Résultat : Échec🔑 Solution
note = float(input("Note obtenue (%) : "))
if note >= 60: print("Résultat : Réussite")else: print("Résultat : Échec")Exercice 2.3 : Valeur absolue
Section intitulée « Exercice 2.3 : Valeur absolue »Écris un programme valeur_absolue.py qui demande un nombre et affiche sa valeur absolue sans utiliser la fonction abs(). Rappel : la valeur absolue d’un nombre négatif, c’est son opposé.
Exemple d’exécution :
Entre un nombre : -15La valeur absolue est : 15Entre un nombre : 8La valeur absolue est : 8💡 Indice
Si le nombre est négatif, multiplie-le par -1 (ou utilise l’opérateur unaire -). Sinon, garde-le tel quel.
🔑 Solution
nombre = float(input("Entre un nombre : "))
if nombre < 0: resultat = -nombreelse: resultat = nombre
print("La valeur absolue est :", resultat)Exercice 2.4 : Divisibilité
Section intitulée « Exercice 2.4 : Divisibilité »Écris un programme divisible.py qui demande deux nombres entiers et indique si le premier est divisible par le second.
Exemple d’exécution :
Premier nombre : 15Deuxième nombre : 515 est divisible par 5Premier nombre : 15Deuxième nombre : 415 n'est pas divisible par 4🔑 Solution
a = int(input("Premier nombre : "))b = int(input("Deuxième nombre : "))
if a % b == 0: print(a, "est divisible par", b)else: print(a, "n'est pas divisible par", b)Niveau 3 — Le if-elif-else
Section intitulée « Niveau 3 — Le if-elif-else »Exercice 3.1 : Signe d’un nombre
Section intitulée « Exercice 3.1 : Signe d’un nombre »Écris un programme signe.py qui demande un nombre et affiche s’il est positif, négatif ou nul.
Exemple d’exécution :
Entre un nombre : 7PositifEntre un nombre : -3NégatifEntre un nombre : 0Nul💡 Indice
Il y a trois cas possibles, donc il te faut un if, un elif et un else.
🔑 Solution
nombre = float(input("Entre un nombre : "))
if nombre > 0: print("Positif")elif nombre < 0: print("Négatif")else: print("Nul")Exercice 3.2 : Mention au bulletin
Section intitulée « Exercice 3.2 : Mention au bulletin »Au CÉGEP, les mentions sont attribuées selon la note :
| Note | Mention |
|---|---|
| 90 % et plus | Excellent |
| 80 % à 89 % | Très bien |
| 70 % à 79 % | Bien |
| 60 % à 69 % | Passable |
| Moins de 60 % | Échec |
Écris un programme mention.py qui demande une note et affiche la mention correspondante.
Exemple d’exécution :
Note obtenue (%) : 85
Note : 85.00 %Mention : Très bien💡 Indice
Commence par tester la condition la plus élevée (90 et plus), puis descends. Grâce au elif, tu n’as pas besoin de tester les deux bornes de chaque intervalle.
🔑 Solution
note = float(input("Note obtenue (%) : "))
if note >= 90: mention = "Excellent"elif note >= 80: mention = "Très bien"elif note >= 70: mention = "Bien"elif note >= 60: mention = "Passable"else: mention = "Échec"
print()print("Note :", format(note, ".2f"), "%")print("Mention :", mention)Exercice 3.3 : Tarif de transport
Section intitulée « Exercice 3.3 : Tarif de transport »Le tarif du transport en commun à Montréal dépend de l’âge :
| Âge | Tarif |
|---|---|
| 0 à 5 ans | Gratuit |
| 6 à 12 ans | 1,75 $ |
| 13 à 17 ans | 2,50 $ |
| 18 à 64 ans | 3,75 $ |
| 65 ans et plus | 1,00 $ |
Écris un programme transport.py qui demande l’âge et affiche le tarif.
Exemple d’exécution :
Âge du passager : 35
Tarif : 3.75 $Âge du passager : 3
Tarif : Gratuit🔑 Solution
age = int(input("Âge du passager : "))
if age <= 5: tarif = 0elif age <= 12: tarif = 1.75elif age <= 17: tarif = 2.50elif age <= 64: tarif = 3.75else: tarif = 1.00
print()if tarif == 0: print("Tarif : Gratuit")else: print("Tarif :", format(tarif, ".2f"), "$")Exercice 3.4 : Calculatrice simple
Section intitulée « Exercice 3.4 : Calculatrice simple »Écris un programme calculatrice.py qui demande deux nombres et une opération (+, -, *, /) puis affiche le résultat.
Exemple d’exécution :
Premier nombre : 15Opération (+, -, *, /) : *Deuxième nombre : 4
Résultat : 15.0 * 4.0 = 60.00Premier nombre : 10Opération (+, -, *, /) : /Deuxième nombre : 0
Erreur : division par zéro impossible💡 Indice
Pour la division, pense à vérifier que le deuxième nombre n’est pas zéro avant de diviser.
🔑 Solution
a = float(input("Premier nombre : "))operation = input("Opération (+, -, *, /) : ")b = float(input("Deuxième nombre : "))
print()
if operation == "+": resultat = a + b print("Résultat :", a, "+", b, "=", format(resultat, ".2f"))elif operation == "-": resultat = a - b print("Résultat :", a, "-", b, "=", format(resultat, ".2f"))elif operation == "*": resultat = a * b print("Résultat :", a, "*", b, "=", format(resultat, ".2f"))elif operation == "/": if b == 0: print("Erreur : division par zéro impossible") else: resultat = a / b print("Résultat :", a, "/", b, "=", format(resultat, ".2f"))else: print("Opération non reconnue")Niveau 4 — Opérateurs logiques (and, or, not)
Section intitulée « Niveau 4 — Opérateurs logiques (and, or, not) »Exercice 4.1 : Intervalle
Section intitulée « Exercice 4.1 : Intervalle »Écris un programme intervalle.py qui demande un nombre et vérifie s’il se trouve dans l’intervalle [0, 100] (entre 0 et 100 inclusivement).
Exemple d’exécution :
Entre un nombre : 7575.0 est dans l'intervalle [0, 100]Entre un nombre : 150150.0 est en dehors de l'intervalle [0, 100]💡 Indice
Un nombre est dans l’intervalle [0, 100] s’il est à la fois supérieur ou égal à 0 et inférieur ou égal à 100. Quel opérateur logique signifie « les deux conditions sont vraies » ?
🔑 Solution
nombre = float(input("Entre un nombre : "))
if nombre >= 0 and nombre <= 100: print(nombre, "est dans l'intervalle [0, 100]")else: print(nombre, "est en dehors de l'intervalle [0, 100]")Exercice 4.2 : Année bissextile
Section intitulée « Exercice 4.2 : Année bissextile »Une année est bissextile si :
- Elle est divisible par 4, sauf si elle est divisible par 100
- Mais les années divisibles par 400 sont quand même bissextiles
Exemples : 2024 est bissextile, 1900 ne l’est pas, 2000 l’est.
Écris un programme bissextile.py qui demande une année et indique si elle est bissextile.
Exemple d’exécution :
Année : 20242024 est une année bissextileAnnée : 19001900 n'est pas une année bissextileAnnée : 20002000 est une année bissextile💡 Indice
Traduis les règles en conditions Python :
- Divisible par 400 → bissextile
- Divisible par 100 (mais pas par 400) → pas bissextile
- Divisible par 4 (mais pas par 100) → bissextile
- Sinon → pas bissextile
Tu peux aussi combiner le tout en une seule condition avec and, or et des parenthèses.
🔑 Solution
Version avec if-elif-else (plus lisible) :
annee = int(input("Année : "))
if annee % 400 == 0: print(annee, "est une année bissextile")elif annee % 100 == 0: print(annee, "n'est pas une année bissextile")elif annee % 4 == 0: print(annee, "est une année bissextile")else: print(annee, "n'est pas une année bissextile")Version avec une seule condition :
annee = int(input("Année : "))
if (annee % 4 == 0 and annee % 100 != 0) or annee % 400 == 0: print(annee, "est une année bissextile")else: print(annee, "n'est pas une année bissextile")Exercice 4.3 : Droit de vote
Section intitulée « Exercice 4.3 : Droit de vote »Pour voter au Québec, il faut :
- Avoir 18 ans ou plus
- Être citoyen canadien
Écris un programme vote.py qui demande l’âge et la citoyenneté, puis indique si la personne peut voter.
Exemple d’exécution :
Quel est ton âge ? 22Es-tu citoyen(ne) canadien(ne) ? (oui/non) : oui
Tu as le droit de vote.Quel est ton âge ? 22Es-tu citoyen(ne) canadien(ne) ? (oui/non) : non
Tu n'as pas le droit de vote.Quel est ton âge ? 16Es-tu citoyen(ne) canadien(ne) ? (oui/non) : oui
Tu n'as pas le droit de vote.🔑 Solution
age = int(input("Quel est ton âge ? "))citoyen = input("Es-tu citoyen(ne) canadien(ne) ? (oui/non) : ")
print()
if age >= 18 and citoyen == "oui": print("Tu as le droit de vote.")else: print("Tu n'as pas le droit de vote.")Exercice 4.4 : Saison de l’année
Section intitulée « Exercice 4.4 : Saison de l’année »Écris un programme saison.py qui demande un numéro de mois (1 à 12) et affiche la saison correspondante.
| Mois | Saison |
|---|---|
| 3, 4, 5 | Printemps |
| 6, 7, 8 | Été |
| 9, 10, 11 | Automne |
| 12, 1, 2 | Hiver |
Exemple d’exécution :
Numéro du mois (1-12) : 7ÉtéNuméro du mois (1-12) : 11Automne💡 Indice
Utilise or pour regrouper les mois d’une même saison. Par exemple, le printemps c’est quand mois == 3 or mois == 4 or mois == 5.
🔑 Solution
mois = int(input("Numéro du mois (1-12) : "))
if mois == 3 or mois == 4 or mois == 5: print("Printemps")elif mois == 6 or mois == 7 or mois == 8: print("Été")elif mois == 9 or mois == 10 or mois == 11: print("Automne")elif mois == 12 or mois == 1 or mois == 2: print("Hiver")else: print("Mois invalide")Niveau 5 — Problèmes appliqués
Section intitulée « Niveau 5 — Problèmes appliqués »Exercice 5.1 : Facture avec rabais
Section intitulée « Exercice 5.1 : Facture avec rabais »Un magasin offre un rabais selon le montant d’achat :
| Montant | Rabais |
|---|---|
| Moins de 50 $ | Aucun rabais |
| 50 $ à 99.99 $ | 10 % |
| 100 $ à 199.99 $ | 15 % |
| 200 $ et plus | 20 % |
Écris un programme rabais.py qui demande le montant d’achat et affiche le rabais, le montant du rabais et le total à payer.
Exemple d’exécution :
=== FACTURE AVEC RABAIS ===Montant d'achat ($) : 150
Sous-total : 150.00 $Rabais (15%) : 22.50 $Total à payer : 127.50 $=== FACTURE AVEC RABAIS ===Montant d'achat ($) : 30
Sous-total : 30.00 $Aucun rabais applicable.Total à payer : 30.00 $🔑 Solution
print("=== FACTURE AVEC RABAIS ===")
montant = float(input("Montant d'achat ($) : "))
if montant >= 200: taux_rabais = 0.20elif montant >= 100: taux_rabais = 0.15elif montant >= 50: taux_rabais = 0.10else: taux_rabais = 0
rabais = round(montant * taux_rabais, 2)total = montant - rabais
print()print("Sous-total :", format(montant, ".2f"), "$")
if taux_rabais > 0: pourcentage = int(taux_rabais * 100) print("Rabais (", pourcentage, "%) :", format(rabais, ".2f"), "$")else: print("Aucun rabais applicable.")
print("Total à payer :", format(total, ".2f"), "$")Exercice 5.2 : Impôt simplifié
Section intitulée « Exercice 5.2 : Impôt simplifié »Voici une table d’imposition simplifiée pour le Québec :
| Revenu imposable | Taux |
|---|---|
| 0 $ à 49,999 $ | 15 % |
| 50 000 $ à 99,999 $ | 20 % |
| 100 000 $ à 199,999 $ | 24 % |
| 200 000 $ et plus | 26 % |
Écris un programme impot.py qui demande le revenu et affiche le taux, le montant d’impôt et le revenu net.
Exemple d’exécution :
=== CALCUL D'IMPÔT SIMPLIFIÉ ===Revenu annuel ($) : 75000
Revenu : 75,000.00 $Taux d'impôt : 20 %Impôt à payer: 15,000.00 $Revenu net : 60,000.00 $🔑 Solution
print("=== CALCUL D'IMPÔT SIMPLIFIÉ ===")
revenu = float(input("Revenu annuel ($) : "))
if revenu >= 200000: taux = 0.26elif revenu >= 100000: taux = 0.24elif revenu >= 50000: taux = 0.20else: taux = 0.15
impot = round(revenu * taux, 2)revenu_net = revenu - impot
print()print("Revenu :", format(revenu, ",.2f"), "$")print("Taux d'impôt :", int(taux * 100), "%")print("Impôt à payer:", format(impot, ",.2f"), "$")print("Revenu net :", format(revenu_net, ",.2f"), "$")Exercice 5.3 : Pierre, papier, ciseaux
Section intitulée « Exercice 5.3 : Pierre, papier, ciseaux »Écris un programme ppc.py pour jouer à Pierre-Papier-Ciseaux contre l’ordinateur.
L’ordinateur choisit toujours pierre (on verra comment le rendre aléatoire plus tard).
Les choix sont représentés par des nombres :
- 1 = Pierre
- 2 = Papier
- 3 = Ciseaux
Règles : Pierre bat Ciseaux, Ciseaux bat Papier, Papier bat Pierre.
Exemple d’exécution :
=== PIERRE, PAPIER, CISEAUX ===1 = Pierre, 2 = Papier, 3 = CiseauxTon choix : 2
Toi : PapierOrdi : PierreRésultat : Tu gagnes !=== PIERRE, PAPIER, CISEAUX ===1 = Pierre, 2 = Papier, 3 = CiseauxTon choix : 1
Toi : PierreOrdi : PierreRésultat : Égalité !💡 Indice
Commence par déterminer le nom du choix du joueur avec un if-elif-else. Ensuite, compare le choix du joueur (1, 2 ou 3) avec celui de l’ordi (toujours 1) pour déterminer le résultat.
🔑 Solution
print("=== PIERRE, PAPIER, CISEAUX ===")print("1 = Pierre, 2 = Papier, 3 = Ciseaux")
joueur = int(input("Ton choix : "))ordi = 1 # L'ordi choisit toujours pierre
# Déterminer les noms des choixif joueur == 1: nom_joueur = "Pierre"elif joueur == 2: nom_joueur = "Papier"else: nom_joueur = "Ciseaux"
nom_ordi = "Pierre" # L'ordi joue toujours pierre
# Déterminer le résultatif joueur == ordi: resultat = "Égalité !"elif joueur == 1 and ordi == 3: resultat = "Tu gagnes !"elif joueur == 2 and ordi == 1: resultat = "Tu gagnes !"elif joueur == 3 and ordi == 2: resultat = "Tu gagnes !"else: resultat = "Tu perds !"
print()print("Toi :", nom_joueur)print("Ordi :", nom_ordi)print("Résultat :", resultat)Niveau 6 — Défis
Section intitulée « Niveau 6 — Défis »Exercice 6.1 : Validateur de triangle
Section intitulée « Exercice 6.1 : Validateur de triangle »Trois longueurs peuvent former un triangle seulement si chaque côté est strictement inférieur à la somme des deux autres (inégalité triangulaire).
Si les longueurs forment un triangle valide, le programme doit aussi indiquer le type :
- Équilatéral : les trois côtés sont égaux
- Isocèle : exactement deux côtés sont égaux
- Scalène : les trois côtés sont différents
Exemple d’exécution :
=== VALIDATEUR DE TRIANGLE ===Côté a : 5Côté b : 5Côté c : 8
Triangle valide : Isocèle=== VALIDATEUR DE TRIANGLE ===Côté a : 1Côté b : 2Côté c : 10
Ces longueurs ne forment pas un triangle.💡 Indice
Vérifie d’abord l’inégalité triangulaire avec and :
a < b + cb < a + cc < a + b
Les trois conditions doivent être vraies en même temps.
🔑 Solution
print("=== VALIDATEUR DE TRIANGLE ===")
a = float(input("Côté a : "))b = float(input("Côté b : "))c = float(input("Côté c : "))
print()
if a < b + c and b < a + c and c < a + b: if a == b and b == c: print("Triangle valide : Équilatéral") elif a == b or b == c or a == c: print("Triangle valide : Isocèle") else: print("Triangle valide : Scalène")else: print("Ces longueurs ne forment pas un triangle.")Exercice 6.2 : Résolution d’équation du second degré
Section intitulée « Exercice 6.2 : Résolution d’équation du second degré »L’équation peut avoir 0, 1 ou 2 solutions réelles selon la valeur du discriminant .
| Discriminant | Nombre de solutions | Formule |
|---|---|---|
| 2 solutions | ||
| 1 solution (double) | ||
| Aucune solution réelle | — |
Écris un programme equation.py qui demande les coefficients , et , puis affiche le discriminant et les solutions.
Exemple d’exécution (2 solutions) :
=== ÉQUATION DU SECOND DEGRÉ ===Coefficient a : 1Coefficient b : -5Coefficient c : 6
Discriminant : 1.00Deux solutions : x1 = 3.00 x2 = 2.00Exemple d’exécution (aucune solution) :
=== ÉQUATION DU SECOND DEGRÉ ===Coefficient a : 1Coefficient b : 0Coefficient c : 1
Discriminant : -4.00Aucune solution réelle.💡 Indice
N’oublie pas de vérifier que a n’est pas égal à 0 (sinon ce n’est pas une équation du second degré !).
🔑 Solution
import math
print("=== ÉQUATION DU SECOND DEGRÉ ===")
a = float(input("Coefficient a : "))b = float(input("Coefficient b : "))c = float(input("Coefficient c : "))
print()
if a == 0: print("Ce n'est pas une équation du second degré (a = 0).")else: discriminant = b ** 2 - 4 * a * c print("Discriminant :", format(discriminant, ".2f"))
if discriminant > 0: x1 = (-b + math.sqrt(discriminant)) / (2 * a) x2 = (-b - math.sqrt(discriminant)) / (2 * a) print("Deux solutions :") print(" x1 =", format(x1, ".2f")) print(" x2 =", format(x2, ".2f")) elif discriminant == 0: x = -b / (2 * a) print("Une solution double :") print(" x =", format(x, ".2f")) else: print("Aucune solution réelle.")