Python

Série d’Exercices de Programmation python avec un Exercice Type

Voici une série d’exercices de programmation en Python, classés par niveau de difficulté, pour renforcer vos compétences.


Débutant : Bases de Python

1. Affichage simple

Écrivez un programme qui affiche le message :

print("Bienvenue en programmation Python !")

2. Variables et Entrées utilisateur

Demandez à l’utilisateur son nom et affichez un message personnalisé.

nom = input("Entrez votre nom : ")
print(f"Bonjour {nom}, bienvenue en Python !")

3. Opérations mathématiques

Écrivez un programme qui demande deux nombres et affiche leur somme, leur différence, leur produit et leur quotient.

a = float(input("Entrez le premier nombre : "))
b = float(input("Entrez le deuxième nombre : "))

print(f"Somme: {a + b}")
print(f"Différence: {a - b}")
print(f"Produit: {a * b}")
print(f"Quotient: {a / b}")

Intermédiaire : Structures de contrôle et Boucles

4. Vérification d’un nombre pair ou impair

Demandez un nombre à l’utilisateur et déterminez s’il est pair ou impair.

n = int(input("Entrez un nombre : "))
if n % 2 == 0:
    print("Le nombre est pair.")
else:
    print("Le nombre est impair.")

5. Compter les voyelles dans une phrase

Écrivez un programme qui demande une phrase et compte le nombre de voyelles.

phrase = input("Entrez une phrase : ")
voyelles = "aeiouyAEIOUY"
compteur = sum(1 for lettre in phrase if lettre in voyelles)
print(f"Nombre de voyelles : {compteur}")

6. Table de multiplication

Affichez la table de multiplication d’un nombre donné par l’utilisateur.

n = int(input("Entrez un nombre : "))
for i in range(1, 11):
    print(f"{n} x {i} = {n * i}")

7. Générateur de nombres premiers

Écrivez un programme qui affiche tous les nombres premiers jusqu’à un certain nombre donné.

def est_premier(n):
    if n < 2:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True

limite = int(input("Entrez la limite supérieure : "))
print("Nombres premiers :", [i for i in range(2, limite + 1) if est_premier(i)])

Avancé : Algorithmes et Structures de Données

8. Vérification de palindrome

Écrivez un programme qui vérifie si un mot ou une phrase est un palindrome (se lit de la même manière à l’endroit et à l’envers).

def est_palindrome(texte):
    texte = texte.replace(" ", "").lower()
    return texte == texte[::-1]

mot = input("Entrez un mot ou une phrase : ")
print("C'est un palindrome !" if est_palindrome(mot) else "Ce n'est pas un palindrome.")

9. Tri par sélection

Implémentez l’algorithme de tri par sélection en Python.

def tri_selection(liste):
    for i in range(len(liste)):
        min_index = i
        for j in range(i + 1, len(liste)):
            if liste[j] < liste[min_index]:
                min_index = j
        liste[i], liste[min_index] = liste[min_index], liste[i]
    return liste

liste = [64, 34, 25, 12, 22, 11, 90]
print("Liste triée :", tri_selection(liste))

10. Générateur de nombres aléatoires et devinette

Faites deviner à l’utilisateur un nombre aléatoire compris entre 1 et 100.

import random

nombre_secret = random.randint(1, 100)
tentative = 0
trouve = False

while not trouve:
    essai = int(input("Devinez le nombre entre 1 et 100 : "))
    tentative += 1
    if essai < nombre_secret:
        print("Trop bas !")
    elif essai > nombre_secret:
        print("Trop haut !")
    else:
        print(f"Bravo ! Vous avez trouvé en {tentative} tentatives.")
        trouve = True

Expert : Projets Plus Complexes

11. Gestionnaire de contacts (Dictionnaires)

Créez un programme où l’utilisateur peut ajouter, rechercher et supprimer des contacts (nom et numéro).

contacts = {}

while True:
    choix = input("Choisissez : [A]jouter, [R]echercher, [S]upprimer, [Q]uitter : ").lower()
    
    if choix == 'a':
        nom = input("Nom du contact : ")
        numero = input("Numéro de téléphone : ")
        contacts[nom] = numero
        print("Contact ajouté.")
    
    elif choix == 'r':
        nom = input("Nom du contact à rechercher : ")
        print(f"Numéro : {contacts.get(nom, 'Non trouvé')}")
    
    elif choix == 's':
        nom = input("Nom du contact à supprimer : ")
        contacts.pop(nom, None)
        print("Contact supprimé.")
    
    elif choix == 'q':
        break

12. Simulation de file d’attente (Queue)

Implémentez une file d’attente où l’utilisateur peut ajouter et retirer des éléments.

from collections import deque

file = deque()

while True:
    action = input("[A]jouter, [R]etirer, [V]oir, [Q]uitter : ").lower()
    
    if action == 'a':
        element = input("Entrez un élément : ")
        file.append(element)
    
    elif action == 'r':
        if file:
            print(f"Retiré : {file.popleft()}")
        else:
            print("La file est vide.")
    
    elif action == 'v':
        print("File d'attente :", list(file))
    
    elif action == 'q':
        break

Ces exercices couvrent les bases ainsi que des concepts avancés en Python.

L’exercice type qui permet à chacun de coder en Python, quel que soit son niveau, est souvent un “Projet de Gestion” qui combine les bases du langage, les structures de contrôle, les fonctions, les fichiers et les structures de données.

Exercice Type : Gestionnaire de Tâches (To-Do List)

Objectif : Créer une application simple de gestion de tâches où l’utilisateur peut ajouter, afficher, supprimer et sauvegarder des tâches.


1. Fonctionnalités à implémenter

  • Ajouter une tâche
  • Afficher les tâches
  • Supprimer une tâche
  • Sauvegarder les tâches dans un fichier
  • Charger les tâches depuis un fichier
  • Quitter le programme

2. Code de Base

import json

# Charger les tâches depuis un fichier JSON
def charger_taches():
    try:
        with open("taches.json", "r") as fichier:
            return json.load(fichier)
    except FileNotFoundError:
        return []

# Sauvegarder les tâches dans un fichier JSON
def sauvegarder_taches(taches):
    with open("taches.json", "w") as fichier:
        json.dump(taches, fichier)

# Ajouter une tâche
def ajouter_tache(taches):
    tache = input("Entrez la nouvelle tâche : ")
    taches.append(tache)
    print("Tâche ajoutée avec succès !")

# Afficher la liste des tâches
def afficher_taches(taches):
    if not taches:
        print("Aucune tâche enregistrée.")
    else:
        print("\nListe des tâches :")
        for i, tache in enumerate(taches, 1):
            print(f"{i}. {tache}")

# Supprimer une tâche
def supprimer_tache(taches):
    afficher_taches(taches)
    try:
        index = int(input("Entrez le numéro de la tâche à supprimer : ")) - 1
        if 0 <= index < len(taches):
            taches.pop(index)
            print("Tâche supprimée avec succès !")
        else:
            print("Numéro invalide.")
    except ValueError:
        print("Veuillez entrer un nombre valide.")

# Programme principal
def gestionnaire_taches():
    taches = charger_taches()

    while True:
        print("\nOptions :")
        print("1. Ajouter une tâche")
        print("2. Afficher les tâches")
        print("3. Supprimer une tâche")
        print("4. Sauvegarder et quitter")

        choix = input("Choisissez une option : ")

        if choix == "1":
            ajouter_tache(taches)
        elif choix == "2":
            afficher_taches(taches)
        elif choix == "3":
            supprimer_tache(taches)
        elif choix == "4":
            sauvegarder_taches(taches)
            print("Tâches sauvegardées. Au revoir !")
            break
        else:
            print("Option invalide, essayez encore.")

# Lancer le programme
gestionnaire_taches()

3. Explication

Lecture/écriture de fichiers pour la persistance des données (JSON).
Manipulation de listes et boucles pour gérer les tâches.
Entrées utilisateur et gestion des erreurs.
Structuration avec des fonctions pour une meilleure organisation du code.


4. Extensions Possibles

✅ Ajouter une date d’échéance aux tâches.
✅ Ajouter une priorité (Haute, Moyenne, Basse).
✅ Interface graphique (Tkinter, PyQt) au lieu du terminal.
✅ Utiliser SQLite au lieu d’un fichier JSON.


Ce type d’exercice est parfait pour apprendre, pratiquer et évoluer en Python tout en créant quelque chose d’utile.

Voici le code du Gestionnaire de Tâches avec des commentaires détaillés pour bien comprendre chaque partie du programme.


Gestionnaire de Tâches avec Commentaires

import json  # Module pour manipuler les fichiers JSON (stockage des tâches)

# Fonction pour charger les tâches depuis un fichier JSON
def charger_taches():
    try:
        with open("taches.json", "r") as fichier:  # Ouvre le fichier en mode lecture
            return json.load(fichier)  # Charge les tâches depuis le fichier JSON
    except FileNotFoundError:  # Si le fichier n'existe pas, retourne une liste vide
        return []

# Fonction pour sauvegarder les tâches dans un fichier JSON
def sauvegarder_taches(taches):
    with open("taches.json", "w") as fichier:  # Ouvre le fichier en mode écriture
        json.dump(taches, fichier)  # Sauvegarde la liste des tâches sous format JSON

# Fonction pour ajouter une nouvelle tâche
def ajouter_tache(taches):
    tache = input("Entrez la nouvelle tâche : ")  # Demande à l'utilisateur une tâche
    taches.append(tache)  # Ajoute la tâche à la liste
    print("✅ Tâche ajoutée avec succès !")

# Fonction pour afficher toutes les tâches enregistrées
def afficher_taches(taches):
    if not taches:  # Vérifie si la liste des tâches est vide
        print("⚠️ Aucune tâche enregistrée.")
    else:
        print("\n📌 Liste des tâches :")
        for i, tache in enumerate(taches, 1):  # Affiche chaque tâche avec un numéro
            print(f"{i}. {tache}")

# Fonction pour supprimer une tâche de la liste
def supprimer_tache(taches):
    afficher_taches(taches)  # Affiche la liste des tâches avant de choisir
    try:
        index = int(input("Entrez le numéro de la tâche à supprimer : ")) - 1  # Récupère l'index
        if 0 <= index < len(taches):  # Vérifie que l'index est valide
            taches.pop(index)  # Supprime la tâche
            print("🗑️ Tâche supprimée avec succès !")
        else:
            print("❌ Numéro invalide.")
    except ValueError:  # Gère l'erreur si l'utilisateur entre autre chose qu'un nombre
        print("⚠️ Veuillez entrer un nombre valide.")

# Fonction principale qui gère le programme
def gestionnaire_taches():
    taches = charger_taches()  # Charge les tâches enregistrées

    while True:  # Boucle infinie pour afficher le menu en continu
        print("\n📋 Menu :")
        print("1️⃣ Ajouter une tâche")
        print("2️⃣ Afficher les tâches")
        print("3️⃣ Supprimer une tâche")
        print("4️⃣ Sauvegarder et quitter")

        choix = input("👉 Choisissez une option : ")  # Demande le choix de l'utilisateur

        if choix == "1":
            ajouter_tache(taches)  # Ajoute une tâche
        elif choix == "2":
            afficher_taches(taches)  # Affiche les tâches
        elif choix == "3":
            supprimer_tache(taches)  # Supprime une tâche
        elif choix == "4":
            sauvegarder_taches(taches)  # Sauvegarde avant de quitter
            print("💾 Tâches sauvegardées. 👋 Au revoir !")
            break  # Sort de la boucle et termine le programme
        else:
            print("⚠️ Option invalide, essayez encore.")  # Gère les entrées invalides

# Lancer le programme
gestionnaire_taches()

Résumé des Commentaires

  • Explication de chaque fonction (rôle, utilisation des fichiers, stockage des données).
  • Commentaire sur chaque bloc important (vérifications, entrées utilisateur, gestion des erreurs).
  • Emojis pour rendre l’affichage plus intuitif dans le terminal.

Ce code bien commenté permet à chacun de comprendre et modifier facilement son gestionnaire de tâches.

Autres articles

Programmation Python dans la Pratique : Gestionnaire...
📌 Introduction La programmation en Python est idéale pour développer des...
Read more
Guide Pratique de Programmation en Python
Cet article explore un guide complet en programmation python et...
Read more
Exemples Corrigés QCM Python - Concatenation de...
Voici une série de questions à choix multiples (QCM) portant...
Read more
Maîtriser l'utilisation de la méthode join en...
La méthode join en Python est un outil puissant pour...
Read more
Comment Gérer Efficacement le Budget Mariage avec...
Télécharger un modèle Excel automatisé de budget mariage automatisé avec...
Read more
Manipulation des Tableaux en Python avec Numpy
Numpy est une bibliothèque puissante et efficace pour la manipulation...
Read more
AZ

Share
Published by
AZ

Recent Posts

Présentation d’Entreprise : Définition, Élaboration et Stratégies pour un Impact Optimal

Télécharger un canevas Word Présentation d’Entreprise ⬇︎ 1. Définition : Qu’est-ce qu’une Présentation d’Entreprise ?…

3 heures ago

Dossier Professionnel : Définition, Rôle et Structure selon les Formats

Le dossier professionnel est un document essentiel pour structurer et valoriser un parcours professionnel. Il…

3 heures ago

Rédaction d’une Présentation de Dossier : Canevas Word

Une présentation de dossier est un document structuré qui permet d’exposer de manière claire et…

4 heures ago

Exercices sur la Syntaxe : Coordination, Subordination, Juxtaposition, Inversion Sujet-Verbe, Mise en Relief (c’est… qui/que) – Avec Corrigés

Maîtriser la Syntaxe en Français La syntaxe est l'un des piliers fondamentaux de la langue…

4 heures ago

Modèle de Proposition de Valeur : Définition et Guide de Rédaction

Dans le marché compétitif d'aujourd'hui, une proposition de valeur pertinente est primordiale pour distinguer une…

5 heures ago

Modèle Word Structuré de Présentation des Propositions d’Amendements

Lors de l’élaboration ou de la révision d’un texte législatif, réglementaire ou statutaire, les propositions…

6 heures ago