Plan d'apprentissage gratuit

Python
30 Jours

// De zéro à intermédiaire — 100% gratuit

30
Jours
4
Semaines
4
Projets
1h
/ jour
0
Complétés
// Progression globale
0%30 jours au total
01

Les fondations de Python

Variables, types, opérateurs, conditions, boucles

JOURS 1–7
J·01
Installation & premier programme
Théorie
▼
// Objectifs du jour
  • Installer Python 3 (python.org) et VS Code
  • Comprendre ce qu'est un interpréteur Python
  • Écrire et exécuter son premier print("Hello World")
  • Utiliser le terminal / l'invite de commande basique
// Ressources gratuites
⏱ ~1h — Installation + premiers pas
J·02
Variables & types de données
Théorie
▼
// Objectifs du jour
  • Déclarer des variables : nom = "Alban", age = 25
  • Connaître les types : int, float, str, bool
  • Utiliser type() pour identifier un type
  • Faire des conversions : int("5"), str(42)
// Ressources gratuites
⏱ ~1h — Exercices de variables
J·03
Opérateurs & expressions
Pratique
▼
// Objectifs du jour
  • Opérateurs arithmétiques : +, -, *, /, //, %, **
  • Opérateurs de comparaison : ==, !=, >, <, >=, <=
  • Opérateurs logiques : and, or, not
  • Manipuler des chaînes : concaténation, f-strings
// Ressources gratuites
⏱ ~1h — Mini-calculs et expressions
J·04
Conditions if / elif / else
ThéoriePratique
▼
// Objectifs du jour
  • Écrire des blocs if / elif / else
  • Comprendre l'indentation Python (4 espaces)
  • Utiliser input() pour saisir une valeur utilisateur
  • Créer un programme qui vérifie si un nombre est positif/négatif
// Ressources gratuites
⏱ ~1h — Programme interactif simple
J·05
Boucle while
Théorie
▼
// Objectifs du jour
  • Comprendre la boucle while et sa condition d'arrêt
  • Utiliser break et continue
  • Créer un compteur automatique de 1 à 10
  • Faire une boucle infinie sécurisée
// Ressources gratuites
⏱ ~1h — Exercices de boucles
J·06
Boucle for & range()
Pratique
▼
// Objectifs du jour
  • Utiliser for i in range() avec 1, 2 ou 3 arguments
  • Parcourir une chaîne de caractères lettre par lettre
  • Combiner for avec if pour filtrer
  • Afficher les tables de multiplication
// Ressources gratuites
⏱ ~1h — Tables de multiplication
J·07
RÉVISION + Mini-projet S1
ProjetRévision
▼
// Objectifs du jour
  • Relire et re-coder les exemples des jours 1–6
  • Identifier les points flous et les retravailler
  • Réaliser le mini-projet de la semaine
// Ressources gratuites
⏱ ~1h30 — Révision + projet
🎮 Projet S1 — Jeu du nombre mystère
Crée un jeu en console où l'ordinateur choisit un nombre aléatoire entre 1 et 100, et le joueur doit le deviner. Le programme indique "trop grand", "trop petit" ou "bravo !" à chaque tentative.
  • Générer un nombre aléatoire avec import random et random.randint(1,100)
  • Demander la saisie du joueur avec input() et convertir en int
  • Utiliser une boucle while qui tourne tant que le joueur n'a pas trouvé
  • Ajouter un compteur de tentatives et l'afficher à la victoire
  • Bonus : limiter à 7 tentatives et afficher "Perdu !" si dépassé
02

Structures de données

Listes, tuples, dictionnaires, ensembles

JOURS 8–14
J·08
Listes — Création & manipulation
Théorie
▼
// Objectifs du jour
  • Créer une liste : fruits = ["mangue", "orange", "banane"]
  • Accéder par index (positif et négatif)
  • Modifier, ajouter (append), supprimer (remove, pop)
  • Parcourir une liste avec for
// Ressources gratuites
⏱ ~1h — Exercices listes
J·09
Listes avancées & slicing
Pratique
▼
// Objectifs du jour
  • Slicing : liste[1:4], liste[::-1]
  • Méthodes : sort(), reverse(), len(), count()
  • Listes imbriquées (matrices 2D)
  • List comprehension : [x*2 for x in range(10)]
// Ressources gratuites
⏱ ~1h — Manipulation avancée
J·10
Tuples & ensembles (sets)
Théorie
▼
// Objectifs du jour
  • Tuple : immuable, syntaxe (a, b, c), déballage
  • Set : pas de doublons, opérations union, intersection
  • Savoir quand utiliser tuple vs liste vs set
  • Convertir entre ces types
// Ressources gratuites
⏱ ~1h — Comparaison des types
J·11
Dictionnaires — bases
Théorie
▼
// Objectifs du jour
  • Créer un dictionnaire {"clé": valeur}
  • Lire, modifier, ajouter, supprimer des clés
  • Méthodes : keys(), values(), items()
  • Parcourir un dictionnaire avec for
// Ressources gratuites
⏱ ~1h — Annuaire de contacts
J·12
Dictionnaires avancés & imbriqués
Pratique
▼
// Objectifs du jour
  • Dictionnaires imbriqués : données structurées
  • Dict comprehension : {k: v for k, v in...}
  • Méthodes get(), update(), pop()
  • Modéliser des données réelles (élève, produit, machine)
// Ressources gratuites
⏱ ~1h — Modéliser des données
J·13
Chaînes de caractères — méthodes
Pratique
▼
// Objectifs du jour
  • upper(), lower(), strip(), replace()
  • split(), join(), find(), startswith()
  • Formatage : f-strings avancés f"{val:.2f}"
  • Vérification : isdigit(), isalpha()
// Ressources gratuites
⏱ ~1h — Traitement de texte
J·14
RÉVISION + Mini-projet S2
ProjetRévision
▼
// Objectifs du jour
  • Réviser listes, tuples, sets, dictionnaires
  • Réaliser le mini-projet de la semaine
  • S'entraîner sur HackerRank Python challenges
// Ressources gratuites
⏱ ~1h30 — Révision + projet
📒 Projet S2 — Gestionnaire de contacts
Crée un mini-répertoire en console. L'utilisateur peut ajouter, rechercher, modifier et supprimer des contacts. Chaque contact a un nom, un téléphone et une ville.
  • Stocker les contacts dans une liste de dictionnaires
  • Menu principal avec while True et choix numérotés
  • Fonctions de recherche par nom (insensible à la casse avec lower())
  • Afficher tous les contacts triés par nom avec sorted()
  • Bonus : compter les contacts par ville avec un dictionnaire
03

Fonctions & Fichiers

Fonctions, modules, gestion des erreurs, fichiers

JOURS 15–21
J·15
Fonctions — bases
Théorie
▼
// Objectifs du jour
  • Définir une fonction avec def nom(params):
  • Comprendre les paramètres et les arguments
  • Utiliser return pour retourner une valeur
  • Portée des variables : locale vs globale
// Ressources gratuites
⏱ ~1h — Créer ses propres fonctions
J·16
Fonctions avancées & lambda
Pratique
▼
// Objectifs du jour
  • Paramètres par défaut : def bonjour(nom="Monde"):
  • *args et **kwargs pour arguments variables
  • Fonctions lambda : carre = lambda x: x**2
  • map(), filter(), sorted(key=...)
// Ressources gratuites
⏱ ~1h — Fonctions avancées
J·17
Modules & bibliothèques standard
Théorie
▼
// Objectifs du jour
  • Importer un module : import math, from math import sqrt
  • Modules utiles : math, random, datetime, os
  • Créer son propre module (fichier .py séparé)
  • Utiliser pip install pour installer des packages externes
// Ressources gratuites
⏱ ~1h — Explorer les modules
J·18
Gestion des exceptions (try/except)
Théorie
▼
// Objectifs du jour
  • Comprendre les erreurs : ValueError, TypeError, ZeroDivisionError
  • Blocs try / except / else / finally
  • Lever une exception : raise ValueError("message")
  • Écrire du code robuste qui ne plante pas
// Ressources gratuites
⏱ ~1h — Code anti-crash
J·19
Lire & écrire des fichiers texte
Pratique
▼
// Objectifs du jour
  • Ouvrir un fichier : with open("fichier.txt", "r") as f:
  • Lire : read(), readlines()
  • Écrire : mode "w" (écraser) et "a" (ajouter)
  • Sauvegarder des données dans un fichier
// Ressources gratuites
⏱ ~1h — Journal de bord fichier
J·20
Fichiers CSV & JSON
Pratique
▼
// Objectifs du jour
  • Module csv : lire et écrire des tableaux
  • Module json : json.dumps() et json.loads()
  • Sauvegarder des dictionnaires dans un fichier JSON
  • Lire un fichier CSV et calculer des statistiques
// Ressources gratuites
⏱ ~1h — Persistance de données
J·21
RÉVISION + Mini-projet S3
ProjetRévision
▼
// Objectifs du jour
  • Réviser fonctions, modules, exceptions, fichiers
  • Refactoriser le projet S2 avec des fonctions
  • Réaliser le mini-projet de la semaine
// Ressources gratuites
⏱ ~1h30 — Révision + projet
📊 Projet S3 — Calculateur de dépenses
Application console qui enregistre des dépenses (catégorie, montant, date), les sauvegarde dans un fichier JSON, et affiche un bilan mensuel avec total par catégorie.
  • Créer des fonctions : ajouter_depense(), afficher_bilan(), sauvegarder()
  • Sauvegarder les données dans depenses.json avec le module json
  • Charger les données existantes au démarrage du programme
  • Calculer le total par catégorie avec un dictionnaire
  • Bonus : exporter le bilan dans un fichier bilan.txt
04

POO & Niveau intermédiaire

Classes, héritage, bibliothèques externes, projet final

JOURS 22–30
J·22
Programmation orientée objet — intro
Théorie
▼
// Objectifs du jour
  • Comprendre classe vs objet vs instance
  • Définir une classe avec class NomClasse:
  • Méthode __init__ et self
  • Créer des attributs et méthodes
// Ressources gratuites
⏱ ~1h — Première classe Python
J·23
Méthodes spéciales & propriétés
Pratique
▼
// Objectifs du jour
  • Méthodes dunder : __str__, __repr__, __len__
  • Méthodes de classe @classmethod et statiques @staticmethod
  • Propriétés avec @property et setters
  • Encapsulation : attributs privés _nom et __nom
// Ressources gratuites
⏱ ~1h — Classes avancées
J·24
Héritage & polymorphisme
Théorie
▼
// Objectifs du jour
  • Héritage : class Chien(Animal):
  • Utiliser super() pour appeler la classe parente
  • Surcharger des méthodes (polymorphisme)
  • Vérifier l'héritage : isinstance(), issubclass()
// Ressources gratuites
⏱ ~1h — Hiérarchie de classes
J·25
Bibliothèques externes — pip & requests
Pratique
▼
// Objectifs du jour
  • Installer une librairie : pip install requests
  • Faire une requête HTTP GET avec requests.get(url)
  • Analyser une réponse JSON d'une API publique
  • API exemple : wttr.in (météo) ou api.coindesk.com (Bitcoin)
// Ressources gratuites
⏱ ~1h — Consommer une API
J·26
Introduction à Pandas (analyse de données)
Pratique
▼
// Objectifs du jour
  • Installer pandas : pip install pandas
  • Créer un DataFrame depuis un dict ou CSV
  • Filtrer, trier, grouper des données
  • Statistiques basiques : describe(), mean(), value_counts()
// Ressources gratuites
⏱ ~1h — Analyser un CSV
J·27
Débogage, tests & bonnes pratiques
Théorie
▼
// Objectifs du jour
  • Utiliser le débogueur de VS Code (breakpoints)
  • Écrire des tests simples avec assert
  • Intro à unittest : premier test unitaire
  • Conventions PEP8 : nommage, espaces, longueur de lignes
// Ressources gratuites
⏱ ~1h — Code propre et testé
J·28
Projet final — Planification
Projet
▼
// Objectifs du jour
  • Définir clairement le périmètre du projet final
  • Créer la structure de fichiers du projet
  • Écrire le squelette des classes et fonctions (sans code)
  • Commencer l'implémentation des fonctions principales
// Ressources gratuites
⏱ ~1h — Architecture du projet
J·29
Projet final — Développement
Projet
▼
// Objectifs du jour
  • Implémenter toutes les fonctionnalités prévues
  • Gérer les erreurs avec try/except
  • Tester manuellement chaque fonctionnalité
  • Commenter le code et rédiger un README
// Ressources gratuites
⏱ ~1h30 — Full code
J·30
🏁 BILAN — Et après ?
Révision
▼
// Objectifs du jour
  • Finaliser et nettoyer le projet final
  • Publier sur GitHub avec un README clair
  • Lister ce que tu as appris en 30 jours
  • Choisir la prochaine spécialisation : Web (Django/Flask), Data Science, Automatisation, IA
// Ressources pour la suite
⏱ ~2h — Bilan + publication
🤖 Projet S4 — Bot météo en ligne de commande
Crée un programme Python orienté objet qui interroge une API météo gratuite, stocke l'historique des recherches dans un fichier JSON, et affiche les prévisions formatées dans le terminal.
  • Classe MeteoService avec méthodes get_weather(ville) et historique()
  • Appeler l'API wttr.in/NomVille?format=j1 avec requests
  • Parser le JSON et afficher température, conditions, humidité
  • Sauvegarder chaque recherche dans historique.json
  • Bonus : comparer la météo de 2 villes côte à côte