0% ont trouvé ce document utile (0 vote)
5 vues21 pages

200 Exercices Python

Ce document présente un recueil de 200 exercices pratiques en Python, axés sur les structures de données et les algorithmes, destiné à des étudiants en informatique. Les exercices couvrent divers thèmes tels que les listes, tuples, dictionnaires et sets, avec des questions contextualisées pour développer les compétences en programmation. L'objectif est de maîtriser les structures de données fondamentales de Python à travers des exercices progressifs et variés.

Transféré par

moisemanfouana63
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues21 pages

200 Exercices Python

Ce document présente un recueil de 200 exercices pratiques en Python, axés sur les structures de données et les algorithmes, destiné à des étudiants en informatique. Les exercices couvrent divers thèmes tels que les listes, tuples, dictionnaires et sets, avec des questions contextualisées pour développer les compétences en programmation. L'objectif est de maîtriser les structures de données fondamentales de Python à travers des exercices progressifs et variés.

Transféré par

moisemanfouana63
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

200 Exercices Python

Structures de données & Algorithmes

Matière : Programmation Python

Niveau : Licence / BTS Informatique

Thèmes : Listes, Tuples, Sets, Dictionnaires, Boucles

Structure : 30 exercices × 6–7 questions = 200 questions

Objectif : Maîtrise des structures de données Python

Ce recueil propose 30 exercices pratiques de niveau progressif autour des structures de données
fondamentales de Python. Chaque exercice est autonome, contextualisé dans un cas réel, et se
compose de 6 à 7 questions permettant de développer les compétences d'analyse, de manipulation
et d'algorithmique.

200 Exercices Python —1— Structures de données & Algorithmes


Table des matières

Chapitre Thème Exercices

Chapitre 1 Listes et Tuples Ex. 1–5

Chapitre 2 Dictionnaires Ex. 6–10

Chapitre 3 Sets (Ensembles) Ex. 11–15

Chapitre 4 Structures Mixtes Ex. 16–20

Chapitre 5 Boucles et Algorithmes Ex. 21–25

Chapitre 6 Projets Complets Ex. 26–30

200 Exercices Python —2— Structures de données & Algorithmes


Chapitre 1 – Listes et Tuples

Exercice 1 – Gestion d'une classe scolaire

On dispose d'une liste d'élèves avec leurs notes.

eleves = [("Alice","3eA",[14,16,12]), ("Bob","3eA",[8,9,11]),


("Clara","3eB",[17,15,18]), ("David","3eA",[5,7,6]),
("Eva","3eB",[13,14,12])]

Questions :
1. Afficher le nom et la classe de chaque élève.
2. Calculer la moyenne de chaque élève.
3. Lister les élèves ayant une moyenne supérieure ou égale à 12.
4. Trouver l'élève ayant la note maximale toutes matières confondues.
5. Trier les élèves par ordre décroissant de moyenne.
6. Compter le nombre d'élèves par classe.
7. Afficher 'Mention TB' si moy>=16, 'Bien' si moy>=14, sinon 'Passable'.

■ Utilisez sum()/len() pour les moyennes et max() pour les extremes.

Exercice 2 – Inventaire d'une bibliothèque

Une bibliothèque gère ses livres sous forme de liste de tuples.

livres = [("Python avancé","Dupont",2021,5),


("Algo & Data","Martin",2019,0),
("IA pratique","Curie",2023,3),
("Web avec Flask","Dupont",2020,0),
("Data Science","Ali",2022,8)]

Questions :
1. Afficher les titres de tous les livres disponibles (quantité > 0).
2. Lister les livres de l'auteur 'Dupont'.
3. Calculer le nombre total de livres en stock.
4. Trouver le livre le plus récent.
5. Créer une liste des titres de livres épuisés (quantité = 0).
6. Compter les livres publiés après 2020.
7. Afficher les livres triés par année de publication croissante.

■ Un tuple est immuable : on ne peut pas modifier ses éléments directement.

200 Exercices Python —3— Structures de données & Algorithmes


Exercice 3 – Résultats sportifs

Un tableau de résultats de football stocke victoires, nuls et défaites.

equipes = [("PSG", 20, 4, 6), ("Lyon", 15, 7, 8),


("Marseille", 18, 3, 9), ("Bordeaux", 10, 8, 12),
("Lens", 17, 6, 7)]

Questions :
1. Calculer les points de chaque équipe (V=3pts, N=1pt, D=0pt).
2. Afficher le classement par points décroissants.
3. Trouver l'équipe avec le plus de victoires.
4. Calculer le nombre total de matchs joués par chaque équipe.
5. Lister les équipes ayant plus de 50 points.
6. Calculer la moyenne des points de toutes les équipes.
7. Identifier l'équipe la plus régulière (moins de défaites).

■ Points = Victoires*3 + Nuls*1 + Défaites*0.

Exercice 4 – Analyse de températures

Des relevés météo hebdomadaires sont stockés dans une liste.

temperatures = [(1,"Lundi",22.5), (2,"Mardi",24.1), (3,"Mercredi",19.8),


(4,"Jeudi",21.0), (5,"Vendredi",26.3),
(6,"Samedi",28.7), (7,"Dimanche",23.4)]

Questions :
1. Afficher le jour le plus chaud de la semaine.
2. Calculer la température moyenne de la semaine.
3. Lister les jours où la température dépasse 23°C.
4. Trouver l'écart entre la température max et min.
5. Afficher les températures en ordre croissant.
6. Compter les jours au-dessus de la moyenne.
7. Indiquer si la semaine est 'Chaude' (moy>=25), 'Douce' (>=20) ou 'Froide'.

■ max() et min() fonctionnent sur les listes de tuples en comparant le premier élément.

200 Exercices Python —4— Structures de données & Algorithmes


Exercice 5 – Gestion d'un cinéma

Un cinéma gère ses séances avec une liste de tuples.

seances = [("Inception","20h00",120,45), ("Avatar","18h00",162,200),


("Dune","21h30",155,80), ("Matrix","16h00",136,0),
("Oppenheimer","19h00",180,55)]

Questions :
1. Afficher les films avec des places disponibles.
2. Trouver le film le plus long.
3. Calculer le total des places disponibles.
4. Lister les films de plus de 150 minutes.
5. Afficher les séances triées par horaire.
6. Compter les séances affichant complet (places=0).
7. Créer une liste de tuples (film, statut) où statut = 'Complet' ou 'Disponible'.

■ Comparez les chaînes d'horaires comme des strings ('20h00' > '18h00' = True).

200 Exercices Python —5— Structures de données & Algorithmes


Chapitre 2 – Dictionnaires

Exercice 6 – Annuaire téléphonique

Un annuaire stocke des contacts avec plusieurs informations.

annuaire = {
"Alice": {"tel":"0612345678","ville":"Paris","age":28},
"Bob": {"tel":"0698765432","ville":"Lyon","age":35},
"Clara": {"tel":"0677889900","ville":"Paris","age":22},
"David": {"tel":"0655443322","ville":"Marseille","age":41}
}

Questions :
1. Afficher le numéro de téléphone d'Alice.
2. Lister tous les contacts habitant à Paris.
3. Ajouter un nouveau contact 'Eva' avec vos données.
4. Calculer l'âge moyen de tous les contacts.
5. Trouver le contact le plus âgé.
6. Compter le nombre de contacts par ville.
7. Supprimer David de l'annuaire et afficher le résultat.

■ Utilisez [Link]() pour itérer sur clés et valeurs simultanément.

Exercice 7 – Catalogue d'un magasin

Un magasin de vêtements gère son catalogue sous forme de dictionnaire.

catalogue = {
"T-shirt": {"prix":15.0,"stock":50,"categorie":"Hauts"},
"Jean": {"prix":45.0,"stock":0,"categorie":"Bas"},
"Veste": {"prix":89.0,"stock":12,"categorie":"Hauts"},
"Robe": {"prix":60.0,"stock":8,"categorie":"Robes"},
"Short": {"prix":25.0,"stock":30,"categorie":"Bas"}
}

Questions :
1. Afficher tous les articles disponibles en stock.
2. Calculer la valeur totale du stock (prix × quantité).
3. Lister les articles de la catégorie 'Hauts'.
4. Trouver l'article le plus cher.
5. Appliquer une réduction de 10% aux articles dont le stock > 20.
6. Créer un dictionnaire {article: prix} pour les articles < 50€.
7. Afficher les articles triés par prix croissant.

■ Pour trier un dict, utilisez sorted([Link](), key=lambda x: x[1]['prix']).

200 Exercices Python —6— Structures de données & Algorithmes


Exercice 8 – Résultats d'examens universitaires

Un système universitaire stocke les résultats par étudiant et par matière.

resultats = {
"Ali": {"Maths":14,"Info":17,"Anglais":12,"Physique":15},
"Binta": {"Maths":9, "Info":11,"Anglais":16,"Physique":8},
"Carlos":{"Maths":18,"Info":16,"Anglais":14,"Physique":17},
"Dina": {"Maths":7, "Info":10,"Anglais":9, "Physique":11}
}

Questions :
1. Calculer la moyenne générale de chaque étudiant.
2. Trouver la matière avec la meilleure moyenne globale.
3. Lister les étudiants ayant validé toutes les matières (note >= 10).
4. Identifier les matières échouées par Binta.
5. Créer un dict {etudiant: 'Admis'/'Ajourné'} selon la moyenne >= 10.
6. Afficher le major de promo (meilleure moyenne générale).
7. Calculer la moyenne de la classe pour chaque matière.

■ sum([Link]())/len(notes) calcule la moyenne d'un étudiant.

Exercice 9 – Suivi de livraisons

Un service de livraison suit ses colis par numéro de suivi.

livraisons = {
"LV001":{"client":"Alice","ville":"Paris","poids":2.5,"statut":"Livré"},
"LV002":{"client":"Bob", "ville":"Lyon", "poids":0.8,"statut":"En transit"},
"LV003":{"client":"Clara","ville":"Paris","poids":5.1,"statut":"En attente"},
"LV004":{"client":"David","ville":"Nice", "poids":1.2,"statut":"Livré"},
"LV005":{"client":"Eva", "ville":"Lyon", "poids":3.7,"statut":"Retourné"}
}

Questions :
1. Afficher tous les colis dont le statut est 'Livré'.
2. Calculer le poids total de tous les colis.
3. Lister les colis à destination de Lyon.
4. Mettre à jour le statut de LV002 en 'Livré'.
5. Calculer le tarif de chaque colis (2.5€/kg + 1.5€ de base).
6. Créer un dict {ville: nombre_de_colis} pour chaque ville.
7. Trouver le colis le plus lourd.

■ Pour mettre à jour une valeur: livraisons['LV002']['statut'] = 'Livré'.

200 Exercices Python —7— Structures de données & Algorithmes


Exercice 10 – Gestion d'une pharmacie

Une pharmacie gère son stock de médicaments.

pharmacie = {
"Paracétamol":{"prix":2.5, "stock":200,"categorie":"Douleur"},
"Ibuprofène": {"prix":4.0, "stock":80, "categorie":"Douleur"},
"Amoxicilline":{"prix":8.5,"stock":15, "categorie":"Antibiotique"},
"Vitamine C": {"prix":3.2,"stock":0, "categorie":"Vitamines"},
"Doliprane": {"prix":2.8,"stock":150,"categorie":"Douleur"}
}

Questions :
1. Afficher les médicaments disponibles (stock > 0).
2. Calculer la valeur totale du stock.
3. Lister les médicaments de la catégorie 'Douleur'.
4. Identifier les médicaments dont le stock < 20 (alerte réapprovisionnement).
5. Appliquer une augmentation de prix de 5% à tous les médicaments.
6. Compter le nombre de médicaments par catégorie.
7. Trouver le médicament le moins cher disponible.

■ Itérer avec for nom, info in [Link](): permet d'accéder aux deux.

200 Exercices Python —8— Structures de données & Algorithmes


Chapitre 3 – Sets (Ensembles)

Exercice 11 – Gestion des inscriptions à des clubs

Des élèves sont inscrits dans différents clubs scolaires.

football = {"Ali","Bob","Clara","David","Eva"}
musique = {"Bob","Fatou","Clara","Hakim","Eva"}
theatre = {"Ali","Fatou","Idriss","Clara","Julien"}
informatique = {"David","Hakim","Idriss","Ali","Bob"}

Questions :
1. Trouver les élèves inscrits à la fois au football ET à la musique.
2. Lister tous les élèves inscrits dans au moins un club.
3. Trouver les élèves inscrits uniquement au football (pas aux autres).
4. Vérifier si 'Clara' est dans tous les clubs.
5. Calculer le nombre total d'élèves uniques dans tous les clubs.
6. Trouver les élèves inscrits dans exactement 2 clubs.
7. Identifier les élèves non inscrits au théâtre parmi ceux du football.

■ & = intersection, | = union, - = différence, ^ = différence symétrique.

Exercice 12 – Analyse de texte

On analyse les mots présents dans deux textes différents.

texte1 = set("python est un langage simple et puissant".split())


texte2 = set("java est un langage robuste et complexe".split())
mots_communs_fr = {"le","la","les","un","une","des","et","est","en"}

Questions :
1. Afficher les mots présents dans les deux textes.
2. Trouver les mots uniques au texte1 (absents du texte2).
3. Lister tous les mots des deux textes réunis.
4. Supprimer les mots communs français des deux ensembles.
5. Vérifier si 'python' est dans texte1.
6. Calculer la similitude : mots communs / total mots uniques.
7. Afficher les mots distincts entre les deux textes (différence symétrique).

■ set.difference_update(autre_set) supprime les éléments en place.

200 Exercices Python —9— Structures de données & Algorithmes


Exercice 13 – Contrôle d'accès à des ressources

Un système informatique gère les droits d'accès par rôle.

admin = {"lire","ecrire","supprimer","creer","admin"}
editeur = {"lire","ecrire","creer"}
visiteur = {"lire"}
utilisateur_droits = {"lire","ecrire"}

Questions :
1. Vérifier si l'utilisateur a les droits d'un éditeur (sous-ensemble).
2. Lister les droits manquants pour être éditeur.
3. Trouver les droits en commun entre admin et visiteur.
4. Calculer les droits supplémentaires d'admin par rapport à éditeur.
5. Vérifier si visiteur est un sous-ensemble de éditeur.
6. Créer un nouveau rôle 'moderateur' avec droits lire+ecrire+supprimer.
7. Afficher tous les droits existants dans le système.

■ issubset() vérifie si un set est contenu dans un autre.

Exercice 14 – Dédoublonnage de données

On reçoit des données brutes avec des doublons à nettoyer.

commandes_brutes = ["souris","clavier","souris","ecran",
"clavier","webcam","ecran","souris"]
produits_fournisseur1 = {"souris","clavier","ecran","imprimante"}
produits_fournisseur2 = {"ecran","webcam","casque","clavier"}

Questions :
1. Supprimer les doublons des commandes brutes.
2. Compter combien de fois chaque produit a été commandé.
3. Trouver les produits commandés disponibles chez fournisseur1.
4. Identifier les produits commandés indisponibles chez les deux fournisseurs.
5. Lister les produits disponibles chez les deux fournisseurs.
6. Créer un set des produits commandés non disponibles nulle part.
7. Vérifier si toutes les commandes uniques sont couvertes par l'union des fournisseurs.

■ set(liste) crée un ensemble à partir d'une liste, supprimant les doublons.

200 Exercices Python — 10 — Structures de données & Algorithmes


Exercice 15 – Planification de cours

Des étudiants s'inscrivent à des cours en ligne.

cours_disponibles = {"Python","Java","SQL","HTML","CSS","React","Django"}
inscrit_ali = {"Python","SQL","Django"}
inscrit_binta = {"Java","SQL","React","HTML"}
inscrit_carlos= {"Python","Django","React","CSS"}

Questions :
1. Trouver les cours suivis par Ali et Carlos en même temps.
2. Lister tous les cours suivis par au moins un étudiant.
3. Identifier les cours disponibles mais non suivis par personne.
4. Trouver les cours suivis uniquement par Binta.
5. Calculer le nombre de cours suivis en commun entre les 3 étudiants.
6. Vérifier si les inscriptions d'Ali sont un sous-ensemble des cours disponibles.
7. Créer un set de cours suivis par exactement 2 étudiants sur 3.

■ L'intersection de 3 sets: A & B & C donne les éléments communs aux trois.

200 Exercices Python — 11 — Structures de données & Algorithmes


Chapitre 4 – Structures Mixtes

Exercice 16 – Gestion d'un hôpital

Un hôpital gère ses patients avec des structures imbriquées.

patients = [
{"id":"P001","nom":"Martin","age":45,"maladies":["diabète","hypertension"]},
{"id":"P002","nom":"Dupont","age":32,"maladies":["grippe"]},
{"id":"P003","nom":"Leroi", "age":67,"maladies":["diabète","arthrite"]},
{"id":"P004","nom":"Ahmed", "age":28,"maladies":["allergie","asthme"]},
{"id":"P005","nom":"Kone", "age":55,"maladies":["hypertension"]}
]

Questions :
1. Lister les noms de tous les patients.
2. Trouver les patients atteints de diabète.
3. Calculer l'âge moyen des patients.
4. Créer un dictionnaire {id: nom} pour tous les patients.
5. Compter le nombre total de maladies distinctes dans l'hôpital.
6. Identifier les patients ayant plus d'une maladie.
7. Trouver la maladie la plus fréquente.

■ Pour compter les maladies: utilisez un dict compteur mis à jour à chaque itération.

200 Exercices Python — 12 — Structures de données & Algorithmes


Exercice 17 – Réseau social

Un réseau social stocke les utilisateurs et leurs connexions.

utilisateurs = {
"alice": {"amis":{"bob","clara","david"},"posts":15,"actif":True},
"bob": {"amis":{"alice","eva"},"posts":8,"actif":True},
"clara": {"amis":{"alice","david","eva"},"posts":42,"actif":False},
"david": {"amis":{"alice","clara"},"posts":3,"actif":True},
"eva": {"amis":{"bob","clara"},"posts":27,"actif":True}
}

Questions :
1. Afficher les amis actifs de Alice.
2. Calculer le nombre moyen de posts par utilisateur actif.
3. Trouver les amis communs entre Alice et Clara.
4. Lister les utilisateurs avec plus de 10 posts.
5. Recommander de nouveaux amis à Bob (amis d'amis non encore amis).
6. Identifier l'utilisateur le plus populaire (le plus cité comme ami).
7. Créer une liste d'utilisateurs inactifs.

■ Les amis communs = set_amis_A & set_amis_B (intersection de sets).

Exercice 18 – Gestion d'une école de musique

Une école de musique gère ses élèves et leurs instruments.

ecole = {
"Léa": {"instruments":["piano","violon"],"niveau":"avancé","annees":5},
"Noah": {"instruments":["guitare"],"niveau":"débutant","annees":1},
"Sofia": {"instruments":["piano","flûte","chant"],"niveau":"intermédiaire","annees":3},
"Théo": {"instruments":["batterie","guitare"],"niveau":"avancé","annees":6},
"Inès": {"instruments":["violon","alto"],"niveau":"intermédiaire","annees":4}
}

Questions :
1. Lister tous les instruments pratiqués dans l'école (sans doublons).
2. Trouver les élèves de niveau 'avancé'.
3. Calculer le nombre moyen d'instruments par élève.
4. Identifier les élèves qui jouent du piano.
5. Créer un dict {instrument: liste_d_élèves} pour chaque instrument.
6. Trouver l'élève le plus expérimenté (plus d'années).
7. Lister les instruments joués par exactement un seul élève.

■ Pour inverser un dict imbriqué, parcourez les valeurs et créez un nouveau dict.

200 Exercices Python — 13 — Structures de données & Algorithmes


Exercice 19 – Analyse de ventes e-commerce

Une boutique en ligne analyse ses transactions.

transactions = [
{"id":"T01","client":"Ali", "produits":["laptop","souris"],"total":850.0,"region":"Nord"},
{"id":"T02","client":"Binta","produits":["clavier"],"total":45.0,"region":"Sud"},
{"id":"T03","client":"Ali", "produits":["ecran","webcam"],"total":320.0,"region":"Nord"},
{"id":"T04","client":"Carlos","produits":["laptop"],"total":799.0,"region":"Est"},
{"id":"T05","client":"Binta","produits":["souris","tapis"],"total":35.0,"region":"Sud"}
]

Questions :
1. Calculer le chiffre d'affaires total.
2. Trouver le client ayant le plus dépensé au total.
3. Lister tous les produits commandés (sans doublons).
4. Calculer le panier moyen par transaction.
5. Regrouper les transactions par région avec le CA de chaque région.
6. Identifier les clients ayant passé plusieurs commandes.
7. Créer un dict {client: liste_produits} fusionnant tous ses achats.

■ Utilisez un dict accumulateur: if client in dict: dict[client] += total else: dict[client] = total

Exercice 20 – Système de tournoi sportif

Un tournoi de tennis gère les matchs et le classement.

matchs = [
{"tour":1,"joueur1":"Nadal","joueur2":"Federer","score":(6,4),"duree":95},
{"tour":1,"joueur1":"Djoko","joueur2":"Murray","score":(7,5),"duree":110},
{"tour":2,"joueur1":"Nadal","joueur2":"Djoko","score":(4,6),"duree":130},
{"tour":2,"joueur1":"Alcaraz","joueur2":"Zverev","score":(6,3),"duree":75},
{"tour":3,"joueur1":"Djoko","joueur2":"Alcaraz","score":(6,7),"duree":145}
]

Questions :
1. Déterminer le vainqueur de chaque match (score le plus élevé en [0]).
2. Calculer la durée totale du tournoi.
3. Lister les joueurs qualifiés pour le tour 2.
4. Trouver le match le plus long.
5. Créer un dict {joueur: nb_victoires} pour tout le tournoi.
6. Identifier le joueur non battu (vainqueur final).
7. Calculer la durée moyenne par match par tour.

■ Le vainqueur d'un match est joueur1 si score[0] > score[1], sinon joueur2.

200 Exercices Python — 14 — Structures de données & Algorithmes


Chapitre 5 – Boucles et Algorithmes

Exercice 21 – Gestion d'une caisse enregistreuse

Une caisse enregistre les achats et calcule la monnaie.

articles = [("Pain",1.20,2),("Lait",0.95,3),("Fromage",4.50,1),
("Café",3.80,2),("Jus",2.10,4)]
taux_tva = {"Pain":5.5,"Lait":5.5,"Fromage":20.0,"Café":20.0,"Jus":5.5}

Questions :
1. Calculer le sous-total HT de chaque article (prix × quantité).
2. Calculer la TVA de chaque article selon son taux.
3. Calculer le total TTC de toute la facture.
4. Afficher le ticket de caisse formaté avec nom, qté, prix unitaire, total.
5. Calculer la monnaie rendue pour un paiement de 40€.
6. Identifier l'article le plus cher (prix unitaire × quantité).
7. Appliquer une remise de 10% si le total dépasse 25€.

■ Total TTC = sous-total_HT * (1 + taux_tva/100).

Exercice 22 – Simulation d'une banque

Une banque simule des opérations sur des comptes clients.

comptes = {
"C001":{"titulaire":"Alice","solde":1500.0,"transactions":[]},
"C002":{"titulaire":"Bob", "solde":300.0, "transactions":[]},
"C003":{"titulaire":"Clara","solde":8200.0,"transactions":[]}
}
operations = [("C001","depot",500),("C002","retrait",400),
("C001","retrait",200),("C003","depot",1000)]

Questions :
1. Appliquer toutes les opérations aux comptes correspondants.
2. Afficher le solde final de chaque compte.
3. Identifier les comptes en négatif après les opérations.
4. Calculer le solde total géré par la banque.
5. Trouver le compte avec le solde le plus élevé.
6. Afficher l'historique des transactions de Alice.
7. Bloquer les retraits si le solde est insuffisant et afficher un message.

■ Vérifiez toujours solde >= montant avant d'effectuer un retrait.

200 Exercices Python — 15 — Structures de données & Algorithmes


Exercice 23 – Traitement d'une liste de mots

On traite une liste de mots pour des statistiques linguistiques.

texte = "le renard rapide saute par dessus le chien paresseux"


mots = [Link]()
voyelles = set("aeiouy")

Questions :
1. Compter le nombre de mots dans le texte.
2. Calculer la longueur moyenne des mots.
3. Trouver le mot le plus long.
4. Compter les mots contenant au moins 2 voyelles consécutives.
5. Créer un dict {mot: longueur} pour chaque mot.
6. Lister les mots uniques triés alphabétiquement.
7. Compter le nombre de voyelles et de consonnes dans tout le texte.

■ Pour compter les voyelles d'un mot: sum(1 for c in mot if c in voyelles).

Exercice 24 – Gestion d'une cantine scolaire

Une cantine gère les repas servis chaque semaine.

menus = {
"Lundi": {"plat":"Poulet rôti","prix":3.5,"servis":120},
"Mardi": {"plat":"Poisson","prix":4.0,"servis":95},
"Mercredi":{"plat":"Pizza","prix":3.0,"servis":180},
"Jeudi": {"plat":"Couscous","prix":3.8,"servis":110},
"Vendredi":{"plat":"Pâtes","prix":2.5,"servis":140}
}

Questions :
1. Calculer le chiffre d'affaires total de la semaine.
2. Trouver le repas le plus populaire (plus servis).
3. Calculer la recette moyenne par jour.
4. Identifier les jours avec plus de 130 couverts.
5. Calculer le nombre total de repas servis dans la semaine.
6. Appliquer une hausse de 0.20€ sur tous les plats.
7. Créer une liste des plats triés par popularité décroissante.

■ CA journalier = prix * servis. Somme sur tous les jours = CA semaine.

200 Exercices Python — 16 — Structures de données & Algorithmes


Exercice 25 – Analyse de données météo annuelles

On analyse les températures sur 12 mois.

meteo_annuelle = {
"Jan":(-2,6), "Fev":(0,8), "Mar":(5,14), "Avr":(9,18),
"Mai":(13,22),"Jun":(17,27),"Jul":(20,31),"Aou":(19,30),
"Sep":(15,25),"Oct":(10,19),"Nov":(4,11), "Dec":(0,7)
}

Questions :
1. Calculer la température moyenne mensuelle (min+max)/2.
2. Trouver le mois le plus chaud et le plus froid.
3. Lister les mois où la température max dépasse 25°C.
4. Calculer l'amplitude thermique annuelle (max_absolu - min_absolu).
5. Calculer la moyenne annuelle des températures moyennes.
6. Identifier les mois avec gel possible (min < 0).
7. Créer un dict {mois: saison} selon les températures (Été/Hiver/Printemps/Automne).

■ Amplitude = max(max pour tous mois) - min(min pour tous mois).

200 Exercices Python — 17 — Structures de données & Algorithmes


Chapitre 6 – Projets Complets

Exercice 26 – Système de gestion de restaurant

Un restaurant gère sa carte, ses tables et ses commandes.

carte = {"Burger":{"prix":12.0,"categorie":"Plat","dispo":True},
"Pizza": {"prix":10.5,"categorie":"Plat","dispo":True},
"Tiramisu":{"prix":5.0,"categorie":"Dessert","dispo":False},
"Coca": {"prix":2.5,"categorie":"Boisson","dispo":True}}
commandes = [{"table":3,"items":["Burger","Coca","Coca"]},
{"table":7,"items":["Pizza","Pizza","Tiramisu"]},
{"table":2,"items":["Burger","Pizza","Coca"]}]

Questions :
1. Afficher la carte avec uniquement les articles disponibles.
2. Calculer le total de chaque table (refuser les articles indisponibles).
3. Trouver la table ayant la note la plus élevée.
4. Calculer le chiffre d'affaires total du service.
5. Créer un dict {categorie: CA} par catégorie de plat.
6. Identifier les articles les plus commandés (top 3).
7. Calculer la note moyenne par table.

■ Pour les indisponibles: vérifiez carte[item]['dispo'] avant d'ajouter au total.

200 Exercices Python — 18 — Structures de données & Algorithmes


Exercice 27 – Plateforme d'enseignement en ligne

Une plateforme e-learning gère cours, apprenants et progressions.

cours = {"PY101":{"titre":"Python débutant","duree":20,"niveau":"débutant"},


"PY201":{"titre":"Python avancé","duree":35,"niveau":"avancé"},
"WB101":{"titre":"HTML/CSS","duree":15,"niveau":"débutant"},
"DB101":{"titre":"SQL bases","duree":12,"niveau":"intermédiaire"}}
apprenants = {"Amina":{"cours":["PY101","WB101"],"scores":{"PY101":78,"WB101":92}},
"Brice":{"cours":["PY101","PY201"],"scores":{"PY101":55,"PY201":70}},
"Chen": {"cours":["DB101"],"scores":{"DB101":88}}}

Questions :
1. Calculer le score moyen de chaque apprenant.
2. Trouver le cours le plus populaire (plus d'inscrits).
3. Lister les apprenants ayant un score >= 80 dans au moins un cours.
4. Calculer la durée totale de formation suivie par chaque apprenant.
5. Créer un dict {cours: liste_apprenants} inversant la structure.
6. Identifier les apprenants n'ayant pas encore tous leurs cours complétés (score manquant).
7. Recommander le prochain cours à Amina selon son niveau.

■ Durée totale = sum(cours[c]['duree'] for c in apprenant['cours']).

Exercice 28 – Gestion d'un garage automobile

Un garage suit les réparations et le stock de pièces.

stock_pieces = {"filtre_huile":{"prix":8.0,"qte":20},
"plaquettes": {"prix":45.0,"qte":8},
"pneu": {"prix":80.0,"qte":4},
"batterie": {"prix":120.0,"qte":3}}
reparations = [
{"immat":"AB123CD","client":"Paul","pieces":["filtre_huile","filtre_huile"],"MO":60},
{"immat":"EF456GH","client":"Marie","pieces":["plaquettes","plaquettes"],"MO":90},
{"immat":"IJ789KL","client":"Jean","pieces":["pneu","pneu","pneu","pneu"],"MO":40}
]

Questions :
1. Calculer le coût total de chaque réparation (pièces + main d'œuvre).
2. Mettre à jour le stock après chaque réparation.
3. Identifier les pièces dont le stock est inférieur à 5 (alerte).
4. Calculer le chiffre d'affaires total du garage.
5. Créer une facture détaillée pour chaque client.
6. Trouver la réparation la plus coûteuse.
7. Calculer la valeur totale du stock de pièces restant.

■ Coût réparation = sum(stock_pieces[p]['prix'] for p in pieces) + MO.

200 Exercices Python — 19 — Structures de données & Algorithmes


Exercice 29 – Système de vote électronique

On simule un système de vote avec vérification d'intégrité.

candidats = {"Candidat_A":0,"Candidat_B":0,"Candidat_C":0}
electeurs = {"E001","E002","E003","E004","E005","E006","E007","E008"}
votes = [
("E001","Candidat_A"),("E002","Candidat_B"),("E003","Candidat_A"),
("E004","Candidat_C"),("E005","Candidat_A"),("E001","Candidat_B"),
("E006","Candidat_B"),("E007","Candidat_C"),("E008","Candidat_A")
]

Questions :
1. Dépouiller les votes en rejetant les votes en double (même électeur).
2. Compter les votes valides par candidat.
3. Calculer le pourcentage de votes de chaque candidat.
4. Identifier le candidat élu (plus de votes).
5. Vérifier le taux de participation (electeurs ayant voté / total).
6. Lister les électeurs n'ayant pas voté.
7. Identifier et afficher les votes invalides (doublon ou électeur inexistant).

■ Utilisez un set 'deja_vote' pour détecter les doublons.

Exercice 30 – Gestion d'un festival de musique

Un festival gère artistes, scènes, billets et recettes.

artistes = {
"Stromae": {"genre":"Pop","cachet":50000,"scene":"Grande"},
"Aya Nakamura":{"genre":"RnB","cachet":45000,"scene":"Grande"},
"Vianney": {"genre":"Pop","cachet":20000,"scene":"Petite"},
"Aloïse": {"genre":"Jazz","cachet":15000,"scene":"Jazz"},
"Vald": {"genre":"Rap","cachet":30000,"scene":"Hip-Hop"}
}
billets_vendus = {"Grande":15000,"Petite":5000,"Jazz":3000,"Hip-Hop":8000}
prix_billet = {"Grande":80,"Petite":40,"Jazz":35,"Hip-Hop":55}

Questions :
1. Calculer les recettes de chaque scène (billets × prix).
2. Calculer le bénéfice net de chaque scène (recettes - cachets des artistes).
3. Identifier les scènes rentables (bénéfice > 0).
4. Calculer le budget total des cachets du festival.
5. Trouver la scène la plus rentable.
6. Créer un dict {genre: liste_artistes} groupant par genre musical.
7. Calculer le revenu total du festival et son bénéfice global.

■ Bénéfice_scène = recette_scène - sum(cachets des artistes sur cette scène).

200 Exercices Python — 20 — Structures de données & Algorithmes


Bon courage ! ■
Python est un langage qui récompense la pratique. Chaque exercice résolu renforce votre
compréhension des structures de données et des algorithmes. Prenez le temps de tester votre code,
d'expérimenter et de chercher des solutions alternatives.

200 Exercices Python — 21 — Structures de données & Algorithmes

Vous aimerez peut-être aussi