52 lines
2.0 KiB
Markdown
52 lines
2.0 KiB
Markdown
|
|
# 09 — Le Générateur Web
|
||
|
|
|
||
|
|
**Algorithmes :** Tri par insertion + Recherche dichotomique → génération HTML/CSS
|
||
|
|
**Difficulté :** Difficile
|
||
|
|
**Durée estimée :** 1h15 — 1h30
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Contexte
|
||
|
|
|
||
|
|
Sans JavaScript, une page web ne peut pas exécuter d'algorithme. Mais Python peut **générer** une page HTML ! Vous allez trier des données en Python, puis produire un fichier `.html` affichant le résultat avec un style CSS.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Étapes
|
||
|
|
|
||
|
|
### Étape 1 — Trier les données
|
||
|
|
Implémentez `tri_insertion_jeux(jeux)` qui trie la liste de jeux vidéo par **score décroissant** (le meilleur en premier).
|
||
|
|
|
||
|
|
> **Indication** : pour trier par ordre **décroissant**, inversez la condition : `tab[j-1][1] < x[1]` au lieu de `>`.
|
||
|
|
|
||
|
|
### Étape 2 — Recherche dichotomique
|
||
|
|
Implémentez `rechercher_score(jeux_tries, score)` qui retourne le jeu avec ce score exact, ou `None`.
|
||
|
|
|
||
|
|
> Attention : la liste est triée par score **décroissant**. La dichotomie doit être adaptée (les comparaisons `<` et `>` sont inversées).
|
||
|
|
|
||
|
|
### Étape 3 — Générer la page HTML
|
||
|
|
Implémentez `generer_html(jeux_tries, fichier)` qui écrit un fichier `.html` contenant un tableau du classement, stylisé avec du CSS intégré.
|
||
|
|
|
||
|
|
La page doit afficher au minimum :
|
||
|
|
- Le rang, le titre, le studio, l'année et le score de chaque jeu
|
||
|
|
- Les 3 premiers avec une couleur distincte (or, argent, bronze)
|
||
|
|
- Un titre et un style propre
|
||
|
|
|
||
|
|
### Étape 4 — Ouvrir la page automatiquement
|
||
|
|
À la fin du programme, ouvrez la page générée dans le navigateur avec :
|
||
|
|
|
||
|
|
```python
|
||
|
|
import webbrowser
|
||
|
|
webbrowser.open("classement.html")
|
||
|
|
```
|
||
|
|
|
||
|
|
### Étape 5 — Extension (si vous avez le temps)
|
||
|
|
Ajoutez un deuxième tableau sur la même page : les jeux triés par **année de sortie** (vous pouvez faire un deuxième tri sur une copie).
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Ce que vous devez rendre
|
||
|
|
- Le fichier `starter.py` qui tourne et génère `classement.html`
|
||
|
|
- La page `classement.html` ouverte dans le navigateur
|
||
|
|
- Réponse : pourquoi Python peut-il générer du HTML, alors qu'HTML ne peut pas exécuter Python ?
|