01 — Carte de présentation
Niveau requis : 1 (leçon 01-1 terminée) / Difficulté : 1/5 / Durée estimée : 30–45 min
Ce projet existe déjà comme mini-projet de la leçon 01-1 (section 11). Cette fiche l'étend : si tu as déjà fait la version de la leçon, pars de ton fichier et ajoute les étapes 4 à 6.
Objectif
Le programme affiche dans le terminal une « carte de visite » encadrée te concernant : nom, ville, langage préféré, objectif d'apprentissage, date de début. Une carte propre, alignée, agréable à lire — le genre de sortie qu'on a envie de montrer.
========================================
Jean — Nice
Langage : Python
Objectif : automatiser mes analyses
Depuis le : 2026-07-01
========================================
Notions utilisées
print()et chaînes de caractères — niveau 1 (leçon 01-1)- Variables et affectation — niveau 1 (leçon 01-1)
- f-strings — niveau 1 (leçon 01-1)
- Répétition de caractères avec
*("=" * 40) — niveau 1 - Concaténation et longueur de chaîne (
len()) — niveau 1
Cahier des charges
- Le programme s'appelle
card.pyet se lance avecpython card.py. - Il définit au moins 5 variables (nom, ville, langage, objectif, date de début).
- Aucune valeur n'est écrite en dur dans les
print(): tout passe par les variables et des f-strings. Test : changer la valeur d'une variable change la carte sans toucher auxprint(). - La carte est encadrée en haut et en bas par une ligne de
=construite avec*, pas tapée à la main. - La largeur du cadre est stockée dans une variable
WIDTH: changerWIDTHchange la largeur des deux lignes d'un coup. - Bonus exigé pour cette version étendue : une ligne de titre centrée dans le cadre.
Étapes de construction
Chaque étape produit un programme qui tourne. Lance-le après chaque étape.
- Crée
card.pyqui affiche une seule ligne : ton nom, en dur. Lance-le. - Remplace le nom en dur par une variable
nameet une f-string. Ajoute les variablescity,language,goal,start_dateet affiche-les, une par ligne, sans cadre. - Ajoute la ligne de cadre :
border = "=" * 40, affichée avant et après le bloc. Vérifie que la carte s'affiche correctement. - Introduis
WIDTH = 40et construisborderà partir deWIDTH. ChangeWIDTHà 50, relance, vérifie que tout suit. - Ajoute deux espaces d'indentation en début de chaque ligne intérieure (directement dans les f-strings). Compare visuellement avec l'exemple.
- Centre une ligne de titre : cherche la méthode
str.center()dans la doc (help(str.center)dans le REPL) et utilise-la avecWIDTH. C'est ta première recherche de documentation en autonomie — elle fait partie du projet.
Extensions possibles
- Ajouter une ligne « âge de l'apprentissage » calculée : nombre de jours écoulés en dur pour l'instant (le calcul de dates réel viendra au niveau 5).
- Faire deux cartes à la suite (toi + une personne fictive) et constater la duplication de code — tu comprendras au niveau 4 pourquoi les fonctions existent.
- Encadrer aussi les côtés avec des
|, en gardant l'alignement du bord droit quel que soit le contenu (plus dur qu'il n'y paraît : il fautlen()et un calcul d'espaces).
Erreurs fréquentes sur ce projet
- Oublier le
fdevant la chaîne :print("{name}")affiche littéralement{name}. Pas d'erreur Python — juste une sortie fausse. Relis ta sortie. - Taper la ligne de
=à la main au lieu de"=" * WIDTH: le cahier des charges l'interdit précisément parce que c'est le réflexe à perdre. NameError: name 'Name' is not defined: majuscule/minuscule.nameetNamesont deux variables différentes.- Mettre les valeurs directement dans les
print(): le programme marche, mais le test « changer une variable change la carte » échoue.
Critères de réussite
-
python card.pys'exécute sans erreur. - Changer la valeur d'une variable change la carte sans toucher aux
print(). - Changer
WIDTHchange la largeur des deux bordures d'un coup. - Le titre est centré (via
str.center(), pas avec des espaces comptés à la main). - Je peux expliquer chaque ligne du fichier à voix haute.
Commit conseillé
git add projects/mini-projects/01-carte-de-presentation/
git commit -m "project: add presentation card"
Puis entrée de journal + git push.