Aller au contenu

Bases de la programmation - Exercices


Exercice 1 - Variables et affectations

1. Quelle est la valeur de chaque variable après l'exécution de ce code ?

a = 5
b = 3
c = a + b
a = a * 2
d = a - c

2. Quel est le type de chaque variable ci-dessous ?

x = 42
y = 3.14
nom = "Alice"
reussi = True
z = 10 / 2

3. Que va afficher ce code ? Expliquer.

a = 10
b = a
a = 20
print(b)

4. Que va afficher ce code ? Attention aux pièges !

x = 5
y = "5"
print(x == y)
print(type(x), type(y))
Solution

1.

  • a = 5 puis b = 3 puis c = 5 + 3 = 8
  • a = 5 * 2 = 10 (a change de valeur)
  • d = 10 - 8 = 2
  • Valeurs finales : a = 10, b = 3, c = 8, d = 2

2.

  • x : int (nombre entier)
  • y : float (nombre à virgule)
  • nom : str (chaîne de caractères)
  • reussi : bool (booléen)
  • z : float - Attention ! 10 / 2 donne 5.0 (un float), pas 5 (un int). La division / renvoie toujours un float.

3. Le code affiche 10. Quand on écrit b = a, Python copie la valeur de a (10) dans b. Ensuite, modifier a ne change pas b : les deux variables sont indépendantes.

4. Affiche :

  • False - car x est un int et y est un str. Python ne convertit pas automatiquement : 5 != "5".
  • <class 'int'> <class 'str'>

Exercice 2 - Calculs et conversions

1. Écrire un programme qui demande à l'utilisateur un prix en euros et affiche le prix en dollars (1 euro = 1,08 dollar).

2. Écrire un programme qui demande un nombre de secondes et affiche la conversion en heures, minutes et secondes.

3. Que vaut chaque expression ? Répondre sans exécuter, puis vérifier.

a) 7 // 2
b) 7 % 2
c) 7 / 2
d) 2 ** 3 ** 2
e) int(3.9)
f) int("3.9")
g) float("42")
h) str(3.14) + str(2)
Solution

1.

prix_euros = float(input("Prix en euros : "))
prix_dollars = prix_euros * 1.08
print(f"{prix_euros} € = {prix_dollars:.2f} $")

2.

total_secondes = int(input("Nombre de secondes : "))

heures = total_secondes // 3600
reste = total_secondes % 3600
minutes = reste // 60
secondes = reste % 60

print(f"{total_secondes} s = {heures}h {minutes}min {secondes}s")

3.

  • a) 3 - division entière
  • b) 1 - reste de la division (7 = 3 × 2 + 1)
  • c) 3.5 - division classique (résultat float)
  • d) 512 - ** s'évalue de droite à gauche : 3 ** 2 = 9, puis 2 ** 9 = 512
  • e) 3 - int() tronque, il n'arrondit pas
  • f) ValueError ! On ne peut pas convertir directement "3.9" en int. Il faudrait int(float("3.9")).
  • g) 42.0 - conversion en float
  • h) "3.142" - concaténation de deux chaînes

Exercice 3 - Instructions conditionnelles

1. Écrire un programme qui demande l'âge de l'utilisateur et affiche :

  • « Enfant » si l'âge est inférieur à 12
  • « Adolescent » si l'âge est entre 12 et 17 (inclus)
  • « Adulte » si l'âge est 18 ou plus

2. Écrire un programme qui demande trois nombres et affiche le plus grand des trois. Proposer deux méthodes différentes.

3. Écrire un programme qui demande une année et détermine si c'est une année bissextile. Règle : une année est bissextile si elle est divisible par 4, sauf si elle est divisible par 100, à moins qu'elle ne soit aussi divisible par 400.

Solution

1.

age = int(input("Quel est ton âge ? "))

if age < 12:
    print("Enfant")
elif age <= 17:
    print("Adolescent")
else:
    print("Adulte")

2. Deux méthodes :

a = float(input("Premier nombre : "))
b = float(input("Deuxième nombre : "))
c = float(input("Troisième nombre : "))

# Méthode 1 : avec des if/elif/else
if a >= b and a >= c:
    print(f"Le plus grand est {a}")
elif b >= a and b >= c:
    print(f"Le plus grand est {b}")
else:
    print(f"Le plus grand est {c}")

# Méthode 2 : avec la fonction max()
print(f"Le plus grand est {max(a, b, c)}")

3.

annee = int(input("Entrez une année : "))

if annee % 400 == 0:
    print(f"{annee} est bissextile.")
elif annee % 100 == 0:
    print(f"{annee} n'est pas bissextile.")
elif annee % 4 == 0:
    print(f"{annee} est bissextile.")
else:
    print(f"{annee} n'est pas bissextile.")

Variante en une seule condition :

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.")

Exercice 4 - Boucle for

1. Écrire un programme qui affiche les 10 premiers multiples de 7 (7, 14, 21, …, 70).

2. Écrire un programme qui calcule la factorielle d'un nombre n entré par l'utilisateur. Rappel : n! = 1 × 2 × 3 × … × n.

3. Écrire un programme qui affiche un triangle d'étoiles de hauteur n :

*
**
***
****
*****

4. Écrire un programme qui affiche un triangle centré de hauteur n :

    *
   ***
  *****
 *******
*********
Solution

1.

for i in range(1, 11):
    print(7 * i)

Variante avec range(7, 71, 7) :

for m in range(7, 71, 7):
    print(m)

2.

n = int(input("Entrez un nombre : "))
factorielle = 1

for i in range(1, n + 1):
    factorielle *= i

print(f"{n}! = {factorielle}")

3.

n = int(input("Hauteur du triangle : "))

for i in range(1, n + 1):
    print("*" * i)

4.

n = int(input("Hauteur du triangle : "))

for i in range(1, n + 1):
    espaces = " " * (n - i)
    etoiles = "*" * (2 * i - 1)
    print(espaces + etoiles)

Exercice 5 - Boucle while

1. Écrire un programme qui demande un mot de passe à l'utilisateur et redemande tant que le mot de passe n'est pas « SNT2026 ». Afficher le nombre de tentatives à la fin.

2. Écrire un programme qui détermine le plus petit entier n tel que la somme 1 + 2 + 3 + … + n dépasse 1 000.

3. Écrire un programme « jeu de devinette » : l'ordinateur choisit un nombre entre 1 et 100, et l'utilisateur doit le deviner. À chaque tentative, le programme indique « C'est plus » ou « C'est moins ». Afficher le nombre de tentatives à la fin.

Solution

1.

tentatives = 0

while True:
    mot_de_passe = input("Mot de passe : ")
    tentatives += 1
    if mot_de_passe == "SNT2026":
        break
    print("Mot de passe incorrect !")

print(f"Accès autorisé en {tentatives} tentative(s).")

Variante sans break :

mot_de_passe = input("Mot de passe : ")
tentatives = 1

while mot_de_passe != "SNT2026":
    print("Mot de passe incorrect !")
    mot_de_passe = input("Mot de passe : ")
    tentatives += 1

print(f"Accès autorisé en {tentatives} tentative(s).")

2.

n = 0
somme = 0

while somme <= 1000:
    n += 1
    somme += n

print(f"n = {n}, somme = {somme}")
# Résultat : n = 45, somme = 1035

3.

import random

secret = random.randint(1, 100)
tentatives = 0

while True:
    proposition = int(input("Devinez un nombre entre 1 et 100 : "))
    tentatives += 1

    if proposition < secret:
        print("C'est plus !")
    elif proposition > secret:
        print("C'est moins !")
    else:
        print(f"Bravo ! Trouvé en {tentatives} tentative(s).")
        break

Exercice 6 - Fonctions simples

1. Écrire une fonction perimetre_rectangle(longueur, largeur) qui renvoie le périmètre d'un rectangle.

2. Écrire une fonction est_majeur(age) qui renvoie True si l'âge est supérieur ou égal à 18, False sinon. Proposer deux écritures différentes.

3. Écrire une fonction salutation(prenom, heure) qui affiche « Bonjour [prénom] » si l'heure est avant 18h, et « Bonsoir [prénom] » sinon.

4. Écrire une fonction prix_ttc(prix_ht, taux_tva=20) avec un taux de TVA par défaut de 20 %. Tester avec et sans le paramètre.

Solution

1.

def perimetre_rectangle(longueur, largeur):
    return 2 * (longueur + largeur)

print(perimetre_rectangle(5, 3))   # 16
print(perimetre_rectangle(10, 4))  # 28

2. Deux écritures :

# Écriture 1 : avec if/else
def est_majeur(age):
    if age >= 18:
        return True
    else:
        return False

# Écriture 2 : directe (le test est déjà un booléen)
def est_majeur(age):
    return age >= 18

# Les deux donnent le même résultat
print(est_majeur(16))  # False
print(est_majeur(18))  # True

3.

def salutation(prenom, heure):
    if heure < 18:
        print(f"Bonjour {prenom} !")
    else:
        print(f"Bonsoir {prenom} !")

salutation("Alice", 10)   # Bonjour Alice !
salutation("Bob", 20)     # Bonsoir Bob !

4.

def prix_ttc(prix_ht, taux_tva=20):
    return prix_ht * (1 + taux_tva / 100)

print(prix_ttc(100))        # 120.0  (TVA 20 % par défaut)
print(prix_ttc(100, 5.5))   # 105.5  (TVA 5,5 %)
print(prix_ttc(50, 10))     # 55.0   (TVA 10 %)

Exercice 7 - Fonctions avec boucles

1. Écrire une fonction somme_entiers(n) qui renvoie la somme des entiers de 1 à n. Proposer deux variantes : avec une boucle et avec la formule mathématique.

2. Écrire une fonction compter_voyelles(mot) qui renvoie le nombre de voyelles dans un mot.

3. Écrire une fonction puissance(base, exposant) qui calcule base^exposant sans utiliser l'opérateur ** (en utilisant une boucle).

4. Écrire une fonction inverser_chaine(texte) qui renvoie la chaîne inversée. Proposer deux méthodes.

Solution

1. Deux variantes :

# Variante 1 : avec une boucle
def somme_entiers(n):
    somme = 0
    for i in range(1, n + 1):
        somme += i
    return somme

# Variante 2 : avec la formule de Gauss
def somme_entiers(n):
    return n * (n + 1) // 2

print(somme_entiers(10))    # 55
print(somme_entiers(100))   # 5050

2.

def compter_voyelles(mot):
    voyelles = "aeiouyAEIOUYàâéèêëïîôùûüÀÂÉÈÊËÏÎÔÙÛÜ"
    compteur = 0
    for lettre in mot:
        if lettre in voyelles:
            compteur += 1
    return compteur

print(compter_voyelles("Bonjour"))        # 3
print(compter_voyelles("Programmation"))   # 5
print(compter_voyelles("élève"))           # 3

3.

def puissance(base, exposant):
    resultat = 1
    for i in range(exposant):
        resultat *= base
    return resultat

print(puissance(2, 10))   # 1024
print(puissance(3, 4))    # 81
print(puissance(5, 0))    # 1

4. Deux méthodes :

# Méthode 1 : boucle (parcours inversé)
def inverser_chaine(texte):
    resultat = ""
    for i in range(len(texte) - 1, -1, -1):
        resultat += texte[i]
    return resultat

# Méthode 2 : slicing Python (raccourci élégant)
def inverser_chaine(texte):
    return texte[::-1]

print(inverser_chaine("Python"))   # nohtyP
print(inverser_chaine("kayak"))    # kayak (palindrome !)

Exercice 8 - Trouver les erreurs !

Pour chaque programme, identifier l'erreur, nommer son type (SyntaxError, TypeError, etc.) et proposer une correction.

1.

age = input("Ton âge : ")
if age >= 18:
    print("Majeur")

2.

def carre(x)
    return x * x

3.

notes = [15, 12, 18, 9]
print(notes[4])

4.

for i in range(5):
print(i)

5.

prenom = "Alice"
print("Bonjour " + prenom + " tu as " + 16 + " ans")

6.

def moyenne(a, b):
    resultat = (a + b) / 2

print(moyenne(10, 14) * 2)

7.

mot = input("Un mot : ")
if mot = "Python":
    print("Bonne réponse !")

8.

x = 10
y = 0
print(x / y)
Solution

1. TypeError - input() renvoie une chaîne (str), on ne peut pas comparer "16" >= 18.

age = int(input("Ton âge : "))   # Ajout de int()

2. SyntaxError - il manque le deux-points : après def carre(x).

def carre(x):
    return x * x

3. IndexError - la liste a 4 éléments, les indices valides sont 0, 1, 2, 3. L'indice 4 n'existe pas.

print(notes[3])    # Dernier élément
print(notes[-1])   # Ou avec un indice négatif

4. IndentationError - le print(i) n'est pas indenté à l'intérieur du for.

for i in range(5):
    print(i)       # 4 espaces d'indentation

5. TypeError - on ne peut pas concaténer un int (16) avec des str.

# Correction 1 : convertir en str
print("Bonjour " + prenom + " tu as " + str(16) + " ans")

# Correction 2 : utiliser une f-string (recommandé)
print(f"Bonjour {prenom} tu as 16 ans")

6. TypeError - la fonction ne renvoie rien (None) car il n'y a pas de return. None * 2 provoque l'erreur.

def moyenne(a, b):
    return (a + b) / 2    # Ajout de return

7. SyntaxError - on a utilisé = (affectation) au lieu de == (comparaison).

if mot == "Python":

8. ZeroDivisionError - division par zéro.

if y != 0:
    print(x / y)
else:
    print("Impossible de diviser par zéro !")

Exercice 9 - QCM

1. Quelle est la valeur de x après : x = 5 puis x = x + 3 ?

  • a) 5
  • b) 3
  • c) 8
  • d) Erreur

2. Combien de fois la boucle for i in range(1, 10): s'exécute-t-elle ?

  • a) 8
  • b) 9
  • c) 10
  • d) 11

3. Que renvoie 7 % 3 ?

  • a) 2
  • b) 1
  • c) 2.33
  • d) 3

4. Quelle est la différence entre = et == en Python ?

  • a) Aucune différence
  • b) = compare, == affecte
  • c) = affecte, == compare
  • d) == n'existe pas en Python

5. Quel mot-clé permet de renvoyer une valeur depuis une fonction ?

  • a) print
  • b) def
  • c) return
  • d) give

6. Que vaut type(10 / 5) ?

  • a) <class 'int'>
  • b) <class 'float'>
  • c) <class 'str'>
  • d) <class 'bool'>

7. Quelle est la sortie de ce code ?

for i in range(3):
    if i == 1:
        continue
    print(i, end=" ")
  • a) 0 1 2
  • b) 0 2
  • c) 1
  • d) 0 1

8. Que se passe-t-il si on écrit int("3.14") ?

  • a) On obtient 3
  • b) On obtient 3.14
  • c) ValueError
  • d) TypeError
Solution

1. c) 8 - On ajoute 3 à la valeur actuelle de x (5), donc x vaut 8.

2. b) 9 - range(1, 10) génère les valeurs 1, 2, 3, …, 9 (la borne 10 est exclue).

3. b) 1 - L'opérateur % donne le reste de la division entière : 7 = 3 × 2 + 1.

4. c) = est l'opérateur d'affectation (stocker une valeur), == est l'opérateur de comparaison (tester l'égalité).

5. c) return - Il renvoie une valeur au programme appelant.

6. b) <class 'float'> - La division / renvoie toujours un float, même si le résultat est entier (10 / 5 = 2.0).

7. b) 0 2 - continue saute le tour i == 1, donc seuls 0 et 2 sont affichés.

8. c) ValueError - int() ne peut pas convertir directement une chaîne contenant un point. Il faudrait int(float("3.14")).


Exercice 10 - Programme complet : calculatrice

Écrire un programme qui :

  1. Demande deux nombres à l'utilisateur.
  2. Affiche un menu : addition, soustraction, multiplication, division.
  3. Demande l'opération souhaitée.
  4. Affiche le résultat.
  5. Gère le cas de la division par zéro.
  6. Bonus : proposer de refaire un calcul (boucle).
Solution
def calculer(a, b, operation):
    if operation == "+":
        return a + b
    elif operation == "-":
        return a - b
    elif operation == "*":
        return a * b
    elif operation == "/":
        if b == 0:
            return "Erreur : division par zéro !"
        return a / b
    else:
        return "Opération inconnue."

# Programme principal avec boucle
continuer = "oui"

while continuer == "oui":
    a = float(input("Premier nombre : "))
    b = float(input("Deuxième nombre : "))

    print("\nOpérations disponibles :")
    print("  + : addition")
    print("  - : soustraction")
    print("  * : multiplication")
    print("  / : division")

    op = input("\nChoisissez une opération : ")

    resultat = calculer(a, b, op)
    print(f"\n{a} {op} {b} = {resultat}")

    continuer = input("\nRefaire un calcul ? (oui/non) : ")

print("Au revoir !")

Exercice 11 - Programme complet : statistiques d'une liste de notes

Écrire un programme qui :

  1. Demande combien de notes l'utilisateur souhaite saisir.
  2. Lit les notes une par une (en vérifiant qu'elles sont entre 0 et 20).
  3. Affiche : le nombre de notes, la moyenne, la note la plus haute, la note la plus basse et le nombre de notes au-dessus de la moyenne.
Solution
def saisir_note():
    while True:
        note = float(input("  Note (0-20) : "))
        if 0 <= note <= 20:
            return note
        print("  Erreur : la note doit être entre 0 et 20.")

# Programme principal
n = int(input("Combien de notes ? "))
notes = []

for i in range(n):
    print(f"\nNote {i + 1} :")
    notes.append(saisir_note())

# Calculs
moyenne = sum(notes) / len(notes)
maximum = max(notes)
minimum = min(notes)

au_dessus = 0
for note in notes:
    if note >= moyenne:
        au_dessus += 1

# Affichage
print(f"\n{'='*30}")
print(f"  Nombre de notes    : {n}")
print(f"  Moyenne            : {moyenne:.2f}")
print(f"  Meilleure note     : {maximum}")
print(f"  Plus basse note    : {minimum}")
print(f"  Au-dessus de la moyenne : {au_dessus}")
print(f"{'='*30}")

Exercice 12 - Analyser du code (lecture de code)

Sans exécuter les programmes, prédire ce qu'ils affichent. Puis vérifier.

1.

for i in range(1, 6):
    if i % 2 == 0:
        print(i, end=" ")

2.

x = 1
while x < 100:
    x = x * 2
print(x)

3.

def mystere(n):
    resultat = 0
    while n > 0:
        resultat += n % 10
        n = n // 10
    return resultat

print(mystere(1234))

4.

mot = "Informatique"
resultat = ""
for lettre in mot:
    if lettre.isupper():
        resultat += lettre
print(resultat)
Solution

1. Affiche 2 4 - Seuls les nombres pairs (où i % 2 == 0) sont affichés.

2. Affiche 128 - x double à chaque tour : 1, 2, 4, 8, 16, 32, 64, 128. Quand x = 128, la condition x < 100 est fausse et la boucle s'arrête.

3. Affiche 10 - La fonction calcule la somme des chiffres de n : 1 + 2 + 3 + 4 = 10. À chaque tour, n % 10 extrait le dernier chiffre et n // 10 le supprime.

4. Affiche I - La méthode isupper() teste si une lettre est en majuscule. Seul le « I » de « Informatique » est en majuscule.


Exercice 13 - Écrire la même chose autrement

Pour chaque programme, réécrire le code en utilisant une méthode différente qui produit le même résultat.

1. Réécrire avec un while :

for i in range(10):
    print(i * i)

2. Réécrire sans utiliser max() :

print(max(3, 7, 2, 9, 1))

3. Réécrire avec une f-string :

nom = "Alice"
age = 16
print("Bonjour " + nom + ", tu as " + str(age) + " ans.")

4. Réécrire avec break :

mot_de_passe = input("Mot de passe : ")
while mot_de_passe != "abc123":
    mot_de_passe = input("Réessayez : ")
Solution

1.

i = 0
while i < 10:
    print(i * i)
    i += 1

2.

nombres = [3, 7, 2, 9, 1]
maximum = nombres[0]
for n in nombres:
    if n > maximum:
        maximum = n
print(maximum)

3.

nom = "Alice"
age = 16
print(f"Bonjour {nom}, tu as {age} ans.")

4.

while True:
    mot_de_passe = input("Mot de passe : ")
    if mot_de_passe == "abc123":
        break
    print("Incorrect, réessayez.")

🧪 Activité - Le chiffrement de César

Le chiffrement de César est une méthode de cryptage utilisée par Jules César. Chaque lettre du message est décalée d'un certain nombre de positions dans l'alphabet. Par exemple, avec un décalage de 3 : A → D, B → E, …, Z → C.

1. Écrire une fonction chiffrer_lettre(lettre, decalage) qui renvoie la lettre chiffrée (uniquement pour les lettres minuscules, les autres caractères restent inchangés).

2. Écrire une fonction chiffrer_message(message, decalage) qui chiffre un message complet.

3. Écrire une fonction dechiffrer_message(message, decalage) qui déchiffre un message.

4. Tester : chiffrer « bonjour » avec un décalage de 3, puis déchiffrer le résultat.

Solution
def chiffrer_lettre(lettre, decalage):
    if "a" <= lettre <= "z":
        code = ord(lettre) - ord("a")
        nouveau_code = (code + decalage) % 26
        return chr(nouveau_code + ord("a"))
    elif "A" <= lettre <= "Z":
        code = ord(lettre) - ord("A")
        nouveau_code = (code + decalage) % 26
        return chr(nouveau_code + ord("A"))
    else:
        return lettre

def chiffrer_message(message, decalage):
    resultat = ""
    for lettre in message:
        resultat += chiffrer_lettre(lettre, decalage)
    return resultat

def dechiffrer_message(message, decalage):
    return chiffrer_message(message, -decalage)

# Tests
message_secret = chiffrer_message("bonjour", 3)
print(f"Chiffré : {message_secret}")       # erqmrxu

message_clair = dechiffrer_message(message_secret, 3)
print(f"Déchiffré : {message_clair}")       # bonjour

Explications :

  • ord("a") donne le code ASCII de « a » (97)
  • chr(97) donne le caractère « a »
  • Le % 26 permet de « boucler » l'alphabet (après z, on revient à a)

🎯 Projet final - Jeu du pendu

Créer un jeu du pendu en mode texte :

  1. Le programme choisit un mot au hasard dans une liste prédéfinie.
  2. Le joueur propose des lettres une par une.
  3. Le programme affiche le mot avec les lettres trouvées et des _ pour les lettres manquantes.
  4. Le joueur a droit à 7 erreurs maximum.
  5. Le programme annonce la victoire ou la défaite.

Contraintes :

  • Utiliser au moins deux fonctions
  • Gérer le cas où le joueur propose une lettre déjà tentée
  • Afficher le nombre d'erreurs restantes
Solution
import random

def choisir_mot():
    mots = ["python", "ordinateur", "programme", "variable",
            "boucle", "fonction", "algorithme", "internet",
            "reseau", "donnees", "binaire", "pixel"]
    return random.choice(mots)

def afficher_mot(mot, lettres_trouvees):
    affichage = ""
    for lettre in mot:
        if lettre in lettres_trouvees:
            affichage += lettre + " "
        else:
            affichage += "_ "
    return affichage

def mot_complet(mot, lettres_trouvees):
    for lettre in mot:
        if lettre not in lettres_trouvees:
            return False
    return True

# Programme principal
mot_secret = choisir_mot()
lettres_trouvees = []
lettres_essayees = []
erreurs_max = 7
erreurs = 0

print("=" * 40)
print("       JEU DU PENDU")
print("=" * 40)

while erreurs < erreurs_max and not mot_complet(mot_secret, lettres_trouvees):
    print(f"\n  Mot : {afficher_mot(mot_secret, lettres_trouvees)}")
    print(f"  Erreurs : {erreurs}/{erreurs_max}")
    print(f"  Lettres essayées : {', '.join(lettres_essayees)}")

    lettre = input("\n  Proposez une lettre : ").lower()

    if len(lettre) != 1 or not lettre.isalpha():
        print("  Entrez une seule lettre !")
        continue

    if lettre in lettres_essayees:
        print(f"  Vous avez déjà essayé '{lettre}' !")
        continue

    lettres_essayees.append(lettre)

    if lettre in mot_secret:
        lettres_trouvees.append(lettre)
        print(f"  ✓ Bien joué ! '{lettre}' est dans le mot.")
    else:
        erreurs += 1
        print(f"  ✗ Raté ! '{lettre}' n'est pas dans le mot.")

# Résultat final
print("\n" + "=" * 40)
if mot_complet(mot_secret, lettres_trouvees):
    print(f"  🎉 Bravo ! Le mot était : {mot_secret}")
else:
    print(f"  💀 Perdu ! Le mot était : {mot_secret}")
print("=" * 40)