Leçon 01-1 — print, variables et premiers programmes
1. Objectif
À la fin de cette leçon tu sauras : afficher n'importe quelle information avec print(), créer des variables, les nommer correctement, les modifier, et expliquer ce qu'est réellement une variable en Python (un nom qui pointe vers une valeur).
2. Pourquoi c'est important
Tout programme, du script de 3 lignes au logiciel de trading, fait la même chose : il stocke des données dans des variables, les transforme, et produit un résultat. print() est en plus ton premier outil de débogage : quand un programme ne fait pas ce que tu veux, tu afficheras l'état des variables pour comprendre. Tu utiliseras ce réflexe pendant toute ta vie de programmeur.
3. Explication simple
Une variable, c'est une étiquette collée sur une valeur.
age = 42
se lit : « colle l'étiquette age sur la valeur 42 ». Ensuite, partout où tu écris age, Python remplace par la valeur étiquetée.
print() affiche dans le terminal ce que tu lui donnes entre parenthèses :
print(age) # affiche : 42
print("age") # affiche : age (avec guillemets = texte littéral !)
Le signe = ne veut PAS dire « égal » comme en maths. Il veut dire « assigne » : prends la valeur à droite, colle-lui le nom à gauche.
4. Explication approfondie
Trois précisions que l'explication simple cache :
a) L'ordre d'évaluation. Python évalue toujours la droite d'abord, puis assigne au nom à gauche. C'est pour ça que ceci est valide et très courant :
compteur = compteur + 1 # droite d'abord : lit l'ANCIENNE valeur, ajoute 1,
# puis recolle l'étiquette sur le résultat
b) Un nom pointe vers une valeur, il ne la contient pas. En Python, la variable n'est pas une « boîte » qui contient la valeur : c'est une référence (un post-it) vers un objet qui vit ailleurs en mémoire. Avec les nombres et les textes la différence est invisible ; elle deviendra cruciale au niveau 3 avec les listes (deux noms peuvent pointer vers LA MÊME liste). ⏩ On y reviendra — retiens juste l'image du post-it, pas de la boîte.
c) Réassigner écrase, sans prévenir.
score = 10
score = "dix" # parfaitement légal : l'étiquette pointe maintenant vers un texte
Python ne t'empêchera pas de changer le type d'une variable. C'est une liberté et un piège : c'est TOI qui dois garder tes variables cohérentes.
Difficulté honnête : cette leçon paraît facile, et elle l'est — en surface. Le point (b) est la source de bugs que même des développeurs confirmés font. Tu n'as pas besoin de tout maîtriser aujourd'hui ; tu as besoin de l'image correcte (post-it, pas boîte) dès le départ.
5. Exemples commentés
Exemple 1 — afficher du texte et des nombres
print("Bonjour") # texte : entre guillemets
print(2026) # nombre : sans guillemets
print("Année :", 2026) # plusieurs valeurs, séparées par des virgules
Sortie :
Bonjour
2026
Année : 2026
Exemple 2 — créer et utiliser des variables
name = "Ada"
birth_year = 1815
current_year = 2026
age = current_year - birth_year # la droite est calculée D'ABORD
print(name, "aurait", age, "ans") # Ada aurait 211 ans
Exemple 3 — f-strings : la bonne façon de formater
name = "Ada"
age = 211
print(f"{name} aurait {age} ans") # le f devant les guillemets active
# le remplacement des {variables}
Sortie : Ada aurait 211 ans. Les f-strings sont la méthode moderne et lisible ; prends l'habitude tout de suite.
Exemple 4 — réassignation et incrément
counter = 0
print(counter) # 0
counter = counter + 1
print(counter) # 1
counter += 1 # raccourci strictement équivalent à la ligne du dessus
print(counter) # 2
Exemple 5 — échanger deux variables (spécial Python)
a = 1
b = 2
a, b = b, a # échange en une ligne : la droite (2, 1) est évaluée
print(a, b) # 2 1 entièrement AVANT l'assignation
6. Erreurs fréquentes
1) Utiliser une variable avant de la créer
print(total) # NameError: name 'total' is not defined
total = 5
Python lit de haut en bas. À la ligne 1, l'étiquette total n'existe pas encore. Correction : assigner avant d'utiliser.
2) Confondre le nom et le texte
name = "Ada"
print("name") # affiche : name ← le texte littéral, pas la valeur !
print(name) # affiche : Ada ← la variable
Guillemets = texte tel quel. Sans guillemets = « va chercher la valeur ».
3) Oublier le f de la f-string
print("{name} a {age} ans") # affiche : {name} a {age} ans — littéralement
print(f"{name} a {age} ans") # affiche : Ada a 211 ans
Pas de message d'erreur ici : le programme « marche » mais affiche faux. Les bugs silencieux sont les pires — vérifie toujours ta sortie.
4) Mettre = dans le mauvais sens
5 = age # SyntaxError: cannot assign to literal
Le nom va toujours à gauche, la valeur à droite.
5) Noms de variables illégaux ou trompeurs
2players = 4 # SyntaxError : un nom ne peut pas commencer par un chiffre
mon-score = 3 # SyntaxError : le tiret est interprété comme une soustraction
print = 5 # LÉGAL mais catastrophique : tu viens d'écraser print() !
Le troisième cas ne produit aucune erreur sur le moment, mais tout print(...) suivant plantera avec TypeError: 'int' object is not callable. N'utilise jamais les noms des fonctions Python (print, sum, list, input…) comme noms de variables. En cas de doute : si VS Code colore le nom, il est réservé.
7. Lire les messages d'erreur
L'erreur emblématique de cette leçon est NameError :
Traceback (most recent call last):
File "C:\Users\jtron\Claude\learnpython\hello.py", line 3, in <module>
print(totale)
^^^^^^
NameError: name 'totale' is not defined. Did you mean: 'total'?
Méthode de lecture — toujours commencer par la dernière ligne :
- Dernière ligne : le type d'erreur et le message. Ici
NameError= « ce nom n'existe pas ». Python 3 suggère même la faute de frappe probable (Did you mean: 'total'?). - Ligne au-dessus : le fichier (
hello.py), la ligne exacte (line 3) et le code fautif, avec des^^^sous le coupable. - Ouvre le fichier à cette ligne et vérifie : la variable a-t-elle été créée plus haut ? Sans faute de frappe ? (Python distingue
Totalettotal.)
SyntaxError est différente : elle apparaît avant l'exécution (Python n'a même pas pu lire ton fichier). Le programme n'a exécuté AUCUNE ligne. Regarde le ^ : l'erreur est là, ou juste avant (guillemet ou parenthèse non fermés à la ligne précédente, souvent).
8. Exercices — faciles
Règles : nouveau fichier par exercice dans
lessons/level-01-bases/exercices/mes-reponses/, nomméex-01-1-a.py, etc. Tape tout à la main. Prédis la sortie AVANT d'exécuter.
a) Crée trois variables : ton prénom, ta ville, ton année de naissance. Affiche une phrase complète avec les trois, en f-string.
b) Sans exécuter, écris sur papier ce qu'affiche ce programme, puis vérifie :
x = 5
y = x
x = 10
print(y)
c) Crée une variable price = 19.99 puis affiche : Prix : 19.99 € — Prix doublé : 39.98 € (le doublé doit être calculé, pas tapé).
9. Exercices — moyens
a) Ce programme est censé afficher Compteur : 3 mais affiche autre chose. Trouve les DEUX bugs sans l'exécuter, puis corrige :
counter = 0
counter = counter + 1
counter = counter + 1
counter + 1
print("Compteur : {counter}")
b) Crée a = "5" et b = 3. Essaie print(a + b). Lis le traceback en entier, note dans ton journal ce que Python te reproche exactement, et propose deux corrections différentes (une qui donne 8, une qui donne "53"). ⏩ Les conversions de types sont le sujet de la leçon 01-2 — cet exercice te fait rencontrer le problème AVANT la solution, c'est voulu.
10. Exercices — difficiles
a) Sans la syntaxe a, b = b, a, échange les valeurs de deux variables. Puis échange les valeurs de TROIS variables (a→b, b→c, c→a) — d'abord avec une variable temporaire, ensuite en une seule ligne.
- Indice 1 : que se passe-t-il si tu fais
a = ben premier ? Quelle valeur est perdue ? - Indice 2 : il te faut un endroit où « poser » une valeur pendant l'échange.
- Indice 3 :
temp = a, puisa = b, puis… termine seul.
11. Mini-projet lié — « carte de présentation »
Écris presentation.py : le programme définit 5-6 variables te concernant (nom, ville, langage préféré, objectif d'apprentissage, date de début…) et affiche une carte encadrée, par exemple :
========================================
Jean — Nice
Apprend : Python
Objectif : autonomie en 12 semaines
Depuis le : 2026-07-05
========================================
Contraintes : f-strings obligatoires ; la ligne de = est stockée dans une variable réutilisée deux fois (pas tapée deux fois). Durée cible : 15–20 min. Extension : ajoute une variable weeks_elapsed et affiche-la calculée à partir d'une variable days_elapsed (division entière // — ⏩ leçon 01-2).
12. Correction / méthode de correction
Les solutions détaillées sont dans solutions/serie-01-1-solutions.md.
Méthode : (1) finis TOUS les exercices avant d'ouvrir les solutions ; (2) compare le raisonnement, pas seulement le code — une solution différente qui marche est souvent valable ; (3) pour chaque écart, écris une ligne dans ton journal : « je pensais X, en fait Y » ; (4) refais de tête l'exercice raté, le lendemain.
13. À retenir
=assigne : droite évaluée d'abord, puis collée au nom de gauche.- Une variable est un post-it sur une valeur, pas une boîte.
- Guillemets = texte littéral ; sans guillemets = valeur de la variable.
f"..."avec{variable}: la façon moderne d'afficher proprement.counter += 1: raccourci decounter = counter + 1.NameError= nom inexistant ; lire le traceback de bas en haut.- Ne jamais nommer une variable comme une fonction Python (
print,sum…).
14. Questions de révision
- Que fait exactement Python quand il lit
x = x + 1? Dans quel ordre ? - Quelle est la différence entre
print(name)etprint("name")? - Pourquoi
5 = ageest-il une erreur mais pasage = 5? - Qu'affiche
print("{x}")six = 3? Et pourquoi n'y a-t-il pas d'erreur ? - Que signifie « une variable est une référence, pas une boîte » ?
- Dans quel ordre lit-on un traceback, et que trouve-t-on à chaque étage ?
- Pourquoi
print = 5est-il légal mais dangereux ?
15. Checklist de compréhension
- Je peux créer une variable et l'afficher sans regarder la leçon.
- Je peux expliquer à voix haute pourquoi
yvaut5dans l'exercice 8-b. - Je sais écrire une f-string sans oublier le
f. - Je peux provoquer volontairement un
NameErroret le lire. - Je peux expliquer
counter += 1à quelqu'un d'autre. - J'ai fait le mini-projet et il tourne sans erreur.
Si une case reste vide : refais les exercices de la section correspondante demain, AVANT d'ouvrir la leçon suivante.
16. Commit conseillé
git add lessons/level-01-bases/exercices/mes-reponses/
git commit -m "exercises: complete lesson 01-1 print and variables"
Puis, si c'est ta fin de session : entrée de journal + git push.