Aller au contenu

Concevoir un fichier ex-nihilo

Ces exercices doivent être utilisés pour vous entraîner à programmer. Ils sont généralement accompagnés d'aide et de leur solution pour vous permettre de progresser.

Avant de vous précipiter sur ces solutions dès la première difficulté, n'oubliez pas les conseils suivants :

  • Avez-vous bien fait un schéma au brouillon pour visualiser le problème posé ?
  • Avez-vous essayé de rédiger un algorithme en français, avec vos propres mots, avant de vous lancer dans la programmation sur machine ?
  • Avez-vous utilisé des affichages intermédiaires, des print(), pour visualiser au fur et à mesure le contenu des variables ?
  • Avez-vous testé le programme avec les propositions de tests donnés dans l'exercice ?
  • Avez-vous testé le programme avec de nouveaux tests, différents de ceux proposés ?

Rappels

  • Chaque programme Python doit être sauvegardé sous forme de fichier texte avec l'extension .py.
    Enregistrez ce fichier dans le dossier [F05-Les_Fichiers] avec le nom donné à l'exercice : ProgF05.71.py, ProgF05.72.py, etc...
  • Pour exécuter ce programme, il suffit de le sauvegarder puis d'appuyer sur la touche [F5].

ProgF05.71

Concevoir un programme qui permet de générer de manière automatique 10 fichiers HTML.

Ces fichiers seront nommés automatiquement page_X.htmlX correspond u numéro de la page. Ces pages sont destinées à devenir un diaporama donc elles doivent toutes faire appel à un même fichier css_diaporama.css téléchargeable en cliquant ici et à placer dans le répertoire courant des fichiers créés par le programme.

De plus, chaque page X doit contenir un lien vers la page suivante X+1 et vers la page précédente X-1. Attention, la page 9 doit être reliée à la page 0 et vice-versa.

Il faut étudier le fichier CSS afin de définir correctement les balises nécessaires.

On présente ci-dessous l'aspect final de la page 5 ouverte dans un navigateur :

diaporama

Une piste

Un papier et un crayon permettront de détailler les balises nécessaires à la conception des pages.
Écrivez ensuite ces balises dans chaque fichier.

Une autre piste

Identifiez les parties communes à chaque page et celles qui dépendent du numéro de la page :

diaporama

Une solution
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
n = 10                          # Nombre de fichiers

for i in range(n):
    with open(f'page_{i}.html', 'w', encoding='utf-8') as fichier:

        fichier.write('<!DOCTYPE html> \n')
        fichier.write('<html lang="fr"> \n')
        fichier.write('<head> \n')
        fichier.write('<meta charset="utf-8"> \n')
        fichier.write('<title> Diaporama </title> \n')
        fichier.write('<link rel="stylesheet" href="css_diaporama.css"> \n')
        fichier.write('</head> \n')

        fichier.write('<body> \n')
        fichier.write(f'<header> Diaporama - Page {i} </header> \n')
        fichier.write('<article> \n')
        fichier.write('<p>Un paragraphe de blabla</p> \n')
        fichier.write('</article> \n')

        if i != 0:
            preced = i-1
        else:
            preced = 9
        suivant = (i+1)%10
        fichier.write('<footer> \n')

        fichier.write(f'<a id="a_gauche" href="page_{preced}.html"> \n')
        fichier.write('Page précédente</a> \n')

        fichier.write(f'<a id="a_droite" href="page_{suivant}.html"> \n')
        fichier.write('Page suivante</a> \n')
        fichier.write('</footer> \n')

        fichier.write('</body> \n')
        fichier.write('</html> \n')