Mini-projets de synthèse
Le but de ces quatre mini-projets est de réinvestir plusieurs chapitres du programme sur un travail de 2 à 6 heures. Chaque sujet ci-dessous se suit comme un projet : données de départ, fonctions à écrire, exemple chiffré, puis fichier à rendre.
On en choisit un. Le programme principal affiche l'exemple du sujet, pour qu'on puisse contrôler le résultat sans tout retaper.
1. Réseau de villes
Un graphe pondéré relie des villes. Le poids d'une arête est une distance en kilomètres. On calcule un plus court chemin avec l'algorithme de Dijkstra, puis on affiche le trajet et son coût.
Graphe de départ. Les arêtes ne sont pas orientées : Lyon-Paris vaut aussi Paris-Lyon.
| Arête | Distance (km) |
|---|---|
| Lyon-Paris | 460 |
| Lyon-Marseille | 310 |
| Paris-Lille | 220 |
| Paris-Marseille | 770 |
| Marseille-Lille | 1000 |
Le plus court chemin de Lyon à Lille passe par Paris : 460 + 220 = 680 km. Lyon-Marseille-Lille vaut 1310 km. Paris-Marseille-Lille n'est pas un chemin de Lyon vers Lille au départ.
graphe = {
"Lyon": {"Paris": 460, "Marseille": 310},
"Paris": {"Lyon": 460, "Lille": 220, "Marseille": 770},
"Marseille": {"Lyon": 310, "Paris": 770, "Lille": 1000},
"Lille": {"Paris": 220, "Marseille": 1000},
}

Choisir un exercice
Cliquer sur un exercice de la liste pour afficher son sujet.
Ce qu'on rend. Un fichier villes.py : le graphe de l'exemple, voisins, ajouter_route, plus_court_chemin, et un affichage du trajet Lyon-Lille. Commentaire d'en-tête avec le nom et la classe. En quelques lignes sous le résultat, dire pourquoi 680 est meilleur que 1310 : on compare des sommes de poids, pas le nombre de villes.
2. Catalogue de véhicules
Une petite base SQL décrit des véhicules. Une route d'API renvoie du JSON. Une page, ou un script, consulte ce catalogue.
Trois lignes de départ :
| immat | marque | modele | prix_jour | places | etat |
|---|---|---|---|---|---|
| AB-123-CD | Peugeot | 208 | 35 | 5 | disponible |
| EF-456-GH | Yamaha | MT-07 | 45 | 2 | maintenance |
| IJ-789-KL | Fiat | Ducato | 120 | 4 | disponible |

Choisir un exercice
Cliquer sur un exercice de la liste pour afficher son sujet.
Ce qu'on rend. Le script SQL (schema.sql avec la création, les trois insertions et la requête), le code de la route GET /vehicules, et la page ou le script qui affiche la Peugeot et le Ducato. Commentaire d'en-tête avec le nom et la classe.
3. Analyse de logs
Un fichier de logs du système est lu ligne à ligne. On en tire des indicateurs, puis on compare deux façons de les calculer.
Les lignes ont cette forme, une par événement :
2026-03-12 08:01:02 INFO demarrage
2026-03-12 08:01:05 WARN disque
2026-03-12 08:02:10 ERROR reseau
2026-03-12 08:02:11 INFO requete
2026-03-12 08:03:40 ERROR disque
2026-03-12 08:04:00 INFO arret
Indicateurs attendus sur ce fichier : 6 lignes, 3 INFO, 1 WARN, 2 ERROR. Le mot disque apparaît 2 fois. La première erreur est à 08:02:10.

Choisir un exercice
Cliquer sur un exercice de la liste pour afficher son sujet.
Ce qu'on rend. logs.py, le fichier systeme.log de l'exemple, les fonctions, l'affichage des indicateurs (6, 3, 1, 2 et le mot disque), et le commentaire qui compare les deux stratégies. Commentaire d'en-tête avec le nom et la classe.
4. Simulateur d'épreuve pratique
Une banque de questions est tirée au sort. Un test simple dit si la réponse proposée est celle attendue. Le sujet ne corrige pas une copie entière : il vérifie une réponse contre le jeu d'essai de la question.
Banque minimale, à écrire dans le fichier :
banque = [
{
"id": "q1",
"enonce": "Que renvoie len([1, 2, 2]) ?",
"reponse": "3",
},
{
"id": "q2",
"enonce": "Quel algorithme de plus court chemin sur un graphe à poids positifs ?",
"reponse": "Dijkstra",
},
{
"id": "q3",
"enonce": "Une clé primaire peut-elle être répétée ? (oui/non)",
"reponse": "non",
},
]

Choisir un exercice
Cliquer sur un exercice de la liste pour afficher son sujet.
Ce qu'on rend. epreuve.py : la banque d'au moins trois questions, ajouter_question, tirer, valider, le bloc de tests, et le dialogue. Commentaire d'en-tête avec le nom et la classe.
5. Ce qui est regardé sur les quatre sujets
- Le résultat de l'exemple est celui annoncé (680 km, les deux véhicules disponibles, les compteurs du log, ou les trois
valider). - Les fonctions se relisent : noms stables, cas refusé qui ne modifie pas les données.
- Le choix d'algorithme est justifié sur l'exemple, pas seulement nommé.
- Le déroulement peut s'expliquer à l'oral, sur son jeu d'essai.
