Notes de cours · INF 2020

Python : des jeux au Web

Treize chapitres qui vont d'un premier print à un serveur de jeu multijoueur. On y écrit beaucoup de code : des listes et des dictionnaires, un jeu vidéo complet en Pygame, un site en Flask, et une application temps réel en WebSocket.

À propos de ces notes

Ce cours suppose que vous connaissez déjà un langage de programmation — n'importe lequel. Il repart des fondements, mais à un rythme soutenu, puis va nettement plus loin que ce qu'on attend d'un cours d'introduction.

L'approche est pratique : vous lirez et écrirez beaucoup de code. La progression est un pas à pas, et chaque chapitre s'appuie sur le précédent : le graphisme amène les fonctions, l'animation amène les classes, le jeu amène les exceptions, et le Web amène l'asynchrone. Travaillez régulièrement, et ne sautez pas d'étape.

Les consoles de ces pages exécutent du vrai Python, dans votre navigateur, sans rien installer. Modifiez le code, relancez-le, cassez-le : c'est fait pour.

Le manuel de référence est Programmation avec Python : des jeux au Web, de Robert Godin et Daniel Lemire, offert gratuitement en PDF. Ces notes en suivent le plan et le complètent ; elles ne le remplacent pas.

Le manuel du cours — à lire en premier

Programmation avec Python : des jeux au Web
Robert Godin et Daniel Lemire — 10e édition

Chaque semaine de ces notes accompagne un chapitre du manuel : lisez le chapitre, faites ses exercices, puis revenez ici. 397 pages, PDF de 4,7 Mo, offert gratuitement. Le PDF suffit pour tout le cours ; si vous préférez lire sur papier ou sur liseuse, le manuel se vend aussi en version papier et en version numérique.

Télécharger le PDF Chapitre par chapitre Version papier ou numérique sur Amazon.ca

Module 1 — Les fondations

Mise en route

Concepts de base

Installer Python, se repérer dans un terminal, configurer son éditeur, et lire une trace d'appels jusqu'au bout.

Lire le chapitre 1
Structures

Principes de base et structures de contrôle

Variables et affectation multiple, valeurs fausses, for et while, enumerate et zip, fonctions et portée.

Lire le chapitre 2
Types

Types et expressions

Modules, modifiable ou non, listes, tuples et découpage, dictionnaires et ensembles, chaînes et f-chaînes.

Lire le chapitre 3

Module 2 — Le graphisme et l’animation

Pygame

Graphisme 2D et fonctions

Une fenêtre, une boucle d'événements, des formes et des couleurs — et le moment où l'on comprend pourquoi les fonctions existent.

Lire le chapitre 4
Animation

Introduction à l'animation 2D

Cadence et Clock, vitesse et rebond, mouvement dépendant du temps écoulé, Rect et images.

Lire le chapitre 5

Module 3 — Les objets

Classes

Développement de classes

self, attributs d'instance et de classe, encapsulation et @property, héritage et polymorphisme, cohésion et couplage.

Lire le chapitre 6
Jeu vidéo

Animation 2D et jeu vidéo

Un jeu complet : acteurs, scène et boucle, détection de clic, sons, score et états de partie.

Lire le chapitre 7
Erreurs

Les exceptions

raise et try, hiérarchie des exceptions, classes propres à votre application — et quand il vaut mieux ne rien attraper.

Lire le chapitre 8

Module 4 — Les données

Chaînes

Formatage et analyse de chaînes

f-chaînes et spécifications de formatage ; expressions régulières, groupes nommés, quantificateurs avides et paresseux.

Lire le chapitre 9
Fichiers

Le traitement de fichiers

with et encodage, parcours d'un fichier de 10 Go, pathlib, CSV et JSON, écriture atomique.

Lire le chapitre 10
Complexité

Structures, algorithmes et complexité

Notation grand-O, recherche dichotomique, pourquoi un dictionnaire est en O(1), et le quadratique qui se cache dans une boucle.

Lire le chapitre 11

Module 5 — Le Web

Flask

Le développement d'applications Web

Requête et réponse, routes et gabarits Jinja2, formulaires et POST-redirect-GET, échappement et validation côté serveur.

Lire le chapitre 12
Temps réel

Applications Web asynchrones

Les limites de HTTP, WebSocket, asyncio et les coroutines, un serveur de diffusion — et pourquoi l'état du jeu vit sur le serveur.

Lire le chapitre 13

Outils et références

Le manuel

Programmation avec Python

Le manuel du cours en PDF, offert gratuitement — 397 pages — et la correspondance chapitre par chapitre avec ces notes. C'est la lecture principale.

Ouvrir le manuel
Avant de commencer

L'environnement de travail

Installer Python, les environnements virtuels, Visual Studio Code, Markdown, et la PEP 8 appliquée automatiquement.

Préparer sa machine
Manipuler

Laboratoires interactifs

Du vrai Python dans le navigateur : listes et tri, fichiers avec pathlib, mesure de la complexité, bac à sable pour les expressions régulières.

Ouvrir les laboratoires
Aide-mémoire

Pense-bête

La syntaxe, les structures, les fichiers, les classes, les exceptions, et les squelettes Pygame, Flask et asyncio.

Ouvrir le pense-bête
Référence

Glossaire

De la compréhension de liste au WebSocket : les termes du cours, définis brièvement et renvoyant au passage qui les développe.

Consulter le glossaire
Pour aller plus loin

Bibliowebographie

Le manuel du cours et son code sur GitHub, la documentation Python, Pygame, Flask, MDN et OWASP.

Voir les références
Navigation

Rechercher dans les notes

Un moteur qui parcourt les treize chapitres, section par section, sans quitter le navigateur ni solliciter de serveur.

Ouvrir la recherche

À propos de l'auteur

Daniel Lemire

Professeur d'informatique · Université du Québec (TÉLUQ), Montréal

Daniel Lemire a été chercheur au Conseil national de recherches du Canada et entrepreneur avant d'être professeur. Il est l'auteur de plus de quatre-vingts publications arbitrées, siège aux comités scientifiques de plusieurs conférences en informatique (ACM CIKM, WWW, ACM WSDM, ACM SIGIR, ACM RecSys) et est éditeur de la revue Software: Practice and Experience.

Ses logiciels sont utilisés par de grandes sociétés, dont Google et Facebook : il est l'un des auteurs de simdjson, capable d'analyser plusieurs gigaoctets de JSON par seconde, et le concepteur des Roaring Bitmaps, un format d'index compressé au cœur d'Apache Lucene, d'Elasticsearch et de ClickHouse. Ses travaux sur l'analyse rapide des nombres à virgule flottante ont été intégrés aux bibliothèques standard de plusieurs langages.

Il a reçu en 2020 le prix d'excellence en recherche et création de l'Université du Québec, et figure parmi les 2 % de scientifiques les plus cités au monde. Son blogue compte plusieurs milliers de lecteurs.

Le manuel du cours est coécrit avec Robert Godin, professeur d'informatique à l'UQAM.