Un zeste de Python

Débuter avec Python

Bien le bonjour ! Bienvenue dans le monde magique de Python !

À toi qui t’intéresses à la programmation informatique, au développement logiciel et à son apprentissage : voici un tutoriel pour te guider et te permettre d’avancer dans ta quête.

Ce cours a pour but de t’apprendre à parler le Python. Il s’agit d’un langage particulier — un langage de programmation — pour communiquer avec ton ordinateur afin de lui demander de réaliser des tâches précises (comme exécuter un calcul, récupérer des événements du clavier, afficher une image à l’écran, etc.), c’est-à-dire exécuter un programme informatique (un logiciel).

Il existe une multitude de langages de programmation (tels que le C, le Java, le PHP ou le Javascript), j’ai choisi le Python pour ce cours car il me semble être le langage idéal pour débuter puis continuer la programmation.
Peut-être connais-tu déjà l’un ou l’autre de ces langages, ou même que tu programmes au quotidien : ce cours s’adresse tout de même à toi, il vise à apprendre le Python quelque soit ton niveau de départ.

Ta quête du Python est sur le point de commencer ! Un tout nouveau monde de rêves, d’aventures et de programmation t’attend ! Dingue !

Pour nous rejoindre, rien de plus simple, rends-toi de ce pas vers le premier chapitre afin d’en découvrir plus sur le langage.

Un zeste de Python.
Un zeste de Python.

J’ai découpé ce cours en plusieurs parties (ou paliers) pour te permettre d’avancer pas à pas dans l’apprentissage du Python, en commençant par les bases pour à terme réussir à réaliser des programmes complets.
Chaque partie se divise en chapitres, pour présenter les différentes notions du langage, avec des exercices pour les mettre en pratique.

Les parties sont généralement conclues par un chapitre de travaux pratiques (TP), pour utiliser concrètement les connaissances apprises au long des chapitres qui précèdent, dans le but de réaliser un jeu de combat au tour par tour en mode texte.

Tu n’as pas besoin de connaissances particulières pour démarrer ce tutoriel : savoir installer un logiciel sur ton ordinateur et connaître les bases du calcul (opérations élémentaires) sont les seuls pré-requis.
Quelques notions d’anglais sont un plus.

La difficulté augmente bien sûr au long du cours, mais j’ai fait en sorte que l’avancée soit progressive et donc que cette difficulté soit transparente. N’hésite pas à demander de l’aide si toutefois tu buttais sur un point ou étais bloqué sur un exercice.
Je suis aussi ouvert à tous retours si tu trouves que telle notion est mal expliquée ou que telle autre mériterait d’être abordée.

Car oui, ce cours ne couvre pas l’entièreté du langage Python et n’a pas pour volonté de remplacer sa documentation. Il a simplement pour but d’apprendre les bases du langage et d’écrire des programmes complets en exploitant ces bases.
Mais ce tuto ne traite pas de la programmation objet en Python ou des notions avancées du langage, sujets pour lesquels j’ai écrit deux autres cours afin de compléter ton apprentissage :

Je t’ai donné soif d’apprendre ? Alors installe-toi, prends un smoothie, et n’hésite pas à y ajouter un zeste de Python.

Premiers pas avec Python

  1. Présentation du langage

    1. Qui es-tu, Python ?

    2. Réalisations concrètes

    3. Histoire

    4. Versions de Python

  2. Installation

    1. Installation sous Windows

    2. Installation sous MacOS

    3. Installation sous GNU/Linux

    4. Lancement de Python

    5. Éditeur de texte

  3. Prise en main de l'interpréteur

    1. Interpréteur interactif

    2. Une machine à calculer

  4. Écrire du code dans des fichiers

    1. Éditer un fichier Python

    2. Exécution du fichier

  5. Fichiers ou interpréteur interactif ?

    1. Interpréteur interactif

    2. Écriture dans des fichiers

Manipuler des données

  1. Retour sur la calculatrice

    1. Des nombres à virgule

    2. Autres opérateurs

    3. Fonctions

  2. Des variables pour sauvegarder nos résultats

    1. Une étiquette sur une valeur

    2. Assignations

    3. Conventions

  3. Manipuler du texte

    1. Chaînes de caractères

    2. Opérations sur les chaînes

  4. Interactions

    1. Entrées utilisateur

    2. Conversions de types

  5. Objets et méthodes

    1. Objets

    2. Méthodes

    3. Méthodes des chaînes de caractères

    4. Attributs

  6. TP : Combat en tour par tour

    1. Présentation générale du TP

    2. Initialisation du jeu

    3. Tour de jeu

Des programmes moins déterminés

  1. Les conditions (if/elif/else)

    1. Test d'égalité

    2. Bloc conditionnel

    3. Et sinon ?

    4. Structures multiples

  2. Expressions booléennes

    1. Opérations booléennes

    2. Booléens

  3. TP : Ajoutons des conditions à notre jeu

    1. Proposer plusieurs attaques

    2. Solution

  4. Les listes

    1. Des séquences de valeurs

    2. Opérations sur les listes

    3. Listes à plusieurs dimensions

  5. Itérer sur nos listes avec des boucles for

    1. Le bloc for

    2. Itération

  6. Boucler sur une condition (while)

    1. Boucler sur une condition

    2. Vers l'infini et au-delà

    3. Boucle for ou boucle while ?

  7. Algorithmes

    1. Minimum d'une liste

    2. Tri d'une liste

    3. Un peu de dessin

  8. TP : Ajoutons des boucles à notre jeu

    1. Itérer sur les attaques

    2. Un jeu au tour par tour

Types de données

  1. Retour sur les types précédents

    1. Généralités

    2. Booléens

    3. Nombres

    4. Chaînes de caractères

    5. Listes

    6. None

  2. Les dictionnaires

    1. Des tables d'association

    2. Opérations sur les dictionnaires

    3. Données composites

    4. Clés de dictionnaires

  3. Itérer sur un dictionnaire

    1. Dictionnaire et boucle for

    2. Autres manières d'itérer

  4. Les tuples

    1. Les tuples

    2. Opérations sur les tuples

    3. Utilisations des tuples

  5. TP

    1. Structurer les données

    2. Solution

Les fonctions

  1. Des fonctions pour factoriser

    1. Don't Repeat Yourself

    2. Factoriser

    3. Définir une fonction (bloc def)

    4. Appel de fonction

  2. Fonctions paramétrées

    1. Paramètres de fonction

    2. Espace de noms

    3. Arguments positionnels et nommés

  3. Retours de fonctions

    1. Renvoyer une valeur avec return

    2. Plusieurs return dans une fonction

    3. Renvoyer plusieurs valeurs

  4. Paramètres et types mutables

    1. Rappel sur les types mutables

    2. Paramètres mutables

  5. Fonctions de tests

    1. Un monde rempli de bugs

    2. Fonctions de tests

  6. TP : Intégrons des fonctions à notre application

    1. Découpage en fonctions

    2. Tests

Entrées / sorties

  1. Découper son code en modules

    1. Factoriser le code

    2. Les modules

    3. Imports

    4. Bibliothèque standard

    5. Modules de tests

  2. Lire un fichier en Python

    1. Fichiers et dossiers sur l'ordinateur

    2. Problématique : sauvegarder l'état de notre jeu

    3. Fonction open

    4. Fichiers

  3. Itérer sur un fichier

    1. Méthodes des fichiers

    2. Les fichiers sont itérables

  4. Écrire dans un fichier

    1. Écriture

    2. Autres modes des fichiers

  5. Chaînes de formatage

    1. Opérations de formatage

    2. f-strings

  6. Gérer les exceptions (try/except)

    1. Tout ne se passe pas comme prévu

    2. Éviter l'exception

    3. Traiter l'exception

  7. Formater les données

    1. Format JSON

    2. Format XML

    3. Format INI

    4. Format CSV

    5. Chaînes de bytes

    6. Sérialisation binaire

    7. Autres formats

  8. Arguments de la ligne de commande

    1. Ligne de commande

    2. Parseur d'arguments

  9. Les paquets

    1. Construction d'un paquet

    2. Fichier __init__.py

    3. Fichier __main__.py

  10. TP : Sauvegarder la partie

    1. Découpage en modules

    2. Sauvegarde

    3. Tests

Aller plus loin

  1. Les autres types de données

    1. Les ensembles

    2. Module collections

    3. Types

  2. Retour sur les conditions

    1. Instructions et expressions

    2. Expressions conditionnelles

  3. Retour sur les boucles

    1. Cas des boucles infinies

    2. Contrôle du flux

    3. Outils

    4. Listes en intension

    5. Itérateurs

  4. Retour sur les fonctions

    1. Arguments optionnels

    2. Arguments variadiques

    3. Documentation et annotations

    4. Décorateurs

    5. Fonctions lambdas

    6. Fonctions récursives

  5. Retour sur les variables

    1. Expressions d'assignation

    2. Annotations de types

    3. Scopes

  6. Retour sur les exceptions

    1. Bloc except

    2. Autres mots-clés

    3. Bloc with

    4. Lever une exception

  7. Débogage

    1. Programme de référence

    2. Introspection

    3. Déboguer « à la main »

    4. Utilisation d'un débogueur (Pdb)

    5. Déboguer avec votre IDE

La bibliothèque standard

  1. Tour d'horizon de la bibliothèque standard

    1. Fonctions natives

    2. Gestion des nombres

    3. Chemins et fichiers

    4. Modules systèmes

  2. Un peu d'aléatoire

    1. Le module random

    2. Distributions

  3. Gestion du temps

    1. Module time

    2. Module datetime

    3. Module calendar

  4. Expressions rationnelles

    1. Problématique

    2. Une histoire d'automates

    3. Module re

    4. Syntaxe des regex

    5. Quelques exercices

    6. Options

    7. Limitations

  5. TP : Monstre sauvage

    1. L'aléatoire à la rescousse !

    2. Animations

  6. Installer des modules complémentaires

    1. Installation

    2. Pip, le gestionnaire de paquets Python

    3. Environnements virtuels

Annexes

  1. Glossaire et mots clés

    1. Glossaire

    2. Tableau des mots-clés

    3. Tableau des opérateurs

    4. Priorité des opérateurs

    5. Autres éléments de syntaxe

  2. Notes diverses

    1. En-têtes de fichiers

  3. Quelques modules complémentaires bien utiles

    1. Requests

    2. Numpy

    3. Django

    4. Pillow

    5. PyGObject (PyGTK)

    6. Pygame

  4. Tests

    1. Pytest

    2. Unittest

  5. Outils

    1. Linters

    2. mypy

  6. Ressources

    1. Liens utiles

    2. Cours

    3. Exercices

    4. Discussions

    5. Conférences



Après la lecture de ce cours, ta quête du Python est loin d’être terminée. Tu connais maintenant les fondamentaux du langage, mais il y a encore tant à voir !
Je t’invite à continuer ton apprentissage en te dirigeant vers la programmation orientée objet en Python, pour découvrir comment mettre en place tes propres types de données.

Je te conseille aussi de jeter un œil aux secrets d’un code pythonique afin de bien t’imprégner de la philosophie Python.

De manière plus générale, regarde du côté des ressources données en annexe pour voir quels sujets pourraient t’intéresser, il y est question d’interfaces graphique, de programmation asynchrone ou encore de bases de données.

Un zeste de Python… Python in Zest' ♫


C’est un travail de plus de 4 ans de réflexion et d’écriture qui s’achève avec ce tutoriel.
Je tiens à remercier toutes les personnes qui m’ont aidé et soutenu pendant cette période, notamment les relecteurs et relectrices de la bêta ainsi que l’équipe de validation (un grand merci à @artragis pour le temps qu’il y a consacré).

Je rappelle enfin que ce cours est diffusé sous licence Creative Commons Attribution-ShareAlike 4.0 et que toute contribution est bienvenue. Les sources sont disponibles à l’adresse suivante : https://github.com/entwanne/cours_python_debutant.

Ces contenus pourraient vous intéresser

7 commentaires

"Temps de lecture : 18 heures et 30 minutes" : j’aime beaucoup la précision en demi-heures de PAVE.

J’ai juste survolé, mais ça a l’air fantastiquement qualitatif et fourni. Félicitations pour l’accouchement de ce joli bébé ! Je vais même pouvoir apprendre deux trois trucs alors même que j’utilise Python depuis près de 10 ans maintenant.

Là où j’ai un petit regret c’est de ne pas voir de générateurs (assez optionnels tout de même) et de décorateurs (cet outil de Python .-.), qui sont des outils qui personnellement me fascinent un peu. Je n’ai rien dit, un export en PDF suivi d’un Ctrl+F m’ont renseigné.

Bah, bravo :o

+3 -0

Un cours de très grande qualité, bravo et merci.

Je m’en sers de temps en temps pour revoir certaines notions (ou les liens très utiles donnés en annexe). Je pense aussi que c’est une bonne référence pour quelqu’un qui demande "par où commencer ?".

J’ai une question. Tes cours sont parfaitement clairs. Pourquoi quand je lis l’aide de python en fr. ou en., je ne comprends rien ? À vrai dire, c’est valable pour des modules aussi. Je m’arrache les yeux et je n’arrive jamais à finir la page en ayant des notions de ce que je cherchais. C’est seulement en voyant des tutos que ça devient plus clair. Et souvent pour les trucs plus complexes, c’est plus dur de trouver des clarifications. Idem sur d’autres API, comme Blender. Après peut-être que je suis vraiment pas doué. Mais bon ton avis m’intéresse.
Jolie actualisation au fait

+0 -0

Je ne sais pas vraiment te dire, ça dépend de la source de l’incompréhension. Souvent les pages de documentation classique vont avoir pour but de faire le tour du module en présentant chacune des fonctions qu’il propose, pas forcément de faire découvrir les fonctionnalités sous-jacentes.

Mais certaines pages vont plus loin que ça, et surtout il n’est pas rare dans la documentation de Python par exemple de trouver des pages guide/tutoriel pour expliquer des fonctionnalités plutôt que des modules. Mais ensuite je dirais que ça vient avec le temps, on comprend comment les pages sont organisées et quel est le jargon utilisé.

En voila un tutoriel sur Python qui tient la route ! Quel travail, avec un excellent résultat : une pédagogie bienveillante, le souci de montrer les choses importantes de manière progressive, des exemples démonstratifs et bien choisis. On apprécie particulièrement les mentions nécessaires des messages d’erreur, que bien des débutants zappent plus ou moins.

Bravo et merci. Je pense que cela ferait un bon livre.

+2 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte