đ Notebook interactif â Introduction au HTML/CSS¶
Cours USAL33 â DSP | Quentin Fait
Ce notebook te permet de mettre en pratique les notions vues pendant la Partie 1 du cours : fondamentaux du Web, structure HTML, et introduction au CSS.
đĄ Comment utiliser ce notebook ?
Lis chaque cellule, complÚte les exercices dans les zones indiquées, puis exécute la cellule avecShift+Entrée.
đ§ Exercice 1 â Vrai ou Faux ?¶
Modifie les valeurs True ou False selon toi, puis exécute la cellule pour vérifier tes réponses.
# Réponds True ou False à chaque affirmation
reponses = {
"HTML est un langage impĂ©ratif (comme Python)": False, # â modifie ici
"CSS dĂ©crit la prĂ©sentation d'une page web": True, # â modifie ici
"HTTPS utilise le port 80 par dĂ©faut": False, # â modifie ici
"L'attribut alt de <img> est obligatoire": True, # â modifie ici
"On peut avoir plusieurs balises <main> par page": False, # â modifie ici
"Le W3C dĂ©veloppe les standards ouverts du Web": True, # â modifie ici
}
# --- Correction ---
corrections = {
"HTML est un langage impératif (comme Python)": False,
"CSS décrit la présentation d'une page web": True,
"HTTPS utilise le port 80 par défaut": False,
"L'attribut alt de <img> est obligatoire": True,
"On peut avoir plusieurs balises <main> par page": False,
"Le W3C développe les standards ouverts du Web": True,
}
score = 0
for question, reponse in reponses.items():
correct = corrections[question]
if reponse == correct:
print(f"â
{question}")
score += 1
else:
print(f"â {question} â La bonne rĂ©ponse Ă©tait : {correct}")
print(f"\nđŻ Score : {score}/{len(reponses)}")
đïž Exercice 2 â Structure HTML : Trouve les erreurs¶
Le code HTML ci-dessous contient 3 erreurs. Identifie-les en complétant la liste, puis vérifie avec la correction.
html_avec_erreurs = """
<!DOCTYPE html>
<html>
<head>
<title>Ma page</title>
</head>
<body>
<h1>Bienvenue</h1>
<h3>Sous-titre</h3>
<img src="photo.jpg">
<main>
<p>Contenu principal</p>
</main>
<main>
<p>Autre contenu</p>
</main>
</body>
</html>
"""
# ComplÚte la liste avec tes réponses (remplace les "?" par tes explications)
mes_erreurs = [
"Erreur 1 : ?", # â dĂ©cris l'erreur ici
"Erreur 2 : ?", # â dĂ©cris l'erreur ici
"Erreur 3 : ?", # â dĂ©cris l'erreur ici
]
print("Voici le HTML Ă analyser :")
print(html_avec_erreurs)
print("\nđ Tes rĂ©ponses :")
for e in mes_erreurs:
print(" -", e)
# Correction de l'exercice 2
print("â
Correction :")
print()
print("Erreur 1 : <html> sans attribut lang â il faut <html lang=\"fr\">")
print(" Raison : l'attribut lang est important pour l'accessibilité et le SEO.")
print()
print("Erreur 2 : <h3> directement aprĂšs <h1> â la hiĂ©rarchie des titres est rompue")
print(" Raison : on doit respecter h1 â h2 â h3, sans sauter de niveau.")
print()
print("Erreur 3 : <img src=\"photo.jpg\"> sans attribut alt")
print(" Raison : l'attribut alt est obligatoire pour l'accessibilité.")
print()
print("Erreur bonus : deux balises <main> sur la mĂȘme page â une seule est autorisĂ©e.")
đ·ïž Exercice 3 â Associe la balise Ă son rĂŽle¶
Complete le dictionnaire mes_associations en faisant correspondre chaque balise Ă la bonne description.
# Descriptions disponibles (Ă associer aux balises)
descriptions = [
"A) Contenu principal unique de la page",
"B) Navigation principale",
"C) Contenu autonome et réutilisable",
"D) En-tĂȘte de page ou de section",
"E) Contenu complémentaire (sidebar)",
"F) Pied de page",
]
print("Descriptions disponibles :")
for d in descriptions:
print(" ", d)
print()
# ComplĂšte avec la lettre correspondante (ex: "A", "B", etc.)
mes_associations = {
"<header>": "?", # â remplace ? par la lettre
"<nav>": "?",
"<main>": "?",
"<article>": "?",
"<aside>": "?",
"<footer>": "?",
}
# Correction
corrections = {
"<header>": "D",
"<nav>": "B",
"<main>": "A",
"<article>": "C",
"<aside>": "E",
"<footer>": "F",
}
score = 0
for balise, reponse in mes_associations.items():
correct = corrections[balise]
if reponse == correct:
print(f"â
{balise} â {reponse}")
score += 1
elif reponse == "?":
print(f"⏠{balise} â non rĂ©pondu (rĂ©ponse : {correct})")
else:
print(f"â {balise} â tu as mis {reponse}, rĂ©ponse correcte : {correct}")
print(f"\nđŻ Score : {score}/{len(mes_associations)}")
đš Exercice 4 â ComplĂšte les rĂšgles CSS¶
Pour chaque effet souhaité, complÚte la propriété ou la valeur CSS manquante (?).
# ComplÚte les valeurs manquantes (remplace "?" par la bonne réponse)
exercices_css = [
{
"effet": "Mettre le texte en rouge",
"css": "p { ?: red; }", # â quelle propriĂ©tĂ© ?
"reponse": "?", # â Ă©cris la propriĂ©tĂ© ici
"correction": "color"
},
{
"effet": "Fond de page gris clair",
"css": "body { background-color: ?; }",
"reponse": "?", # â une valeur de couleur gris clair
"correction": "#eeeeee (ou #f5f5f5, lightgray, etc.)"
},
{
"effet": "Centrer le texte",
"css": "h1 { text-align: ?; }",
"reponse": "?",
"correction": "center"
},
{
"effet": "Espacement interne de 20px",
"css": "div { ?: 20px; }",
"reponse": "?",
"correction": "padding"
},
{
"effet": "Espacement externe de 10px",
"css": "p { ?: 10px; }",
"reponse": "?",
"correction": "margin"
},
]
print("đ Tes rĂ©ponses :")
print()
for ex in exercices_css:
statut = "â
" if ex["reponse"].strip().lower().split()[0] == ex["correction"].strip().lower().split()[0] else "â"
if ex["reponse"] == "?":
statut = "âŹ"
print(f"{statut} Effet : {ex['effet']}")
print(f" CSS : {ex['css']}")
if statut == "â" or statut == "âŹ":
print(f" â Correction : {ex['correction']}")
print()
âïž Exercice 5 â Mini-dĂ©fi : Ăcris ta propre structure HTML¶
ComplĂšte la variable mon_html avec une structure HTML valide pour une page simple avec :
Un
<header>avec un titre<h1>Une
<nav>avec 3 liensUn
<main>avec un<article>contenant un titre<h2>et un paragrapheUn
<footer>avec un copyright
Le code vérifie automatiquement la présence des éléments attendus.
mon_html = """
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Ma page</title>
</head>
<body>
<!-- ComplĂšte ici -->
</body>
</html>
"""
# Vérification automatique
elements_attendus = [
("<header>", "balise <header>"),
("<h1>", "titre <h1>"),
("<nav>", "balise <nav>"),
("<a href", "liens <a href> (au moins un)"),
("<main>", "balise <main>"),
("<article>", "balise <article>"),
("<h2>", "titre <h2>"),
("<p>", "paragraphe <p>"),
("<footer>", "balise <footer>"),
("lang=\"", "attribut lang sur <html>"),
("alt=", "attribut alt (si tu as une image)"),
]
print("đ VĂ©rification de ta structure HTML :")
print()
score = 0
for balise, label in elements_attendus:
if balise in mon_html:
print(f"â
{label} présent")
score += 1
else:
print(f"⏠{label} manquant")
print(f"\nđŻ ĂlĂ©ments prĂ©sents : {score}/{len(elements_attendus)}")
if score == len(elements_attendus):
print("đ Parfait ! Ta structure HTML est complĂšte.")
elif score >= 8:
print("đ TrĂšs bien, il manque quelques Ă©lĂ©ments mineurs.")
else:
print("đȘ Continue, relis le cours et complĂšte les Ă©lĂ©ments manquants !")
đ RĂ©capitulatif â Ce que tu as vu¶
Notion |
Ă retenir |
|---|---|
HTML |
Langage déclaratif de structure |
CSS |
Langage de présentation |
HTTPS |
Port 443, données chiffrées |
|
Un seul par page |
|
Obligatoire |
Hiérarchie titres |
h1 â h2 â h3 (pas de saut) |
|
Externe vs interne |
đ Bravo dâavoir complĂ©tĂ© ce notebook !
Rendez-vous sur le prochain cours pour aller plus loin.