Python s'installe en deux commandes sous Linux, et un premier programme tient en une ligne : print("Hello, World!"). Cette leçon part de zéro. Vous installez l'interpréteur, vous écrivez puis lancez un script (un fichier texte qui contient du code), vous stockez des valeurs dans des variables, vous découvrez les quatre types de base (int, float, str, bool) et vous apprenez à lire les messages d'erreur les plus fréquents. À la fin, vous savez aussi rendre un script exécutable comme une commande. Comptez 30 à 35 minutes, exemples compris, et une trentaine de minutes de plus pour le TP facultatif de fin.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Installer Python 3 et vérifier la version installée.
- Écrire un fichier
.py, le lancer, et tester des instructions dans l'interpréteur interactif. - Créer des variables, les nommer correctement et connaître leur type.
- Convertir une valeur d'un type à un autre, et comprendre pourquoi Python refuse certaines conversions.
- Faire des calculs, manipuler du texte et combiner des conditions avec
and,or,not. - Rendre un script exécutable avec un shebang et
chmod +x. - Lire la dernière ligne d'une erreur pour trouver sa cause.
Prérequis
Section intitulée « Prérequis »Aucune notion de programmation n'est nécessaire. Il faut seulement savoir ouvrir un terminal et y taper une commande (le prompt et le terminal), ainsi que se déplacer dans les dossiers (naviguer dans les fichiers). Prévoyez un éditeur de texte (Visual Studio Code, Sublime Text, nano, ou celui de votre système) et, sous Linux, les droits sudo pour installer un paquet.
Comment installer Python et vérifier sa version ?
Section intitulée « Comment installer Python et vérifier sa version ? »Python est un langage interprété : un programme appelé interpréteur lit votre fichier et exécute les instructions (les ordres écrits dans le programme) une à une. Installer Python revient donc à installer cet interpréteur. Choisissez l'onglet de votre système.
sudo apt updatesudo apt install python3Si le gestionnaire de paquets vous est peu familier, le guide apt l'explique.
Sur RHEL 10, AlmaLinux 10 ou Fedora, le paquet python3 suffit :
sudo dnf install python3Sur RHEL 9 et ses dérivés (AlmaLinux 9, Rocky Linux 9), ce même paquet installe Python 3.9, trop ancien pour cette leçon. Installez plutôt la version 3.12 fournie à côté, puis tapez python3.12 partout où la leçon écrit python3 :
sudo dnf install python3.12python3.12 --versionLe guide dnf détaille ce gestionnaire.
Téléchargez l'installeur officiel (fichier .pkg) depuis la page python.org/downloads/macos (par exemple python-3.15.0-macos11.pkg). Avant de l'ouvrir, vérifiez sa signature dans le terminal, en remplaçant le nom par celui de votre fichier :
pkgutil --check-signature python-installeur.pkgLa réponse doit citer la Python Software Foundation comme signataire. Si ce n'est pas le cas, ne l'ouvrez pas et retéléchargez-le.
Si Homebrew est déjà installé sur votre machine, brew install python convient aussi : cette formule par défaut (Python 3.15 en octobre 2026) installe la commande python3. Évitez pour débuter les formules versionnées comme python@3.14, qui n'installent que python3.14.
Depuis Python 3.14, la documentation officielle recommande le Python install manager, qui installe les commandes python et py. Le plus simple est de l'installer depuis le Microsoft Store (cherchez « Python install manager », identifiant 9NQ7512CXL7T), ou depuis un terminal PowerShell :
winget install 9NQ7512CXL7T -eLe fichier d'installation est aussi proposé sur python.org. L'ancien installeur traditionnel est encore fourni, mais il est déprécié depuis Python 3.14. Au premier lancement de py, le gestionnaire propose de télécharger un runtime Python : acceptez. Sous Windows, utilisez py ou python : une commande python3 existe, mais la documentation précise qu'elle n'est pas destinée à un usage courant. Remplacez donc python3 par py dans les commandes de cette leçon.
Pour un profil Ops, l'alternative la plus confortable est WSL (Windows Subsystem for Linux) : vous obtenez un vrai terminal Debian ou Ubuntu, et l'onglet Linux s'applique tel quel.
Vérifiez ensuite que l'installation a fonctionné :
python3 --versionVous obtenez le numéro de version, par exemple Python 3.12.3 sur Ubuntu 24.04 ou Python 3.13.5 sur Debian 13. Il faut Python 3.10 ou plus récent : les messages d'erreur montrés dans cette leçon ont pris leur forme actuelle en 3.10, et une version 3.9 affiche des messages plus pauvres (invalid syntax au lieu de invalid decimal literal, sans la suggestion Did you mean). Sous Windows, tapez py --version.
Pour installer plusieurs versions côte à côte, voyez pyenv et uv.
Comment écrire et lancer un premier programme Python ?
Section intitulée « Comment écrire et lancer un premier programme Python ? »Un programme Python est un simple fichier texte qui porte l'extension .py. Créez un dossier de travail, ouvrez votre éditeur et saisissez cette seule ligne :
print("Hello, World!")Une fonction est une commande déjà fournie par Python, que l'on appelle par son nom suivi de parenthèses. Ici, print() affiche à l'écran ce qu'on lui donne entre les parenthèses. Le texte est entouré de guillemets : c'est une chaîne de caractères. Enregistrez le fichier sous le nom hello.py, ouvrez un terminal dans ce dossier et lancez-le :
python3 hello.pyHello, World!Vous venez d'écrire et d'exécuter votre premier programme. Le schéma ci-dessous montre les deux façons de lancer un script : en appelant l'interpréteur vous-même (celle que vous venez d'utiliser), ou directement par ./hello.py, ce qui exige un shebang et le droit d'exécution, vus plus bas. Dans les deux cas, c'est bien l'interpréteur python3 qui affiche le résultat dans le terminal.
Le mode interactif de l'interpréteur
Section intitulée « Le mode interactif de l'interpréteur »Lancé sans fichier, l'interpréteur ouvre une session interactive : vous tapez une instruction, Python répond aussitôt. C'est le meilleur terrain d'essai pour une notion nouvelle, sans créer de fichier.
python3Le prompt >>> indique que Python attend une instruction :
>>> print("Bonjour, Python!")Bonjour, Python!>>> 2 + 35Dans ce mode, la valeur d'une expression (un calcul qui produit un résultat, comme 2 + 3) s'affiche sans print(). Quittez avec exit() ou le raccourci Ctrl+D (Ctrl+Z puis Entrée sous Windows). Dans cette leçon, les lignes qui commencent par >>> se testent ici ; les autres peuvent aller dans un fichier.
L'indentation délimite les blocs
Section intitulée « L'indentation délimite les blocs »Là où d'autres langages utilisent des accolades, Python regroupe les instructions par indentation : un décalage de quatre espaces en début de ligne. Une condition if en donne un premier aperçu, car elle exécute la ligne décalée seulement si la condition est vraie :
if 5 > 3: print("5 est plus grand que 3")Si vous oubliez le décalage, Python refuse d'exécuter le programme :
if 5 > 3:print("5 est plus grand que 3")IndentationError: expected an indented block after 'if' statement on line 1Python affiche en réalité quelques lignes de plus (le traceback, expliqué en fin de leçon). Les exemples d'erreur de cette leçon n'en montrent que la dernière ligne, la plus utile.
Le message dit exactement ce qui manque : un bloc indenté après le if. Les conditions et les boucles sont traitées dans structures de contrôle et collections ; retenez ici que l'indentation fait partie de la syntaxe.
Qu'est-ce qu'une variable en Python ?
Section intitulée « Qu'est-ce qu'une variable en Python ? »Une variable est un nom qui désigne une valeur gardée en mémoire. On la crée avec le signe =, appelé affectation : le nom à gauche reçoit la valeur à droite.
nom = "Alice"age = 30taille = 1.75est_majeur = Trueprint(nom, age, taille, est_majeur)Python ne demande aucune déclaration de type : la variable existe dès qu'on lui affecte une valeur, et son type est déduit de cette valeur. C'est le typage dynamique. On peut aussi lui affecter ensuite une valeur d'un autre type, mais ce n'est pas une bonne habitude : une variable doit garder le même sens du début à la fin.
Les noms de variables suivent quelques règles :
- ils contiennent des lettres, des chiffres et le tiret bas
_, sans espace ; - ils ne commencent jamais par un chiffre ;
- ils sont sensibles à la casse :
nometNomsont deux variables distinctes ; - la convention est le snake_case (minuscules séparées par
_, commeest_majeur) et un nom qui dit ce que la variable contient.
Les deux premières erreurs de débutant viennent de ces règles. Écrire Nom au lieu de nom donne :
nom = "Alice"print(Nom)NameError: name 'Nom' is not defined. Did you mean: 'nom'?Python ne connaît pas Nom, et il suggère le nom le plus proche. Quant à un nom qui commence par un chiffre, il est refusé dès la lecture :
2eme_essai = 1SyntaxError: invalid decimal literalPython lit 2eme comme un nombre mal écrit, d'où ce message qui ne parle pas de variable : renommez en essai_2 ou deuxieme_essai.
Quels sont les types de données de base ?
Section intitulée « Quels sont les types de données de base ? »Le type d'une valeur détermine ce qu'on peut en faire : on additionne des nombres, on découpe du texte. Quatre types de base suffisent pour commencer.
| Type | Nom complet | Contient | Exemple |
|---|---|---|---|
int | entier | un nombre entier, positif ou négatif | 42 |
float | flottant | un nombre décimal, avec un point | 3.14 |
str | chaîne de caractères | du texte entre guillemets simples ou doubles | "Bonjour" |
bool | booléen | une valeur de vérité : True ou False | True |
Le séparateur décimal est le point, jamais la virgule. Pour connaître le type d'une valeur, la fonction type() répond. Reprenez les variables de la section précédente (dans le même fichier, ou la même session interactive) :
print(type(nom), type(age), type(taille), type(est_majeur))<class 'str'> <class 'int'> <class 'float'> <class 'bool'>age = 30 est donc un int et taille = 1.75 un float, sans que vous l'ayez précisé. Les booléens s'écrivent avec une majuscule : True et False.
Comment convertir une valeur d'un type à un autre ?
Section intitulée « Comment convertir une valeur d'un type à un autre ? »Python ne mélange pas les types dans le dos du programmeur. Additionner un texte et un nombre est une erreur :
"123" + 1TypeError: can only concatenate str (not "int") to strIl faut convertir explicitement avec les fonctions du même nom que les types : int(), float(), str().
>>> int("123") + 1124>>> float("123")123.0>>> str(30) + " ans"'30 ans'Le résultat '30 ans' apparaît entre guillemets dans le mode interactif, qui montre la représentation d'une valeur ; avec print(), vous lirez 30 ans. Certaines conversions échouent : int() n'accepte pas un texte qui contient un point décimal.
int("12.5")ValueError: invalid literal for int() with base 10: '12.5'Passez par float() d'abord, puis int(). Notez que int() tronque : il coupe la partie décimale au lieu d'arrondir.
>>> int(float("12.5"))12>>> int(3.99)3Enfin, bool() suit une règle simple : une valeur vide ou nulle donne False, toute autre True. Attention, c'est la présence de texte qui compte, pas son sens.
>>> bool("")False>>> bool("False")True>>> bool(0)FalsePour intégrer une variable dans une phrase sans passer par str(), les f-strings (f"{nom} a {age} ans" donne Alice a 30 ans) sont détaillées dans formater une chaîne.
À quoi servent les commentaires ?
Section intitulée « À quoi servent les commentaires ? »Un commentaire est du texte ignoré par Python, écrit pour les humains : vous dans six mois, ou un collègue. Il commence par le symbole # et s'arrête à la fin de la ligne. Il peut occuper une ligne entière ou suivre une instruction.
# Calculer la somme de deux nombressomme = 5 + 3nom = "Alice" # un commentaire peut aussi suivre le codeUn bon commentaire explique pourquoi on fait quelque chose, pas ce que dit déjà le code : somme = 5 + 3 # additionne 5 et 3 n'apporte rien. Un script porte souvent en tête un en-tête qui donne son but, son auteur et sa date, comme on le voit plus bas avec le shebang.
Quelles opérations faire sur des variables ?
Section intitulée « Quelles opérations faire sur des variables ? »Les variables servent à calculer, à assembler du texte et à poser des conditions. Trois familles d'opérateurs couvrent les besoins de départ : mathématiques, textuels et logiques. Un opérateur est un symbole qui combine des valeurs.
Les opérations mathématiques
Section intitulée « Les opérations mathématiques »Python connaît les sept opérateurs arithmétiques courants. Avec a = 10 et b = 3 :
| Opérateur | Rôle | Exemple | Résultat |
|---|---|---|---|
+ | addition | a + b | 13 |
- | soustraction | a - b | 7 |
* | multiplication | a * b | 30 |
/ | division | a / b | 3.3333333333333335 |
// | division entière | a // b | 3 |
% | modulo (reste de la division) | a % b | 1 |
** | puissance | a ** b | 1000 |
Un détail piège les débutants : / renvoie toujours un float, même quand la division tombe juste, car 10 / 2 vaut 5.0. Pour un résultat entier, utilisez //. Le modulo % donne le reste : 10 % 3 vaut 1, puisque 10 = 3 * 3 + 1. Il sert par exemple à tester si un nombre est pair (n % 2 vaut 0). Diviser par zéro lève une erreur :
1 / 0ZeroDivisionError: division by zeroManipuler des chaînes de caractères
Section intitulée « Manipuler des chaînes de caractères »Les chaînes se combinent et se découpent avec quelques opérations de base.
chaine1 = "Bonjour"chaine2 = "Python"
print(chaine1 + ", " + chaine2) # Bonjour, Pythonprint(len(chaine1)) # 7print(chaine1[0]) # Bprint(chaine2[0:3]) # Pytprint(chaine2[-1]) # nprint("ab" * 3) # abababLa concaténation + colle deux chaînes bout à bout. len() donne la longueur. L'indexation chaine[0] désigne un caractère par sa position, et la première position est 0, pas 1. Un indice négatif compte depuis la fin : [-1] est le dernier caractère. Le découpage chaine2[0:3] extrait une tranche : il part de l'indice 0 inclus et s'arrête avant l'indice 3, d'où Pyt (trois caractères, pas quatre). Enfin * répète une chaîne. Les méthodes de texte (split, strip, replace) sont dans les chaînes de caractères et la notation par tranches dans le slicing.
Les opérations logiques
Section intitulée « Les opérations logiques »Les opérateurs logiques combinent des booléens, ce qui servira à écrire des conditions.
and: vrai seulement si les deux côtés sont vrais.or: vrai si au moins un côté est vrai.not: inverse la valeur.
>>> True and FalseFalse>>> True or FalseTrue>>> not TrueFalse>>> 5 > 3 and 2 > 1TrueLes comparaisons (>, <, et == qui teste l'égalité) produisent elles-mêmes des booléens, ce qui permet de les combiner comme dans le dernier exemple.
La priorité des opérations
Section intitulée « La priorité des opérations »Comme en mathématiques, Python évalue la multiplication avant l'addition. Les parenthèses imposent un autre ordre, et c'est le moyen le plus lisible de lever le doute.
>>> 5 + 2 * 311>>> (5 + 2) * 321Comment rendre un script Python exécutable ?
Section intitulée « Comment rendre un script Python exécutable ? »Jusqu'ici vous avez lancé vos fichiers avec python3 hello.py. Sous Linux et macOS, on peut les lancer comme n'importe quelle commande, par ./hello.py. Il faut pour cela une première ligne spéciale, le shebang, et le droit d'exécution. Le shebang indique au système quel interpréteur démarrer. Voici un script complet, avec un en-tête de commentaires :
#!/usr/bin/env python3# Auteur : Jean Dupont# Date : 2026-10-14# Description : affiche un message de bienvenueprint("Hello, World!")La ligne #!/usr/bin/env python3 doit être la toute première du fichier. /usr/bin/env retrouve python3 où qu'il soit installé. Pour Python, ce n'est qu'un commentaire puisqu'elle commence par # : seul le système la lit. Sur RHEL 9, où python3 désigne la 3.9, écrivez #!/usr/bin/env python3.12. Enregistrez ce script sous mon_script.py, puis tentez de le lancer directement :
./mon_script.pybash: ./mon_script.py: Permission deniedSous zsh, le shell par défaut de macOS, le même refus s'écrit zsh: permission denied: ./mon_script.py. Le fichier n'a pas encore le droit d'exécution ; chmod +x l'ajoute (le principe des droits est expliqué dans les permissions Linux) :
chmod +x mon_script.py./mon_script.pyHello, World!Sans shebang, ou sans chmod +x, il reste la méthode sûre : python3 mon_script.py, qui fonctionne toujours. Sous Windows hors WSL, le shebang et chmod ne s'appliquent pas : lancez le script avec py mon_script.py.
Comment corriger les erreurs les plus fréquentes ?
Section intitulée « Comment corriger les erreurs les plus fréquentes ? »Une erreur n'est pas un échec : Python vous dit précisément ce qui ne va pas. Quand un programme plante, il affiche un traceback, la liste des lignes traversées. La partie utile est la dernière ligne : elle donne le type de l'erreur (NameError, TypeError…) puis un message. Au-dessus, il indique le fichier et le numéro de la ligne fautive. Lisez toujours de bas en haut : type, message, puis ligne.
| Symptôme | Cause | Solution |
|---|---|---|
python: command not found | Sur Debian, Ubuntu, RHEL ou AlmaLinux, seule la commande python3 existe | Utiliser python3, ou installer python-is-python3 sous Ubuntu |
bash: ./mon_script.py: Permission denied (sous zsh : zsh: permission denied) | Le droit d'exécution manque | chmod +x mon_script.py, ou lancer avec python3 mon_script.py |
IndentationError: expected an indented block | La ligne après if (ou autre bloc) n'est pas décalée | Indenter de quatre espaces |
NameError: name 'Nom' is not defined | Faute de casse, ou variable pas encore créée | Vérifier l'orthographe et créer la variable avant de l'utiliser |
SyntaxError: invalid decimal literal | Un nom de variable commence par un chiffre | Renommer (essai_2 plutôt que 2eme_essai) |
TypeError: can only concatenate str (not "int") to str | Un texte et un nombre additionnés | Convertir avec str() ou int() |
ValueError: invalid literal for int() | int() reçoit un texte qui n'est pas un entier, comme "12.5" | Passer par float() d'abord, ou corriger la donnée |
ZeroDivisionError: division by zero | Division par zéro | Vérifier le diviseur avant de diviser |
Mettre en pratique
Section intitulée « Mettre en pratique »Un exemple recopié apprend peu ; le TP 00 : Intro Python vous fait construire pas à pas un script fondamentaux.py qui reprend chaque notion de la leçon. Il se trouve dans le dépôt python-training : clonez-le, ouvrez le dossier 00-Intro-Python et suivez le README.md de l'étape 1 à l'étape 9, le script complet. Lancez le script après chaque étape et lisez les erreurs plutôt que de les contourner. Comptez une trentaine de minutes en plus de la leçon.
Le TP affiche ses résultats avec des f-strings (f"Age: {age}" insère la valeur de age dans le texte) et type(age).__name__, qui donne le nom du type, int, sans le <class '...'> ; \n dans une chaîne insère un saut de ligne. Ces trois écritures servent seulement à l'affichage : recopiez-les telles quelles ; les f-strings sont détaillées dans formater une chaîne.
Arrêtez-vous avant la section « Challenge » du README : elle demande des conditions et des boucles, pas encore vues. Revenez-y après la leçon structures de contrôle et collections.
Vous avez réussi si, sans relire la leçon, vous savez :
- créer un script avec un shebang et le lancer par
./, aprèschmod +x(sous Windows hors WSL, parpy fondamentaux.py) ; - commenter votre code avec
#; - créer des variables, afficher leur type, et convertir entre
int,floatetstr; - faire des calculs, manipuler des chaînes et tester
and,or,notavec des comparaisons, et prédire le résultat de5 + 2 * 3; - observer
bool()sur1,0,''et'Hello'.
Le TP ne provoque pas d'erreurs volontaires : si l'une des erreurs du tableau précédent apparaît pendant votre travail, vous devez savoir la reconnaître et la corriger.
À retenir
Section intitulée « À retenir »- On lance un programme par
python3 fichier.py(la commandepythonn'existe pas toujours ;pysous Windows), avec Python 3.10 ou plus récent ; le mode interactifpython3teste une instruction à la fois. - Python délimite ses blocs par l'indentation, pas par des accolades.
- Une variable se crée par affectation,
age = 30, sans déclarer de type. Les noms sont sensibles à la casse (nometNomdiffèrent) et ne commencent jamais par un chiffre (2eme_essaiest refusé). - Les quatre types de base sont
int,float(taille = 1.75),stretbool;type()les révèle etint(),float(),str()convertissent (int("123") + 1vaut124). /renvoie toujours unfloat,%donne le reste (10 % 3vaut1), et la multiplication passe avant l'addition sauf parenthèses (5 + 2 * 3vaut11).- Une chaîne s'indexe à partir de
0:"Python"[0:3]vaut"Pyt". #ouvre un commentaire, et le shebang#!/usr/bin/env python3en est un aussi pour Python.- Pour lancer
./mon_script.py, il faut un shebang et le droit d'exécution donné parchmod +x.
Contrôle de connaissances
Section intitulée « Contrôle de connaissances »Ces questions portent uniquement sur ce que cette leçon enseigne : variables, types, conversions, opérations et lancement d'un script.
Contrôle de connaissances
Validez vos connaissances avec ce quiz interactif
Informations
- Le chronomètre démarre au clic sur Démarrer
- Questions à choix multiples, vrai/faux et réponses courtes
- Vous pouvez naviguer entre les questions
- Les résultats détaillés sont affichés à la fin
Lance le quiz et démarre le chronomètre
Vérification
(0/0)Score par domaine
Un domaine regroupe plusieurs guides et reçoit plusieurs questions : son score est plus fiable qu'un score par thème, qui porte souvent sur une seule question.
Bilan
Points forts
Aucun sujet réussi à 80 % sur au moins deux questions pour l’instant.
Points faibles
Aucun sujet sous le seuil de réussite.
À faire ensuite
Des indices pour retenter votre chance ?
Continuer le cours : Structures et collections
Continuer le cours : Structures de contrôle et collections
Nouveau quiz complet avec des questions aléatoires
Retravailler uniquement les questions ratées
Retour à la liste des certifications