Leçon 00-1 — Installer Python et lancer son premier script

1. Objectif

À la fin de cette leçon tu sauras : vérifier que Python est installé sur ta machine Windows, écrire un fichier hello.py dans VS Code, le lancer depuis le terminal avec python hello.py, et expliquer la différence entre le REPL interactif et l'exécution d'un script.

2. Pourquoi c'est important

Tout le reste de la méthode repose sur un geste unique, répété des centaines de fois : écrire un fichier .py, le lancer, lire ce qui sort. Si ce geste n'est pas fluide — si tu ne sais pas où est ton fichier, ni pourquoi le terminal répond « python n'est pas reconnu » — chaque exercice devient un combat contre l'environnement au lieu d'un exercice de programmation. Cette leçon rend le geste automatique. C'est aussi la leçon qui t'évitera le piège classique du débutant : rester coincé dans des tutoriels en ligne où on clique sur « Run » sans jamais comprendre ce qui exécute quoi.

3. Explication simple

Python est un programme installé sur ta machine, comme un navigateur ou un jeu. Son travail : lire un fichier texte contenant des instructions et les exécuter une par une, de haut en bas.

Un fichier .py est un simple fichier texte. Rien de magique : tu pourrais l'ouvrir avec le Bloc-notes. L'extension .py est une convention qui dit « ceci contient du code Python ». C'est VS Code qui le colore joliment, mais le fichier lui-même n'est que du texte.

Le terminal est l'endroit où tu donnes des ordres à ta machine en tapant. Quand tu tapes :

python hello.py

tu dis : « lance le programme python, et donne-lui le fichier hello.py à exécuter ». Python lit le fichier, exécute chaque ligne, affiche ce qu'il y a à afficher, puis rend la main.

Il existe deux façons d'utiliser Python :

4. Explication approfondie

Quatre choses que l'explication simple a cachées :

a) Comment le terminal trouve python : le PATH. Quand tu tapes python, le terminal ne fouille pas tout ton disque. Il consulte une liste de dossiers appelée PATH (une variable d'environnement) et cherche un programme nommé python.exe dans ces dossiers, dans l'ordre. Si aucun dossier du PATH ne contient python.exe → « python n'est pas reconnu ». C'est LE problème n°1 des débutants sous Windows, et il ne veut pas dire que Python n'est pas installé : il veut dire que le terminal ne sait pas il est.

b) Le py launcher, spécifique à Windows. L'installateur Python pour Windows installe aussi py.exe dans un dossier système (toujours dans le PATH). py sait trouver toutes les versions de Python installées, même si python n'est pas dans le PATH. D'où le réflexe de diagnostic :

python --version   # si ça marche : tout va bien
py --version       # si SEUL celui-ci marche : Python est installé,
                   # mais pas dans le PATH

Sur cette machine, Python 3.14 est déjà installé (C:\Users\jtron\AppData\Local\Python\pythoncore-3.14-64\). Si un jour tu réinstalles : coche « Add python.exe to PATH » dans l'installateur — cette case décochée est la cause de 90 % des « python n'est pas reconnu ».

c) Le terminal a une position : le dossier courant. python hello.py utilise un chemin relatif : Python cherche hello.py dans le dossier où le terminal se trouve actuellement, pas ailleurs. Si ton terminal est dans C:\Users\jtron et ton fichier dans C:\Users\jtron\Claude\learnpython, la commande échoue avec No such file or directory — le fichier existe, mais pas ici. La leçon 00-2 approfondit ; retiens dès maintenant : avant de lancer un script, vérifie où tu es (pwd).

d) REPL et script ne se mélangent pas. Le prompt te dit dans quel monde tu es :

jtron@machine MINGW64 ~/Claude/learnpython
$                          ← terminal (Git Bash) : commandes système
>>>                        ← REPL Python : code Python uniquement

Taper du Python dans le terminal, ou une commande terminal dans le REPL, donne une erreur dans les deux sens. C'est une confusion normale la première semaine ; le réflexe à ancrer : regarde le début de la ligne avant de taper.

Difficulté honnête : rien ici n'est intellectuellement difficile, mais c'est déroutant parce que trois programmes différents (terminal, Python, VS Code) interagissent et que les messages d'erreur viennent tantôt de l'un, tantôt de l'autre. Compte une session complète (1 h 30 – 2 h), et n'hésite pas à refaire les manipulations le lendemain de tête.

5. Exemples commentés

Exemple 1 — vérifier l'installation

python --version

Sortie attendue :

Python 3.14.3

Le numéro exact peut différer ; ce qui compte : ça commence par 3. et il n'y a pas de message d'erreur. Teste aussi py --version (voir section 4b).

Exemple 2 — ton premier script

Dans VS Code, crée le fichier hello.py dans lessons/level-00-environnement/exercices/mes-reponses/ avec ce contenu :

print("Hello, world!")
print("Python works on this machine.")

Sauvegarde (Ctrl+S — l'oublier est l'erreur n°4, section 6). Puis dans le terminal, place-toi dans le bon dossier et lance :

cd ~/Claude/learnpython/lessons/level-00-environnement/exercices/mes-reponses
python hello.py

Sortie :

Hello, world!
Python works on this machine.

Deux lignes, dans l'ordre du fichier : Python exécute de haut en bas.

Exemple 3 — le REPL, mode laboratoire

python
Python 3.14.3 (main, ...) on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 2 + 3
5
>>> print("test")
test
>>> exit()

Chaque ligne est exécutée immédiatement. Note : 2 + 3 affiche 5 sans print — le REPL affiche automatiquement le résultat de chaque expression (un script, lui, n'affiche QUE ce que tu print). exit() (ou Ctrl+D dans Git Bash) rend la main au terminal : le prompt redevient $.

Exemple 4 — le même code, script vs REPL

# contenu de compute.py
result = 40 + 2
result
print("done")
python compute.py

Sortie :

done

La ligne result toute seule ne produit rien dans un script (contrairement au REPL). Un script est muet sauf ordre explicite d'afficher. Cette différence piège tout le monde une fois — maintenant tu es prévenu.

Exemple 5 — chemin relatif vs position du terminal

cd ~/Claude/learnpython
python hello.py
C:\Users\jtron\AppData\Local\Python\pythoncore-3.14-64\python.exe: can't open file 'C:\\Users\\jtron\\Claude\\learnpython\\hello.py': [Errno 2] No such file or directory

Le fichier existe — mais dans .../exercices/mes-reponses/, pas à la racine du repo. Deux corrections valables :

python lessons/level-00-environnement/exercices/mes-reponses/hello.py  # chemin depuis ici
# ou
cd lessons/level-00-environnement/exercices/mes-reponses && python hello.py

6. Erreurs fréquentes

1) « python n'est pas reconnu » — le PATH

bash: python: command not found

(ou en PowerShell : python : Le terme «python» n'est pas reconnu...). Diagnostic : tape py --version. S'il répond, Python est installé mais absent du PATH — utilise py hello.py en attendant, et à la prochaine installation coche « Add python.exe to PATH ». Si py échoue aussi, Python n'est pas installé : télécharge-le sur python.org/downloads (bouton jaune, version 3.x). Après toute installation : ferme et rouvre le terminal — un terminal déjà ouvert garde l'ancien PATH.

2) Lancer depuis le mauvais dossier

python: can't open file '...\\hello.py': [Errno 2] No such file or directory

Ce n'est PAS une erreur Python : ton programme n'a même pas démarré. Le terminal est simplement ailleurs que le fichier. Correction : pwd pour voir où tu es, ls pour vérifier que hello.py est listé, cd vers le bon dossier. Si ls ne montre pas ton fichier, il n'est pas là — point.

3) Le fichier s'appelle en réalité hello.py.txt

Windows cache les extensions connues par défaut. Si tu crées le fichier via le Bloc-notes ou l'explorateur, tu peux obtenir hello.py.txt affiché comme hello.py. Symptôme : ls dans le terminal montre hello.py.txt, ou VS Code ne colore pas le code. Correction durable : Explorateur → Affichage → Afficher → Extensions de noms de fichiers (coché). Prévention : crée toujours tes fichiers depuis VS Code ou le terminal, jamais depuis le Bloc-notes.

4) Modifier le fichier sans sauvegarder, puis relancer

Tu corriges ton code, tu relances, rien ne change. Regarde l'onglet dans VS Code : un point blanc à la place de la croix = modifications non sauvegardées. Python exécute le fichier sur le disque, pas ce qui est à l'écran. Correction : Ctrl+S, relance. C'est l'erreur silencieuse la plus frustrante du niveau — quand « ma correction ne marche pas », vérifie D'ABORD le point blanc.

5) Taper une commande terminal dans le REPL (et inversement)

>>> python hello.py
  File "<stdin>", line 1
    python hello.py
           ^^^^^
SyntaxError: invalid syntax

Tu es DÉJÀ dans Python (>>>) : python hello.py n'est pas du code Python. Sors avec exit(), puis relance depuis le $. Le symétrique :

$ print("hello")
bash: syntax error near unexpected token `"hello"'

print(...) est du Python, le terminal ne le comprend pas. Règle : $ = commandes système, >>> = code Python.

6) Guillemets « typographiques » collés depuis le web

print(“hello”)   # SyntaxError: invalid character '“' (U+201C)

En copiant du code depuis un site ou un PDF, les guillemets droits " peuvent devenir des guillemets courbes “” que Python rejette. Correction : retape les guillemets au clavier. Prévention : tape le code à la main (c'est de toute façon la règle de la méthode).

7. Lire les messages d'erreur

À ce niveau, les erreurs viennent de deux émetteurs différents, et savoir lequel te parle est la moitié du diagnostic.

Erreur du terminal ou du lanceur (ton programme n'a pas démarré) :

bash: python: command not found
python: can't open file 'C:\\Users\\jtron\\hello.py': [Errno 2] No such file or directory

Pas de mot Traceback → le problème est dans la commande, le PATH ou le dossier courant. Inutile de relire ton code : il n'a pas été lu.

Erreur de Python (ton programme a démarré, puis a échoué) :

Traceback (most recent call last):
  File "C:\Users\jtron\Claude\learnpython\lessons\level-00-environnement\exercices\mes-reponses\hello.py", line 2, in <module>
    print("second line"
          ^
SyntaxError: '(' was never closed

Méthode de lecture — toujours commencer par la dernière ligne :

  1. Dernière ligne : le type (SyntaxError) et le message ('(' was never closed : une parenthèse ouverte, jamais fermée).
  2. Au-dessus : le fichier exact et la ligne (hello.py, line 2), avec un ^ sous l'endroit suspect. Pour une SyntaxError, l'erreur est là ou juste avant (ligne précédente, souvent).
  3. Ouvre le fichier à cette ligne, corrige, Ctrl+S, relance.

Cas particulier de SyntaxError : elle survient avant l'exécution — Python n'a exécuté AUCUNE ligne du fichier, même les lignes correctes du début.

8. Exercices — faciles

Règles : tout se passe dans lessons/level-00-environnement/exercices/mes-reponses/. Tape les commandes à la main. Prédis ce qui va se passer AVANT d'appuyer sur Entrée.

a) Dans le terminal, exécute python --version puis py --version. Note dans ton journal les deux sorties exactes et ce que leur ressemblance (ou différence) t'apprend sur ton installation.

b) Crée hello.py dans VS Code (contenu de l'exemple 2), sauvegarde, place le terminal dans le bon dossier, lance-le. Objectif : les deux lignes s'affichent, sans erreur, du premier coup.

c) Crée trois scripts : bonjour.py (affiche une salutation), machine.py (affiche le nom de ta machine, tapé en dur), date.py (affiche la date du jour, tapée en dur). Lance les trois sans quitter le terminal, avec trois commandes successives (flèche haut pour rappeler et modifier la commande précédente — plus rapide que retaper).

9. Exercices — moyens

a) Provoque volontairement l'erreur « mauvais dossier » : remonte à la racine du repo (cd ~/Claude/learnpython) et lance python hello.py. Lis le message obtenu et réponds par écrit : (1) est-ce une erreur du terminal, du lanceur Python ou de ton code ? (2) quel indice dans le message donne le dossier où Python a cherché ? Puis répare sans faire cd : lance le script depuis la racine en donnant son chemin complet.

b) Ouvre le REPL et fais-lui calculer le nombre de secondes dans une semaine (60 * 60 * 24 * 7). Puis écris week.py qui affiche le même calcul, et compare : pourquoi 60 * 60 * 24 * 7 seul sur sa ligne affiche-t-il le résultat dans le REPL mais rien dans le script ? Quelle ligne faut-il dans le script ? (Relis l'exemple 4 si besoin.)

c) Dans le REPL, tape volontairement python week.py et lis l'erreur. Sors du REPL, puis dans le terminal tape volontairement print("test") et lis l'erreur. Note dans ton journal comment tu reconnaîtras chaque situation la prochaine fois (indice : le début de la ligne).

10. Exercices — difficiles

a) Sans VS Code ni explorateur, uniquement au terminal : crée un dossier sandbox dans mes-reponses/, crée dedans un fichier trap.py contenant un print, puis débrouille-toi pour le lancer depuis mes-reponses/ (pas depuis sandbox/). Enfin, provoque l'erreur [Errno 2] en le lançant avec un chemin faux, et explique dans ton journal la différence exacte entre les deux commandes.

11. Mini-projet lié — « fiche machine »

Écris machine_info.py (15–20 min) : un script qui affiche une fiche d'identité de ton environnement, tapée en dur, par exemple :

=== Machine setup ===
OS        : Windows 11
Python    : 3.14.3
Editor    : VS Code
Terminal  : Git Bash
Repo      : C:/Users/jtron/Claude/learnpython
=====================

Contraintes : au moins 6 lignes de print ; les valeurs doivent être les vraies (récupère la version exacte avec python --version). Puis lance-le trois fois : depuis mes-reponses/, depuis la racine du repo (chemin relatif), et avec un chemin absolu complet (python C:/Users/jtron/Claude/...). Les trois doivent afficher la même chose. Ce fichier te resservira en leçon 00-3 comme matière à committer.

12. Correction / méthode de correction

Les corrections détaillées des manipulations sont dans solutions/serie-00-solutions.md.

Méthode : (1) finis TOUTES les manipulations avant d'ouvrir les solutions ; (2) pour les exercices de manipulation, compare les commandes exactes que tu as tapées avec celles de la correction — un écart qui marche quand même mérite d'être compris ; (3) note dans ton journal chaque erreur rencontrée avec son message exact : ce catalogue personnel d'erreurs vaut de l'or ; (4) refais l'exercice 9-a de tête demain, sans relire la leçon.

13. À retenir

14. Questions de révision

  1. Que fait exactement le terminal quand tu tapes python ? Où cherche-t-il ?
  2. python --version échoue mais py --version marche : qu'est-ce que ça t'apprend, et quelles sont tes deux options ?
  3. Quelle est la différence entre bash: python: command not found et [Errno 2] No such file or directory ? Lequel des deux implique que Python fonctionne ?
  4. Pourquoi 2 + 3 affiche 5 dans le REPL mais un script contenant seulement 2 + 3 n'affiche rien ?
  5. Ton script corrigé produit toujours l'ancienne sortie : quelle est la cause la plus probable, et où la vérifies-tu dans VS Code ?
  6. Pourquoi créer un fichier .py depuis le Bloc-notes est-il risqué sous Windows ?
  7. Une SyntaxError à la ligne 5 : combien de lignes du script ont été exécutées avant l'erreur ?

15. Checklist de compréhension

Si une case reste vide : refais les exercices de la section correspondante demain, AVANT d'ouvrir la leçon suivante.

16. Commit conseillé

Git est le sujet de la leçon 00-3 — si tu ne l'as pas encore faite, garde simplement tes fichiers : ils serviront de matière à ton premier commit réel. Si tu reviens ici après 00-3 :

git add lessons/level-00-environnement/exercices/mes-reponses/
git commit -m "exercises: complete lesson 00-1 first script"

Puis, si c'est ta fin de session : entrée de journal + git push.