Initiation au langage Python
J’ai écrit un mémento pour le langage Python (70 pages quand même), et un autre (60 pages) pour la bibliothèque Numpy (qui étend les capacités numériques de Numpy).
Chapitre 1 — Premiers pas avec Python
Survolez 💬 devant le titre pour une description.
- 💬 Comprendre les variables Python, leur initialisation, les affectations et le typage dynamique, avec des exemples en mode interactif. Variables : initialisation avant utilisation
- 💬 Apprendre les affectations simultanées en Python : initialiser plusieurs variables, échanger leurs valeurs et effectuer des permutations. Variables : affectations simultanées
- 💬 Utiliser le point-virgule en Python pour séparer plusieurs instructions sur une ligne et comprendre leur ordre d’exécution. Le séparateur d’instructions « ; »
- 💬 Choisir les noms de variables en Python, reconnaître les mots réservés et éviter de masquer les fonctions intégrées comme len. Noms de variables et mots réservés
- 💬 Découvrir les principales fonctions intégrées de Python : conversions, calculs, chaînes, listes, aide et saisie au clavier, avec des exemples. Quelques fonctions intégrées
- 💬 Écrire, sauvegarder et exécuter un script dans IDLE. Exemple de tri par insertion, commentaires, docstrings et arguments facultatifs. La fenêtre d’édition dans l’application Idle
- 💬 Importer un module personnel en Python : répertoire courant, sys.path, espaces de noms, noms qualifiés, alias et importation des définitions. Importer un module personnel en mode interactif
- 💬 Organiser plusieurs modules Python, utiliser le test __name__ == «__main__« et réunir des fonctions de tri dans un module de test. Importation simultanée de plusieurs modules personnels
Chapitre 2 — Types numériques, comparaisons, intervalles
Survolez 💬 devant le titre pour une description.
- 💬 Reconnaître les types bool, int, float et complex en Python, utiliser type et comprendre la notation des nombres complexes. Quelques types (classes) de base
- 💬 Calculer avec les entiers, flottants et complexes en Python : opérations arithmétiques, conversions, arrondis et division euclidienne. Opérations entre types numériques
- 💬 Utiliser les opérateurs +=, -=, *= et les autres affectations augmentées de Python sur les nombres, les chaînes et les listes. Les opérateurs avec assignation
- 💬 Importer le module math en Python et utiliser ses fonctions : racines, logarithmes, exponentielles, trigonométrie et arrondis. Les fonctions mathématiques du module math
- 💬 Calculer avec les nombres complexes grâce au module cmath de Python : fonctions mathématiques, argument et coordonnées polaires. Le module cmath
- 💬 Manipuler les entiers en binaire, octal et hexadécimal en Python. Utiliser les opérateurs bit à bit et les décalages. Arithmétique des entiers
- 💬 Comparer des valeurs en Python, combiner les booléens avec and, or et not, et comprendre l’évaluation paresseuse et les priorités. Valeurs booléennes et comparaisons
- 💬 Distinguer égalité des valeurs et identité des objets en Python. Comprendre les références, les objets mutables et les copies de listes. Égalité structurelle et égalité physique
Chapitre 3 — Initiation à la programmation Python
Survolez 💬 devant le titre pour une description.
- 💬 Lire une réponse au clavier avec input et afficher des résultats avec print en Python. Régler les séparateurs et les fins de ligne. Entrée au clavier (input) et affichage à l’écran (print)
- 💬 Comprendre pourquoi les programmes regroupent des instructions en blocs. Exemples de conditions, de répétitions et de blocs emboîtés. Nécessité de délimiter des blocs d’instructions
- 💬 Délimiter correctement les blocs en Python par l’indentation. Distinguer clauses, en-têtes et suites d’instructions. L’importance fondamentale de l’indentation en Python
- 💬 Écrire des branchements conditionnels en Python avec if, elif et else. Délimiter les blocs et suivre l’ordre des tests. Branchements conditionnels if…elif…else…
- 💬 Former une expression conditionnelle en Python avec la syntaxe expression1 if condition else expression2 et combiner plusieurs tests. Expressions conditionnelles
- 💬 Répéter des instructions avec while en Python. Utiliser break et continue et étudier un exemple avec la suite de Syracuse. Répétitions conditionnelles (while)
- 💬 Construire des intervalles d’entiers avec range en Python. Comprendre les bornes, le pas et les intervalles vides ou décroissants. Notion d’intervalle
- 💬 Parcourir un objet avec for en Python. Comprendre les boucles sur les intervalles et les chaînes, break, continue et la clause else. Répétitions inconditionnelles (boucles for)
- 💬 Utiliser l’instruction pass en Python pour réserver une branche encore vide pendant la mise au point d’un programme. L’instruction pass
Chapitre 4 — Écrire des fonctions Python
Survolez 💬 devant le titre pour une description.
- 💬 Comprendre la valeur None et le rôle de return dans une fonction Python. Distinguer résultat renvoyé et affichage à l’écran. La valeur None, et l’instruction return
- 💬 Explorer l’espace de noms global en Python avec globals. Comprendre les noms des variables, des fonctions et des objets définis. L’espace de noms global
- 💬 Comprendre l’espace local d’une fonction Python, les fonctions emboîtées, locals et l’effet des mutations sur les arguments. L’espace de noms local d’une fonction
- 💬 Étudier la visibilité des variables dans les fonctions Python emboîtées et utiliser global pour modifier une variable globale. Remarques sur les espaces de noms emboîtés
- 💬 Définir des valeurs par défaut et appeler les fonctions Python avec des arguments positionnels ou nommés, à travers des exemples. Paramètres positionnels ou nommés, valeurs par défaut
- 💬 Intercepter les exceptions en Python avec try et except, préciser les erreurs traitées, utiliser else et lever une exception. Rattrapage des exceptions
- 💬 Définir des fonctions anonymes en Python avec lambda et les utiliser dans des tris et des traitements avec map et filter. Fonctions lambda
- 💬 Documenter une fonction Python avec une docstring, consulter help et découvrir les annotations et les attributs de fonction. Documentation des fonctions
Chapitre 5 — Les séquences (chaînes, tuples, listes)
Survolez 💬 devant le titre pour une description.
- 💬 Découvrir les propriétés communes aux chaînes, tuples et listes Python : indices, tranches, appartenance, longueur et parcours. Propriétés communes aux séquences (hors “mutations”)
- 💬 Distinguer les séquences mutables et non mutables en Python. Comprendre les références partagées et les mutations de listes. Séquences mutables ou non
- 💬 Construire des listes en compréhension en Python avec des conditions et des boucles imbriquées, en suivant leur ordre d’évaluation. Listes définies “en compréhension”
- 💬 Modifier des listes Python : indices, tranches, insertions, suppressions, append, extend et tri sur place ou par copie. Opérations de mutation de listes
- 💬 Créer et manipuler des tuples en Python : indices, tranches, concaténation, dépaquetage et différences avec les listes. Les tuples
- 💬 Manipuler les chaînes Python : création, indices, tranches, caractères spéciaux et principales méthodes de recherche ou de transformation. Les chaînes de caractères
- 💬 Découper et réunir des chaînes Python avec split et join, puis construire des chaînes formatées avec la méthode format. Méthodes importantes sur les chaînes (split, join, format)
- 💬 Distinguer les chaînes Unicode, bytes et bytearray en Python. Comprendre l’encodage, le décodage et la mutabilité des octets. Objets de type bytes et bytearray
Chapitre 6 — Dictionnaires, ensembles, itérateurs, générateurs, fichiers
Survolez 💬 devant le titre pour une description.
- 💬 Créer et utiliser les dictionnaires Python : clés, valeurs, méthodes, parcours, construction en compréhension et mises à jour. Dictionnaires
- 💬 Manipuler les ensembles Python : création, appartenance, ajouts, suppressions, inclusion, réunion, intersection et différences. Ensembles
- 💬 Comprendre les itérateurs en Python, leur parcours progressif, next, l’épuisement des valeurs et la conversion en liste. Itérateurs
- 💬 Utiliser enumerate, zip, any, all et reversed pour parcourir, combiner et tester des objets itérables en Python. Fonctions utiles sur les itérateurs
- 💬 Créer des générateurs avec yield en Python. Comparer fonctions et générateurs à partir de la suite de Fibonacci et utiliser next. Générateurs (instruction yield)
- 💬 Ouvrir, lire, écrire et fermer des fichiers Python en mode texte ou binaire. Parcourir les lignes et enregistrer des objets avec pickle. Fichiers
Chapitre 7 — Quelques fonctions de quelques modules…
Survolez 💬 devant le titre pour une description.
- 💬 Générer des nombres aléatoires et effectuer des tirages en Python avec random : intervalles, choix, mélanges et échantillons. Le module random
- 💬 Effectuer des calculs décimaux avec une précision choisie en Python. Comprendre les limites des flottants et utiliser Decimal. Le module decimal
- 💬 Représenter et calculer des nombres rationnels en Python avec Fraction, à partir d’entiers, de chaînes ou de flottants. Le module fractions
- 💬 Découvrir les constantes du module string de Python : lettres, chiffres, ponctuation et ensembles de caractères usuels. Le module string
- 💬 Construire et combiner des itérateurs avec itertools en Python : parcours, accumulations, produits, permutations et combinaisons. Le module itertools
- 💬 Utiliser operator pour représenter des opérateurs par des fonctions et functools.reduce pour effectuer un calcul cumulatif. Les modules operator et functools
- 💬 Manipuler les dates et mesurer des durées en Python avec time. Convertir les formats et comparer le temps d’exécution de programmes. Le module time
- 💬 Compter les occurrences d’objets avec Counter en Python et utiliser les opérations sur les compteurs dans des simulations aléatoires. La classe Counter du module collections
- 💬 Utiliser deque en Python pour ajouter et retirer des éléments aux deux extrémités, effectuer des rotations et limiter la longueur. La classe deque du module collections
- 💬 Manipuler des tas binaires avec heapq en Python, extraire des valeurs extrêmes et fusionner des itérables déjà triés. Le module heapq
- 💬 Rechercher des positions d’insertion et insérer des éléments dans une liste triée en Python avec les fonctions du module bisect. Le module bisect
- 💬 Distinguer copie superficielle et copie profonde en Python avec copy et deepcopy, notamment pour les listes de listes. Le module copy
- 💬 Retrouver les modules et les ressources présentés pour poursuivre l’apprentissage de Python, des fichiers aux interfaces graphiques. Autres modules et adresses utiles
L’abrégé de syntaxe va moins loin que la petite référence Python, et n’aborde pas Numpy.
Il est écrit em Html (pour être consulté en ligne), tout comme les exercices corrigés.
Cliquer pour un abrégé de syntaxe Python
Cliquer pour des exercices corrigés en Python
Quelques exercices du Project Euler
Le Project Euler est situé à l’adresse suivante: http://projecteuler.net.
À ce jour, j’ai rédigé une soixantaine d’exercices du Project Euler. Vous trouverez ici mes solutions à quelques-uns des tous premiers énoncés (réponses écrites en Python). Je vous engage à essayer de répondre par vous-même aux problèmes posés avant de consulter les solutions.
Cliquer pour les exercices du Project Euler
Euler 001: somme des entiers de [0,N[ divisibles par 3 ou par 5
Euler 002: somme des nombres de Fibonacci pairs et inférieurs à N
Euler 003: fonction donnant le plus grand facteur premier de N
Euler 004: palindrome max produit de deux entiers à trois chiffres
Euler 005: plus petit entier >0 et divisible par les entiers de 1 à N
Euler 006: fonction calculant \bigl(\sum_{k=1}^{n}k\bigr)^{2}-\sum_{k=1}^{n}k^{2}
Euler 007: fonction renvoyant le n-ième nombre premier
Euler 008: produit max de 5 chiffres consécutifs de n (1000 chiffres)
Euler 009: triplets rectangulaires de somme donnée
Euler 010: somme des entiers premiers strictement inférieurs à N
Euler 011: produit max de 4 nombres adjacents d’une grille 20\times 20
Euler 012: plus petit nombre triangulaire ayant plus de N diviseurs
Euler 013: dix premiers chiffres de la somme de cent nombres
Euler 014: plus longue suite avant retour à 1 dans suite de Collatz
Euler 015: nombre de déplacements dans une grille
Euler 016: somme des chiffres de la représentation décimale de 2^{N}
Euler 017: combien de lettres pour les nombres de 1 à 1000 en anglais
Euler 018: somme max des parcours d’une grille triangulaire
Euler 019: combien de 1ers du mois sont un dimanche, de 1901 à 2001
Euler 020: somme des chiffres de l’écriture décimale de l’entier N!
Euler 021: somme des paires d’amiables strictement inférieurs à N
Euler 022: total des scores dans un fichier de 5000 noms
Euler 023: somme des n>0 qui ne sont pas somme de deux abondants
Euler 024: N-ième permutation lexicographique de ‘0123456789’
Euler 025: indice du plus petit nombre Fibonacci F_{n} à N chiffres
Euler 026: pour quel d < N la période de 1/d est-elle maximum?
Euler 029: entiers distincts parmi les a^{b} avec a,b entiers, 2\le a,b < N
Euler 030: entiers \ge2 sommes des puissances 5èmes de leurs chiffres
Euler 031: façons de payer une somme s avec des pièces d’une liste p
Euler 032: produits n=pq contenant une seule fois les chiffres 1 à 9
Euler 033: fractions xy/yz qui se simplifient en x/z
Euler 034: entiers qui sont sommes des factorielles de leurs chiffres
Euler 002: somme des nombres de Fibonacci pairs et inférieurs à N
Euler 003: fonction donnant le plus grand facteur premier de N
Euler 004: palindrome max produit de deux entiers à trois chiffres
Euler 005: plus petit entier >0 et divisible par les entiers de 1 à N
Euler 006: fonction calculant \bigl(\sum_{k=1}^{n}k\bigr)^{2}-\sum_{k=1}^{n}k^{2}
Euler 007: fonction renvoyant le n-ième nombre premier
Euler 008: produit max de 5 chiffres consécutifs de n (1000 chiffres)
Euler 009: triplets rectangulaires de somme donnée
Euler 010: somme des entiers premiers strictement inférieurs à N
Euler 011: produit max de 4 nombres adjacents d’une grille 20\times 20
Euler 012: plus petit nombre triangulaire ayant plus de N diviseurs
Euler 013: dix premiers chiffres de la somme de cent nombres
Euler 014: plus longue suite avant retour à 1 dans suite de Collatz
Euler 015: nombre de déplacements dans une grille
Euler 016: somme des chiffres de la représentation décimale de 2^{N}
Euler 017: combien de lettres pour les nombres de 1 à 1000 en anglais
Euler 018: somme max des parcours d’une grille triangulaire
Euler 019: combien de 1ers du mois sont un dimanche, de 1901 à 2001
Euler 020: somme des chiffres de l’écriture décimale de l’entier N!
Euler 021: somme des paires d’amiables strictement inférieurs à N
Euler 022: total des scores dans un fichier de 5000 noms
Euler 023: somme des n>0 qui ne sont pas somme de deux abondants
Euler 024: N-ième permutation lexicographique de ‘0123456789’
Euler 025: indice du plus petit nombre Fibonacci F_{n} à N chiffres
Euler 026: pour quel d < N la période de 1/d est-elle maximum?
Euler 029: entiers distincts parmi les a^{b} avec a,b entiers, 2\le a,b < N
Euler 030: entiers \ge2 sommes des puissances 5èmes de leurs chiffres
Euler 031: façons de payer une somme s avec des pièces d’une liste p
Euler 032: produits n=pq contenant une seule fois les chiffres 1 à 9
Euler 033: fractions xy/yz qui se simplifient en x/z
Euler 034: entiers qui sont sommes des factorielles de leurs chiffres