0% ont trouvé ce document utile (0 vote)
5 vues200 pages

Python

Python est un langage de programmation polyvalent et populaire, utilisé dans divers domaines tels que le développement web et l'intelligence artificielle. Le marché de l'emploi pour les développeurs Python est en forte croissance, avec des salaires attractifs et une demande accrue pour des compétences spécifiques. Il est possible de réussir dans ce domaine sans diplôme universitaire, en se formant, en construisant un portfolio et en participant à la communauté Python.

Transféré par

Elfenomeno Diallo
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues200 pages

Python

Python est un langage de programmation polyvalent et populaire, utilisé dans divers domaines tels que le développement web et l'intelligence artificielle. Le marché de l'emploi pour les développeurs Python est en forte croissance, avec des salaires attractifs et une demande accrue pour des compétences spécifiques. Il est possible de réussir dans ce domaine sans diplôme universitaire, en se formant, en construisant un portfolio et en participant à la communauté Python.

Transféré par

Elfenomeno Diallo
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Introduction à la programmation Python

Python est un langage de programmation très populaire, apprécié pour sa simplicité et sa


puissance. Il est utilisé dans de nombreux domaines, comme le développement web, la
science des données, l’intelligence artificielle, l’automatisation, et bien plus encore.

Caractéristiques principales de Python :

 Langage interprété : Python exécute le code ligne par ligne, ce qui facilite le test et le
débogage.
 Syntaxe claire et lisible : La structure du code est proche du langage naturel, ce qui le
rend accessible même aux débutants.
 Multiplateforme : Python fonctionne sur Windows, macOS, Linux, etc.
 Gratuit et open source : Accessible à tous sans coût.
 Orienté objet : Permet d’organiser le code en objets pour mieux gérer la complexité.

Pour commencer à programmer en Python, il faut :

1. Installer Python : Rendez-vous sur le site officiel [Link], téléchargez et installez


la dernière version. Sur Windows, veillez à cocher l’option “Add Python to PATH”
lors de l’installation pour faciliter l’utilisation en ligne de commande.
2. Choisir un éditeur de code : Un éditeur comme Visual Studio Code (VSCode) est
recommandé. Il offre des fonctionnalités avancées comme la coloration syntaxique,
l’autocomplétion, et le débogage.
3. Lancer l’interpréteur Python : Vous pouvez exécuter des commandes Python
directement dans un terminal interactif, ce qui est très pratique pour tester des petites
portions de code.

Exemple simple :

python
print("Bonjour, Python !")

Cette ligne affiche le texte "Bonjour, Python !" à l’écran.

Cette introduction pose les bases pour débuter en Python, en expliquant ce qu’est Python, ses
avantages, et les premières étapes pour écrire et exécuter du code.

Le marché de la programmation Python en 2025


Python est aujourd’hui l’un des langages de programmation les plus demandés et les plus
polyvalents sur le marché du travail. Cette popularité est portée par son rôle central dans des
domaines en forte croissance comme l’intelligence artificielle (IA), la science des données, le
développement web, et l’automatisation.

Pourquoi Python est-il si recherché ?

 Polyvalence : Python est utilisé pour créer des applications web, analyser des
données, développer des modèles d’IA, automatiser des tâches, etc.
 Simplicité et rapidité de développement : Sa syntaxe claire permet aux développeurs
de produire rapidement du code fiable.
 Écosystème riche : De nombreuses bibliothèques et frameworks facilitent le travail
dans des domaines spécialisés (ex : Django pour le web, TensorFlow pour l’IA).

Les perspectives d’emploi en 2025 :

 La demande pour les développeurs Python est en forte croissance, avec une
augmentation estimée à environ 17% dans les prochaines années.
 Environ 356 700 postes sont attendus chaque année dans les domaines informatiques
et technologiques liés à Python.
 Les secteurs les plus dynamiques sont l’intelligence artificielle, la science des
données, la finance, la santé, et le développement web.
 Les entreprises valorisent de plus en plus les compétences en Python, notamment pour
les projets liés à l’IA et à l’analyse de données.

Salaires et rémunérations :

 Le salaire moyen d’un développeur Python varie généralement entre 81 000 $ et 124
000 $ par an, selon l’expérience et la spécialisation.
 Les profils seniors, notamment ceux spécialisés en IA ou data science, peuvent
atteindre des salaires bien plus élevés.
 La concurrence pour attirer les meilleurs talents est intense, poussant certaines
entreprises à offrir des rémunérations attractives et des avantages supplémentaires.

Carrières Python en vogue en 2025 :

 Développeur Python : Conception et maintenance d’applications web, APIs, et


services backend.
 Data Scientist : Analyse et interprétation de données pour aider à la prise de décision.
 Ingénieur en intelligence artificielle et machine learning : Développement de
modèles et d’applications IA.
 Ingénieur en vision par ordinateur et traitement du langage naturel :
Spécialisations en IA appliquées à l’image et au texte.

Tendances du marché :

 L’adoption croissante des architectures serverless et microservices.


 Le développement cloud-native où Python est souvent privilégié pour automatiser et
intégrer des services.
 La montée en puissance de l’automatisation et des outils d’apprentissage automatique
qui nécessitent des compétences Python avancées.

En résumé, apprendre Python aujourd’hui ouvre la porte à de nombreuses opportunités


professionnelles dans un marché en pleine expansion, avec des perspectives salariales
attractives et un large éventail de secteurs d’activité.

Opportunités d’emploi en Python en 2025


Python continue d’être l’un des langages de programmation les plus demandés sur le marché
mondial du travail. Sa polyvalence et son utilisation dans des secteurs en pleine expansion en
font une compétence très recherchée.

Domaines et postes les plus courants pour les développeurs Python :

 Développeur Python / Ingénieur logiciel : Conception et maintenance d’applications


web, backend, APIs, et services cloud. Les frameworks comme Django ou Flask sont
souvent utilisés.
 Data Scientist : Analyse et interprétation de données complexes pour aider à la prise
de décision dans des secteurs comme la finance, la santé, ou la technologie.
 Ingénieur en Machine Learning / Deep Learning : Développement de modèles
d’intelligence artificielle pour la reconnaissance d’image, le traitement du langage
naturel, ou la prédiction.
 Ingénieur en vision par ordinateur : Spécialisé dans le traitement d’images et
vidéos, souvent avec des bibliothèques Python comme OpenCV.
 Ingénieur DevOps / Automatisation : Utilisation de Python pour automatiser des
tâches, gérer des infrastructures cloud et déployer des applications.
 Développeur Full-Stack : Maîtrise à la fois du backend Python et du frontend pour
créer des applications complètes.

Exemples concrets d’offres d’emploi (juillet 2025) :

 Ingénieur back-end senior Python, spécialisé en machine learning et systèmes.


 Développeur logiciel pour infrastructure et support systèmes.
 Ingénieur Python pour vision par ordinateur avec Pytorch et OpenCV.
 Développeur full-stack avec compétences cloud et bases de données.

Pourquoi apprendre Python ouvre autant de portes ?

 Python est utilisé dans des technologies de pointe comme l’intelligence artificielle,
l’analyse de données, et le cloud computing.
 Les entreprises de secteurs variés (finance, santé, technologie, industrie) recrutent des
développeurs Python pour leurs projets innovants.
 Les salaires sont attractifs, avec des postes juniors débutant autour de 48$ à 86$ de
l’heure et des profils expérimentés pouvant prétendre à des rémunérations bien
supérieures.

Conseils pour maximiser ses chances de trouver un emploi en Python :

 Construire un portfolio solide avec des projets personnels ou contributions open


source.
 Se spécialiser dans un domaine porteur (data science, IA, web, automatisation).
 Utiliser des plateformes d’emploi dédiées comme [Link]/jobs, Indeed, ou des
réseaux professionnels.
 Continuer à apprendre et suivre les tendances technologiques (cloud, microservices,
serverless).
En résumé, les opportunités d’emploi en Python en 2025 sont nombreuses et diversifiées,
couvrant des rôles techniques variés dans des secteurs innovants. Maîtriser Python est un
atout majeur pour accéder à ces carrières prometteuses.

Obtenir un emploi en Python sans diplôme universitaire


Il est tout à fait possible de décrocher un emploi de développeur Python sans posséder de
diplôme universitaire formel, notamment en informatique. De plus en plus d’employeurs
valorisent aujourd’hui les compétences réelles et la capacité à produire un travail de qualité
plutôt que la simple possession d’un diplôme15.

Les clés pour réussir sans diplôme :

 Se former efficacement : Suivre des formations spécialisées comme des bootcamps,


des cours en ligne certifiants, ou des programmes intensifs qui enseignent Python et
les technologies associées (Django, Flask, Git, etc.)15.
 Construire un portfolio solide : Réaliser des projets concrets, personnels ou open
source, qui démontrent vos compétences en programmation Python. Ce portfolio est
souvent plus parlant pour un recruteur qu’un diplôme15.
 Acquérir des compétences complémentaires : Maîtriser des technologies liées
comme HTML, CSS, bases de données SQL, ou des outils de gestion de versions
(Git/GitHub) augmente vos chances d’embauche1.
 Réseauter dans la communauté Python : Participer à des groupes, forums,
événements ou plateformes en ligne dédiés à Python permet de se faire connaître,
d’échanger avec des professionnels, et parfois d’accéder à des opportunités cachées1.
 Faire des stages ou des missions freelance : Ces expériences concrètes, même
courtes, sont un excellent moyen d’acquérir de l’expérience professionnelle et de
renforcer son CV12.

Ce que recherchent les employeurs :

 Une bonne maîtrise du langage Python et des concepts de programmation orientée


objet.
 La capacité à écrire un code propre, efficace et maintenable.
 La connaissance des frameworks populaires (Django, Flask) et des outils collaboratifs
(Git).
 Une compréhension des principes de développement logiciel et des bonnes pratiques.
 L’envie d’apprendre rapidement et de s’adapter aux évolutions technologiques27.

Statistiques et tendances :

 Près de 32% des offres d’emploi Python ne listent pas de niveau d’éducation
obligatoire, ce qui montre une ouverture aux profils autodidactes ou sans diplôme
formel6.
 Environ 89% des employeurs considèrent que les diplômés de bootcamps sont aussi
bien préparés que les titulaires d’un diplôme universitaire5.
 Les postes d’entrée de gamme sont accessibles à ceux qui peuvent démontrer leurs
compétences via des projets, des certifications ou des contributions open source12.

Conseils pratiques :
 Commence par maîtriser les bases du langage Python : variables, structures de
contrôle, fonctions, collections (listes, dictionnaires).
 Ensuite, spécialise-toi dans un domaine porteur : développement web, data science,
intelligence artificielle, automatisation.
 Crée un profil GitHub actif avec des projets variés.
 Postule à des offres d’emploi ou stages qui ne requièrent pas forcément de diplôme, en
mettant en avant ton portfolio et tes compétences.
 Continue à apprendre et à te former régulièrement pour rester compétitif.

En résumé, un diplôme n’est plus un obstacle majeur pour devenir développeur Python
en 2025. Avec une bonne formation, un portfolio solide, et une implication dans la
communauté, tu peux accéder à de nombreuses opportunités professionnelles dans ce domaine
en pleine croissance156.

Voici un résumé en français des principaux rôles professionnels liés à Python en 2025, basé
sur les sources récentes :

Rôles professionnels courants pour un programmeur


Python en 2025
Rôle Description principale Compétences clés
Développeur Conçoit, code, teste et maintient des Python, débogage,
Python applications logicielles en Python, frameworks (Django, Flask),
souvent dans le développement web, gestion des bases de
l’automatisation ou le traitement de données, tests
données.
Data Scientist Analyse et interprète des données Python (Pandas, NumPy,
complexes pour aider à la prise de SciPy), machine learning,
décisions stratégiques. Utilise des visualisation de données,
modèles statistiques et des algorithmes statistiques
de machine learning.
Ingénieur Conçoit, développe et déploie des Python, TensorFlow,
Machine modèles d’apprentissage automatique et PyTorch, Scikit-learn,
Learning d’intelligence artificielle. déploiement de modèles
Développeur Développe la logique serveur des Python, Django, Flask, APIs
Web Backend applications web, gère les bases de REST, bases de données
données et assure la communication SQL/NoSQL
entre serveur et frontend.
Ingénieur en Automatise les tâches répétitives et les Python, scripting, outils
automatisation processus pour améliorer l’efficacité d’automatisation, intégration
opérationnelle. continue

Évolution de carrière typique en Python


 Débutant : Maîtrise des bases du langage, syntaxe simple, petites applications.
 Intermédiaire : Programmation orientée objet, création d’APIs, gestion de bases de
données.
 Avancé : Structures de données complexes, optimisation, multithreading.
 Expert : Conception d’architectures logicielles, optimisation des performances,
leadership technique.
 Leader : Gestion d’équipes, décisions stratégiques, planification de projets à grande
échelle.

Exemples de postes en 2025


 Junior Python Developer
 Python Developer (ML)
 DevOps Python Engineer
 Python QA Tester
 Data Analyst Python

Tendances et compétences complémentaires recherchées


 Frameworks populaires : Django, Flask, Pyramid
 Bibliothèques ML/IA : TensorFlow, PyTorch, Scikit-learn
 Bases de données : SQL, NoSQL (MongoDB)
 Cloud : AWS, Google Cloud, Azure
 Outils collaboratifs : Git, Docker, CI/CD
 Connaissances en frontend : HTML, CSS, JavaScript (pour les développeurs full-
stack)

En résumé
Le marché de l’emploi Python en 2025 offre une grande diversité de rôles techniques, allant
du développement logiciel classique à des spécialisations pointues en intelligence artificielle,
science des données, et automatisation. La montée en compétences progressive, de débutant à
leader, repose sur la maîtrise technique, la capacité à résoudre des problèmes complexes, et le
travail en équipe.

Se familiariser avec Python : Vue d’ensemble


Python est un langage de programmation polyvalent, simple à apprendre et très utilisé dans de
nombreux domaines comme le développement web, la science des données, l’intelligence
artificielle, l’automatisation, et bien plus encore.

Pourquoi choisir Python ?

 Syntaxe claire et lisible : Python privilégie la simplicité et la lisibilité du code, ce qui


facilite l’apprentissage et la collaboration.
 Langage interprété : Le code Python s’exécute directement sans étape de
compilation, ce qui permet de tester rapidement des idées.
 Communauté active : Une vaste communauté offre de nombreuses ressources,
bibliothèques et frameworks.
 Multiplateforme : Python fonctionne sur Windows, macOS, Linux, etc.

Premiers pas avec Python :


1. Installation : Télécharger Python depuis le site officiel ([Link]) et l’installer sur
votre ordinateur. Il est conseillé d’ajouter Python au PATH pour pouvoir l’utiliser
facilement en ligne de commande.
2. Environnement de développement : Utiliser un éditeur de code ou un IDE adapté
comme Visual Studio Code, PyCharm, ou même un simple éditeur de texte.
3. Lancement de l’interpréteur Python : En mode interactif, il permet d’écrire et
d’exécuter des commandes Python ligne par ligne, idéal pour tester rapidement des
idées.

Concepts de base à connaître :

 Variables et types de données : Stocker des informations sous forme de nombres,


chaînes de caractères, listes, dictionnaires, etc.
 Structures de contrôle : Utiliser des conditions (if, else) et des boucles (for,
while) pour contrôler le flux du programme.
 Fonctions : Regrouper du code réutilisable dans des blocs nommés pour organiser et
simplifier les programmes.
 Modules et bibliothèques : Importer des fonctionnalités supplémentaires pour étendre
les capacités de Python.

Exemple simple :

python
print("Bonjour, Python !")

Cette instruction affiche un message à l’écran et constitue souvent le premier programme écrit
par un débutant.

Approche recommandée pour débuter :

 Commencer par comprendre la syntaxe et les concepts fondamentaux.


 Pratiquer avec des petits scripts et exercices simples.
 Explorer progressivement des projets concrets pour appliquer les connaissances.

Cette introduction permet de poser les bases pour avancer sereinement dans l’apprentissage de
Python, en comprenant ses avantages et les premières étapes pour coder.

Installer Python sur Windows (2025) : Guide complet


Python est un langage de programmation très populaire, polyvalent et facile à apprendre.
Installer Python sur Windows est la première étape essentielle pour commencer à coder.

Pourquoi installer Python sur Windows ?


 Pour écrire et exécuter des scripts Python.
 Pour développer des applications web, des outils d’automatisation, de la science des
données, ou de l’intelligence artificielle.
 Windows 11 (et Windows 10) offre un environnement compatible et des outils
modernes pour le développement Python.
Étapes pour installer Python sur Windows
1. Télécharger l’installateur officiel
o Rendez-vous sur le site officiel de Python : [Link]/downloads/windows.
o Téléchargez la dernière version stable (en 2025, par exemple Python 3.13.x).
o Choisissez l’installateur adapté à votre système : généralement Windows
installer (64-bit), sauf si vous avez un système 32 bits.
2. Lancer l’installation
o Double-cliquez sur le fichier téléchargé pour démarrer l’assistant d’installation.
o Très important : cochez la case "Add Python to PATH" avant de cliquer sur
"Install Now". Cela permet d’exécuter Python depuis la ligne de commande.
o Vous pouvez aussi choisir "Customize installation" pour sélectionner des
options avancées (installation de pip, IDLE, documentation, etc.).
o Sous "Advanced Options", il est recommandé de cocher "Install for all users"
si vous avez les droits administrateur.
3. Suivre le processus d’installation
o L’installation peut prendre quelques minutes.
o Si demandé, autorisez l’installation avec les privilèges administrateur.
4. Vérifier l’installation
o Ouvrez l’invite de commandes (cmd) ou PowerShell.
o Tapez python --version ou python3 --version pour vérifier que Python
est bien installé et accessible.
o Vous pouvez aussi lancer l’interpréteur interactif en tapant python et en
validant.
5. Installer un éditeur ou IDE
o Pour coder plus efficacement, installez un éditeur comme Visual Studio Code
(VSCode) ou un IDE comme PyCharm.
o Ces outils offrent la coloration syntaxique, l’autocomplétion, le débogage, et
facilitent la gestion des projets Python.
6. Exécuter votre premier script Python
o Créez un fichier texte avec l’extension .py, par exemple [Link].
o Écrivez la ligne suivante :

python
print("Bonjour, Python !")

o Exécutez-le depuis la ligne de commande avec :

text
python [Link]

Conseils supplémentaires
 Toujours installer la dernière version stable pour bénéficier des dernières
fonctionnalités, améliorations de performance et correctifs de sécurité.
 Si vous êtes débutant, l’installation via le Microsoft Store est une alternative simple,
mais l’installateur officiel offre plus de contrôle.
 Vous pouvez aussi installer Python via Windows Subsystem for Linux (WSL) si vous
souhaitez un environnement Linux sur Windows.
En résumé, installer Python sur Windows en 2025 est simple et rapide grâce à un
installateur officiel bien conçu. En suivant ces étapes, vous serez prêt à coder et à explorer
tout l’écosystème Python.

Anaconda et Jupyter Notebooks : Présentation et


installation
Anaconda est une distribution Python très populaire, spécialement conçue pour la science des
données, l’analyse, et le machine learning. Elle inclut Python, de nombreux packages
scientifiques, ainsi que des outils comme Jupyter Notebook et Spyder IDE. Cette
distribution facilite grandement l’installation et la gestion des environnements Python.

Pourquoi utiliser Anaconda ?


 Installation simplifiée : Anaconda installe Python et plus de 300 bibliothèques utiles
en un seul package, évitant ainsi les problèmes de compatibilité.
 Gestion des environnements : Avec l’outil conda, vous pouvez créer et gérer
plusieurs environnements Python isolés, adaptés à différents projets.
 Interface graphique : Anaconda Navigator permet de lancer facilement Jupyter
Notebook, Spyder, et d’autres outils sans passer par la ligne de commande.

Qu’est-ce que Jupyter Notebook ?


Jupyter Notebook est un environnement interactif qui permet d’écrire et d’exécuter du code
Python dans un navigateur web. Il est particulièrement apprécié pour :

 L’exploration de données : Visualiser les résultats instantanément.


 La documentation : Combiner code, texte, images, et graphiques dans un même
document.
 L’enseignement et le partage : Facilité pour créer des tutoriels et partager des
analyses.

Étapes d’installation sur Windows (2025)


1. Télécharger Anaconda
o Rendez-vous sur le site officiel : [Link].
o Cliquez sur "Free Download" et choisissez la version Windows (64-bit
généralement).
o Le fichier d’installation pèse environ 4 à 5 Go.
2. Installer Anaconda
o Lancez le fichier .exe téléchargé.
o Acceptez le contrat de licence.
o Choisissez d’installer pour "All Users" si vous avez les droits administrateur.
o Choisissez le dossier d’installation (par défaut dans votre dossier utilisateur).
o Laissez les options par défaut recommandées, notamment pour l’ajout au
PATH (souvent non recommandé, mais Anaconda configure son propre
terminal).
o Cliquez sur "Install" et patientez pendant l’installation.
3. Lancer Anaconda Navigator
o Une fois l’installation terminée, ouvrez Anaconda Navigator depuis le menu
démarrer.
o Depuis l’interface graphique, vous pouvez lancer Jupyter Notebook en un clic.
4. Utiliser Jupyter Notebook
o Jupyter Notebook s’ouvre dans votre navigateur par défaut.
o Créez un nouveau notebook Python.
o Vous pouvez écrire du code dans des cellules et l’exécuter immédiatement.
o Idéal pour tester du code, faire des analyses de données, et créer des rapports
interactifs.

Alternatives d’installation
 Installer Jupyter Notebook seul via pip :

bash
pip install notebook
jupyter notebook

 Installer JupyterLab, une version plus moderne de Jupyter :

bash
pip install jupyterlab
jupyter lab

En résumé
 Anaconda est la solution la plus simple et complète pour débuter avec Python et
Jupyter, surtout pour la data science.
 Jupyter Notebook est un outil interactif puissant pour coder, documenter et partager
vos travaux Python.
 L’installation sous Windows est facilitée par l’installateur graphique d’Anaconda, qui
inclut tout ce dont vous avez besoin.

Fondamentaux des Jupyter Notebooks


Jupyter Notebook est une plateforme web interactive qui permet de créer et partager des
documents combinant du code, du texte, des équations, des visualisations et d’autres médias
enrichis. C’est un outil incontournable pour la science des données, l’analyse, la recherche et
l’enseignement.

Qu’est-ce qu’un Jupyter Notebook ?


 C’est un document numérique avec des cellules qui peuvent contenir soit du code
exécutable (généralement en Python), soit du texte formaté en Markdown.
 Le code s’exécute dans un kernel (moteur d’exécution) qui conserve l’état des
variables et des bibliothèques chargées.
 Les résultats du code (tableaux, graphiques, images, sorties texte) s’affichent
directement sous la cellule correspondante.
 Le format de fichier est .ipynb.

Interface principale
 Tableau de bord (dashboard) : Permet de gérer vos notebooks, dossiers et fichiers.
 Cellules de code : Pour écrire et exécuter du code Python. Vous pouvez exécuter une
cellule avec Shift + Entrée.
 Cellules Markdown : Pour ajouter des notes, titres, listes, liens, images, et formater le
texte avec la syntaxe Markdown.
 Barre d’outils : Pour ajouter, supprimer ou déplacer des cellules, sauvegarder le
notebook, et plus.

Fonctionnalités clés
 Exécution interactive : Tester du code morceau par morceau, ce qui facilite le
développement et le débogage.
 Documentation intégrée : Ajouter des explications détaillées dans des cellules
Markdown pour rendre le travail compréhensible et partageable.
 Visualisation : Intégrer des graphiques avec des bibliothèques comme Matplotlib,
Seaborn ou Plotly directement dans le notebook.
 Exportation : Convertir les notebooks en formats HTML, PDF, Markdown, ou scripts
Python pour diffusion ou archivage.
 Partage : Partager vos notebooks via GitHub, nbviewer, ou par email.

Utilisation pratique
1. Lancer Jupyter Notebook
o Depuis un terminal, tapez jupyter notebook.
o Le navigateur s’ouvre sur le tableau de bord.
2. Créer un nouveau notebook
o Cliquez sur « New » > « Python 3 ».
o Une nouvelle page s’ouvre avec un notebook vide.
3. Écrire et exécuter du code
o Tapez du code dans une cellule, par exemple :

python
for i in range(5):
print(i)

o Exécutez la cellule avec Shift + Entrée.


o Le résultat s’affiche juste en dessous.
4. Ajouter des notes
o Changez une cellule en mode Markdown (via le menu ou raccourci M).
o Écrivez des commentaires, titres, listes, etc.
5. Sauvegarder et exporter
o Sauvegardez régulièrement avec l’icône disquette ou Ctrl + S.
o Exportez via le menu « File » > « Download as » pour différents formats.
Avantages de Jupyter Notebook
 Facilite l’apprentissage et l’expérimentation grâce à l’exécution interactive.
 Améliore la collaboration en combinant code et documentation dans un même
document.
 Permet de créer des rapports dynamiques et reproductibles.
 Supporte plusieurs langages (Python, R, Julia, etc.) via différents kernels.

Conseils pour bien débuter


 Familiarisez-vous avec les raccourcis clavier (ex. Shift+Entrée pour exécuter, A/B
pour insérer des cellules).
 Utilisez les cellules Markdown pour bien structurer vos notebooks.
 Organisez votre travail en sections claires avec des titres et commentaires.
 Sauvegardez souvent et versionnez vos notebooks avec Git.

En résumé, Jupyter Notebook est un outil puissant et flexible qui facilite la


programmation interactive, la documentation et le partage des projets Python, en
particulier dans les domaines de la data science et de l’analyse.

La syntaxe de Python : principes fondamentaux


La syntaxe désigne l’ensemble des règles qui définissent la manière d’écrire correctement un
programme dans un langage donné. Python est réputé pour sa syntaxe claire, simple et lisible,
ce qui en fait un excellent langage pour les débutants comme pour les experts.

Caractéristiques principales de la syntaxe Python


 Indentation obligatoire : Contrairement à d’autres langages qui utilisent des
accolades {} pour délimiter les blocs de code, Python utilise l’indentation (espaces ou
tabulations). Cette indentation doit être cohérente et est essentielle pour que le code
fonctionne. Par exemple, dans une boucle ou une condition, les lignes indentées
appartiennent au bloc.
 Pas de point-virgule : Chaque instruction se termine naturellement à la fin de la ligne,
sans nécessité de point-virgule ;.
 Commentaires : Le symbole # permet d’écrire des commentaires sur une ligne, qui ne
sont pas exécutés par Python.
 Variables dynamiques : Pas besoin de déclarer le type d’une variable, Python l’infère
automatiquement.

Exemples de syntaxe de base


1. Affichage à l’écran

python
print("Bonjour, Python !")

2. Variables et types
python
x = 10 # entier
nom = "Alice" # chaîne de caractères
pi = 3.14 # nombre à virgule flottante

3. Conditions

python
if x > 5:
print("x est grand")
else:
print("x est petit ou égal à 5")

4. Boucles

python
for i in range(3):
print(i)

5. Fonctions

python
def saluer(nom):
print("Bonjour", nom)

saluer("Alice")

Bonnes pratiques syntaxiques


 Utiliser 4 espaces par niveau d’indentation (recommandation officielle).
 Éviter de mélanger espaces et tabulations.
 Nommer les variables avec des noms explicites et en minuscules, séparés par des
underscores (ex. ma_variable).
 Écrire des commentaires clairs pour expliquer le code.

Pourquoi la syntaxe Python est-elle appréciée ?


 Elle favorise la lisibilité et la maintenabilité du code.
 Elle réduit les erreurs liées à une mauvaise délimitation des blocs.
 Elle permet d’écrire du code plus rapidement et avec moins de lignes.

En résumé, maîtriser la syntaxe Python est la première étape pour programmer


efficacement, et sa simplicité en fait un langage accessible pour tous les niveaux12.

Structure d’une ligne en Python


En Python, chaque ligne de code représente généralement une instruction ou une déclaration.
La structure des lignes est simple et suit des règles précises pour assurer la clarté et la lisibilité
du code.

Principes de base
 Une instruction par ligne : En Python, chaque ligne correspond à une instruction
unique. Par exemple :

python
x=5
print(x)

 Continuation de ligne : Si une instruction est trop longue pour tenir sur une seule
ligne, on peut la continuer sur la ligne suivante en utilisant le caractère antislash \ :

python
total = 1 + 2 + 3 + \
4+5+6

Cependant, il est souvent préférable d’utiliser des parenthèses pour la continuation


implicite :

python
total = (1 + 2 + 3 +
4 + 5 + 6)

 Commentaires en ligne : On peut ajouter un commentaire à la fin d’une ligne de code


avec le symbole # :

python
x = 10 # Ceci est un commentaire

 Indentation : L’indentation (espaces ou tabulations) en début de ligne est essentielle


pour définir les blocs de code, notamment dans les structures conditionnelles, les
boucles, et les fonctions.

Exemple simple
python
if x > 0:
print("x est positif") # Affiche un message

Ici, la ligne avec print est indentée pour montrer qu’elle fait partie du bloc if.

En résumé, la structure d’une ligne en Python est claire et intuitive : une instruction par ligne,
possibilité de continuer sur plusieurs lignes, et utilisation de l’indentation pour organiser le

Exercices sur la structure des lignes en Python


Ces exercices couvrent les notions essentielles : instructions par ligne, continuation de ligne,
commentaires, indentation et organisation du code.

1. Affichage simple
Complétez la ligne de code suivante pour afficher la somme de 5 et 3.
python
print(5 + 3)

2. Continuation implicite avec parenthèses


Réécrivez cette instruction sur deux lignes en utilisant la continuation implicite avec des
parenthèses.

python
total = (1 + 2 + 3 +
4 + 5 + 6)

3. Commentaires en ligne
Ajoutez un commentaire à la fin de cette ligne de code.

python
x = 10 # Ceci est un commentaire

4. Indentation des blocs


Indentez correctement ce bloc conditionnel.

python
if x > 0:
print("x est positif")

5. Continuation explicite avec antislash


Utilisez le caractère antislash pour continuer cette instruction sur deux lignes.

python
total = 1 + 2 + 3 + \
4+5+6

Ces exercices vous aideront à bien comprendre et appliquer la structure des lignes en Python,
une base indispensable pour écrire un code clair, lisible et sans erreur. N’hésitez pas à tester
chaque exemple dans votre environnement Python pour bien assimiler ces principes.

Les commentaires en Python


Les commentaires sont des lignes ou parties de lignes dans le code qui ne sont pas exécutées
par l’interpréteur Python. Ils servent à expliquer, documenter ou clarifier le code pour les
développeurs qui le lisent, y compris soi-même lors de la relecture ou la maintenance.

Pourquoi utiliser des commentaires ?


 Clarifier le fonctionnement du code : Expliquer la logique ou l’objectif d’un bloc de
code.
 Faciliter la maintenance : Aider à comprendre rapidement ce que fait un code,
surtout dans des projets complexes.
 Désactiver temporairement du code : Pour tester ou déboguer sans supprimer le
code.

Syntaxe des commentaires en Python


 Commentaire sur une ligne : Utiliser le symbole #. Tout ce qui suit sur la même
ligne est ignoré.

python
# Ceci est un commentaire
x = 10 # Affectation de la valeur 10 à x

 Commentaires multilignes : Python ne possède pas de syntaxe dédiée pour les


commentaires multilignes, mais on utilise souvent des chaînes de caractères
multilignes non affectées à une variable (entre triples guillemets ''' ou """) qui sont
ignorées si elles ne sont pas utilisées.

python
"""
Ceci est un commentaire
sur plusieurs lignes.
"""

Toutefois, cette méthode est plutôt destinée à la documentation (docstrings) que pour
commenter du code.

Bonnes pratiques pour les commentaires


 Rédiger des commentaires clairs, concis et pertinents.
 Éviter les commentaires redondants qui répètent ce que fait le code.
 Mettre à jour les commentaires lorsque le code change.
 Utiliser des commentaires pour expliquer pourquoi un code fait quelque chose, pas
seulement ce qu’il fait.

Exemple simple
python
# Calcul de la somme de deux nombres
a=5
b=7
somme = a + b # addition des deux variables
print(somme) # affiche le résultat

En résumé, les commentaires sont essentiels pour rendre le code Python compréhensible
et maintenable, surtout dans des projets collaboratifs ou complexes.

Joindre des lignes en Python


En Python, il arrive souvent que certaines instructions soient trop longues pour tenir sur une
seule ligne. Pour améliorer la lisibilité, Python offre plusieurs méthodes pour joindre ou
continuer des lignes de code.

1. Utilisation du caractère antislash \


Le moyen explicite pour continuer une instruction sur la ligne suivante est d’utiliser le
caractère antislash \ à la fin de la ligne. Cela indique à Python que l’instruction continue sur
la ligne suivante.

Exemple :

python
total = 1 + 2 + 3 + \
4+5+6
print(total)

Ici, la somme est répartie sur deux lignes, mais Python l’interprète comme une seule
instruction.

2. Continuation implicite avec des parenthèses, crochets ou


accolades
Python permet aussi la continuation implicite lorsque l’instruction est incluse dans des
parenthèses (), crochets [] ou accolades {}. Dans ce cas, il n’est pas nécessaire d’utiliser le
caractère antislash.

Exemples :

 Avec des parenthèses :

python
total = (1 + 2 + 3 +
4 + 5 + 6)
print(total)

 Avec des crochets (liste) :

python
nombres = [1, 2, 3,
4, 5, 6]
print(nombres)

 Avec des accolades (dictionnaire) :

python
personne = {
"nom": "Alice",
"âge": 30,
"ville": "Paris"
}
print(personne)
3. Pourquoi joindre des lignes ?
 Lisibilité : Un code trop long sur une seule ligne est difficile à lire.
 Respect des normes : Par exemple, la PEP 8 recommande de limiter la longueur des
lignes à 79 caractères.
 Organisation : Facilite la compréhension et la maintenance du code.

4. Attention aux erreurs courantes


 Ne pas oublier le \ en fin de ligne si vous utilisez la continuation explicite.
 Éviter de mettre des espaces après le \ car cela peut provoquer une erreur.
 Préférer la continuation implicite avec parenthèses lorsque c’est possible, car elle est
plus propre et moins sujette aux erreurs.

Résumé
 Utilisez \ pour continuer explicitement une ligne.
 Préférez les parenthèses, crochets ou accolades pour une continuation implicite.
 Joindre les lignes améliore la lisibilité et respecte les bonnes pratiques de codage en
Python.

Plusieurs instructions sur une seule ligne en Python


En Python, il est possible d’écrire plusieurs instructions sur une même ligne en les séparant
par un point-virgule ;. Cela peut être utile pour écrire du code court ou pour des tests rapides,
mais doit être utilisé avec parcimonie pour préserver la lisibilité.

Syntaxe
python
instruction1; instruction2; instruction3

Chaque instruction est exécutée dans l’ordre de gauche à droite.

Exemple simple
python
x = 5; y = 10; print(x + y)

Ce code affecte 5 à x, 10 à y, puis affiche la somme des deux, soit 15.

Quand utiliser plusieurs instructions sur une ligne ?


 Pour des scripts très courts ou des tests rapides.
 Pour écrire du code compact dans des environnements interactifs (comme la console
Python).
 Pour regrouper des instructions simples liées dans un même contexte.
Pourquoi éviter l’abus de cette pratique ?
 Lisibilité réduite : Le code devient difficile à lire et à maintenir.
 Débogage plus complexe : En cas d’erreur, il est plus difficile d’identifier la ligne
problématique.
 Non recommandé dans les projets professionnels : Les bonnes pratiques
privilégient une instruction par ligne.

Alternative recommandée
Il est préférable d’écrire chaque instruction sur sa propre ligne, avec une indentation claire,
pour faciliter la compréhension :

python
x=5
y = 10
print(x + y)

Résumé
 Le point-virgule ; permet de mettre plusieurs instructions sur une même ligne.
 À utiliser avec modération pour ne pas nuire à la clarté du code.
 Favoriser la lisibilité en séparant les instructions sur plusieurs lignes.

L’Indentation en Python : Fondamentaux et bonnes


pratiques
L’indentation désigne les espaces ou tabulations placés au début d’une ligne de code pour
délimiter des blocs logiques. Contrairement à de nombreux autres langages où l’indentation
est purement esthétique, en Python, elle est obligatoire et fait partie intégrante de la syntaxe.

Pourquoi l’indentation est-elle essentielle en Python ?


 Définition des blocs de code : Python utilise l’indentation pour regrouper les
instructions qui appartiennent à un même bloc, comme le corps d’une fonction, d’une
boucle, ou d’une condition.
 Absence de délimiteurs : Il n’y a pas d’accolades {} ou de mots-clés comme
begin/end pour délimiter les blocs ; l’indentation remplit ce rôle.
 Lisibilité accrue : Cette contrainte force à écrire un code propre, clair, et facile à lire.

Règles principales d’indentation


 Utiliser 4 espaces par niveau d’indentation : C’est la recommandation officielle de
la PEP 8, la norme de style Python15.
 Ne pas mélanger espaces et tabulations : Cela peut provoquer des erreurs
d’exécution (IndentationError ou TabError) car l’interpréteur Python est strict sur
la cohérence de l’indentation6.
 Même niveau d’indentation = même bloc : Toutes les lignes indentées au même
niveau sont considérées comme appartenant au même bloc logique23.
 Indentation obligatoire après les deux-points : : Après une instruction introduisant
un bloc (ex. if, for, def, while), la ligne suivante doit être indentée.

Exemple d’indentation correcte


python
def saluer(nom):
if nom:
print(f"Bonjour, {nom} !")
else:
print("Bonjour, Pythoniste !")

saluer("Alice")
saluer("")

Ici, les instructions à l’intérieur de la fonction et des conditions sont indentées de 4 espaces,
indiquant clairement leur appartenance aux blocs respectifs.

Exemple d’erreurs courantes liées à l’indentation


 Indentation manquante :

python
if 5 > 2:
print("Cinq est plus grand que deux") # Erreur : indentation attendue

 Indentation incohérente (espaces et tabulations mélangés) :

python
def test():
print("Ligne indentée avec 4 espaces")
print("Ligne indentée avec une tabulation") # Erreur : mélange d’espaces et tab

 Indentation incorrecte dans un bloc :

python
def fonction():
print("Début")
print("Indentation incorrecte") # Trop indenté
print("Fin")

Conseils pratiques
 Configurez votre éditeur ou IDE pour insérer automatiquement 4 espaces quand vous
appuyez sur la touche Tab.
 Soyez cohérent dans toute votre base de code : utilisez uniquement des espaces, jamais
de tabulations.
 Utilisez des outils comme flake8 ou pylint pour vérifier la conformité de votre code
à la PEP 8.
 En cas d’erreur d’indentation, vérifiez bien que toutes les lignes d’un même bloc ont le
même nombre d’espaces.

Résumé
Points clés Détails
Indentation obligatoire Définit les blocs de code
Utilisation recommandée 4 espaces par niveau d’indentation
Pas de mélange d’espaces et tabs Peut provoquer des erreurs d’exécution
Indentation après : Obligatoire pour les blocs (if, for, def, etc.)
Outils recommandés Éditeurs configurés, linters (flake8, pylint)

L’indentation est une pierre angulaire de la syntaxe Python : elle structure le code et
garantit sa lisibilité. Maîtriser cette notion est indispensable pour écrire du code Python
correct et professionnel.

Résumé du module 1
 Portabilité de Python : Python est un langage portable, capable de fonctionner sur
une large gamme de plateformes matérielles.
 Mode interactif : Python offre un mode interactif qui permet de tester et déboguer des
extraits de code rapidement et facilement.
 Popularité croissante : Selon l’enquête Stack Overflow Developer Survey 2019,
Python est l’un des langages de programmation connaissant la croissance la plus
rapide dans le monde.
 Syntaxe : Chaque mot-clé de Python suit une règle d’utilisation précise appelée
syntaxe, qui définit la manière correcte d’écrire le code.
 Jupyter Notebook : C’est un environnement de calcul interactif accessible via un
navigateur web, utilisable même sans connexion internet, idéal pour coder,
documenter et partager des projets Python.
 Structure des lignes : Une ligne logique en Python peut être composée d’une ou
plusieurs lignes physiques.
 Indentation : L’indentation sert à indiquer à Python la structure et le flux des blocs
imbriqués dans le code.
 Indentation suspendue (hanging indentation) : Il s’agit d’une mise en forme où
toutes les lignes d’un paragraphe sont indentées sauf la première.
 Parenthèses et indentation : En Python, lorsque vous ouvrez une parenthèse en fin de
ligne, les lignes suivantes sont indentées jusqu’à la fermeture de la parenthèse.
 Longueur recommandée des lignes : La longueur maximale conseillée pour une
ligne de code Python est de 79 caractères, pour garantir une bonne lisibilité.

Objectifs d’apprentissage de module


À l’issue de ce module, tu seras capable de :

 Évaluer une séquence de caractères en Python : Comprendre comment Python


traite et manipule les chaînes de caractères.
 Décrire les types de nombres reconnus par Python : Identifier les différents types
numériques comme les entiers (int), les nombres à virgule flottante (float), et
éventuellement les nombres complexes.
 Expliquer les deux valeurs possibles des booléens : Comprendre que les booléens en
Python prennent les valeurs True ou False, essentielles pour les conditions et les
contrôles de flux.
 Rappeler des exemples de types de données de base en Python : Connaître les types
fondamentaux tels que les entiers, flottants, chaînes de caractères, booléens, listes,
tuples, dictionnaires.
 Résumer les différents exemples d’opérateurs Python : Comprendre l’usage des
opérateurs arithmétiques (+, -, *, /), logiques (and, or, not), de comparaison (==, !=,
<, >), et autres opérateurs utiles.

Ces compétences te permettront de mieux comprendre et manipuler les données en Python,


bases indispensables pour progresser dans la programmation.

Vue d’ensemble des types de données de base en Python


En Python, un type de données définit la nature d’une valeur et les opérations qui peuvent
être effectuées dessus. Python est un langage à typage dynamique, ce’est-à-dire qu’il déduit
automatiquement le type d’une variable à partir de la valeur qui lui est assignée.

Principaux types de données numériques


 Entiers (int)
Représentent des nombres entiers, positifs ou négatifs, sans partie décimale.
Exemple : x = 10
 Nombres à virgule flottante (float)
Représentent des nombres réels avec une partie décimale ou en notation scientifique.
Exemple : y = 3.14 ou z = 1.5e3 (1500.0)
 Nombres complexes (complex)
Composés d’une partie réelle et d’une partie imaginaire, exprimée avec un suffixe j.
Exemple : c = 2 + 3j

Types de données séquentielles


 Chaînes de caractères (str)
Séquences immuables de caractères, utilisées pour stocker du texte.
Exemple : nom = "Alice"
 Listes (list)
Séquences ordonnées et modifiables d’éléments de types variés.
Exemple : fruits = ["pomme", "banane", "cerise"]
 Tuples (tuple)
Séquences ordonnées mais immuables.
Exemple : coord = (10, 20)
 Ranges (range)
Séquences immuables représentant une suite de nombres entiers.
Exemple : r = range(5) (0 à 4)
Types de données associatives et ensembles
 Dictionnaires (dict)
Collections non ordonnées de paires clé-valeur.
Exemple : personne = {"nom": "Alice", "âge": 30}
 Ensembles (set)
Collections non ordonnées d’éléments uniques.
Exemple : s = {"pomme", "banane", "cerise"}
 Ensembles immuables (frozenset)
Version immuable des ensembles.

Types booléens et binaires


 Booléens (bool)
Représentent les valeurs de vérité : True ou False.
Utilisés dans les conditions et les contrôles de flux.
 Types binaires
Incluent bytes, bytearray, et memoryview, utilisés pour manipuler des données
binaires ou brutes.

Exemple d’inférence automatique des types


python
x=5 # int
y = 3.14 # float
nom = "Alice" # str
est_actif = True # bool

La fonction type() permet de vérifier le type d’une variable :

python
print(type(x)) # <class 'int'>
print(type(y)) # <class 'float'>
print(type(nom)) # <class 'str'>
print(type(est_actif)) # <class 'bool'>

Points clés
 Python est typé dynamiquement : pas besoin de déclarer explicitement les types.
 Les types définissent les opérations possibles sur les données.
 La connaissance des types de base est essentielle pour manipuler efficacement les
données en Python.

Les variables en Python : concepts et bonnes pratiques


Qu’est-ce qu’une variable en Python ?
Une variable est un nom symbolique qui fait référence à une valeur stockée en mémoire. Elle
permet de nommer, stocker et manipuler des données dans un programme.

Caractéristiques des variables en Python


 Typage dynamique : En Python, vous n’avez pas besoin de déclarer le type d’une
variable. Le type est automatiquement déduit à partir de la valeur qui lui est assignée.
 Mutabilité : Une variable peut être réaffectée à une nouvelle valeur de n’importe quel
type, même différent du précédent.
 Nommage : Les noms de variables doivent respecter certaines règles :
o Commencer par une lettre (a-z, A-Z) ou un underscore _.
o Ne pas commencer par un chiffre.
o Contenir uniquement des lettres, chiffres et underscores.
o Ne pas utiliser de mots réservés (ex. if, for, class).
o Respecter la casse (Python est sensible à la casse : maVariable ≠
mavariable).

Affectation de variables
L’affectation se fait avec le symbole = :

python
x = 10
nom = "Alice"
pi = 3.14
est_actif = True

Réaffectation
Une variable peut être modifiée à tout moment :

python
x=5
x = x + 3 # x vaut maintenant 8

Variables multiples
Python permet d’affecter plusieurs variables en une seule ligne :

python
a, b, c = 1, 2, 3

On peut aussi affecter une même valeur à plusieurs variables :

python
x=y=z=0

Utilisation des variables


Les variables sont utilisées pour stocker des données temporaires, passer des valeurs à des
fonctions, contrôler le flux du programme, etc.

Bonnes pratiques de nommage


 Utiliser des noms explicites et significatifs : age_utilisateur plutôt que a.
 Utiliser la convention snake_case (mots en minuscules séparés par des underscores).
 Éviter les noms trop courts ou ambigus.
 Respecter la cohérence dans tout le projet.

Exemple complet
python
# Déclaration et affectation
prenom = "Alice"
age = 30
taille = 1.75
est_membre = True

# Réaffectation
age = age + 1 # Alice a maintenant 31 ans

# Affichage
print(f"{prenom} a {age} ans et mesure {taille} mètres.")

Résumé
Point clé Description
Variables Noms symboliques pour stocker des valeurs
Typage dynamique Pas besoin de déclarer le type explicitement
Réaffectation Variables modifiables à tout moment
Nommage Respect des règles syntaxiques et bonnes pratiques
Affectation multiple Affecter plusieurs variables en une seule ligne

Maîtriser les variables est essentiel pour écrire des programmes Python efficaces et lisibles.

Les Nombres Entiers (Integers) et à Virgule Flottante


(Floats) en Python
1. Les nombres entiers (int)
 Définition : Un entier est un nombre sans partie décimale, positif ou négatif, de taille
illimitée en Python.
 Exemples :

python
a = 10
b = -25
c=0
 Caractéristiques :
o Python gère automatiquement la taille des entiers, même très grands.
o Utilisés pour compter, indexer, effectuer des opérations arithmétiques exactes.
 Opérations courantes :

python
x=7
y=3
print(x + y) # Addition : 10
print(x - y) # Soustraction : 4
print(x * y) # Multiplication : 21
print(x // y) # Division entière : 2
print(x % y) # Modulo (reste) : 1
print(x ** y) # Puissance : 343

2. Les nombres à virgule flottante (float)


 Définition : Un nombre flottant est un nombre réel avec une partie décimale,
représenté en mémoire selon la norme IEEE 754.
 Exemples :

python
pi = 3.14159
temperature = -4.5
exponent = 1.5e3 # Notation scientifique, équivalent à 1500.0

 Caractéristiques :
o Utilisés pour représenter des valeurs réelles approximatives.
o Attention aux imprécisions dues à la représentation binaire des décimales.
o Conviennent aux calculs nécessitant des fractions ou des mesures continues.
 Opérations courantes :

python
a = 5.5
b = 2.0
print(a + b) # 7.5
print(a / b) # 2.75
print(a * b) # 11.0

3. Conversion entre int et float


 Pour convertir un entier en flottant :

python
x = 10
y = float(x) # 10.0

 Pour convertir un flottant en entier (partie décimale tronquée) :

python
z = 3.99
w = int(z) # 3
4. Particularités et conseils
 Division / : En Python 3, la division / retourne toujours un float, même si la division
est exacte.

python
print(10 / 2) # 5.0 (float)

 Division entière // : Retourne la partie entière du quotient.

python
print(10 // 3) # 3

 Précision flottante : Les calculs en float peuvent entraîner des erreurs d’arrondi, par
exemple :

python
print(0.1 + 0.2) # 0.30000000000000004

Pour des calculs financiers, il est conseillé d’utiliser le module decimal.

5. Exemple pratique
python
# Calcul de la moyenne de deux notes
note1 = 15
note2 = 13.5

moyenne = (note1 + note2) / 2


print("La moyenne est :", moyenne)

Résumé
Type Description Exemple
int Nombres entiers sans décimale 10, -5, 0
float Nombres réels avec décimale 3.14, -0.5

Maîtriser les entiers et les floats est fondamental pour effectuer des calculs numériques en
Python.

Vue d’ensemble des chaînes de caractères (Strings) en


Python
Qu’est-ce qu’une chaîne de caractères ?
Une chaîne de caractères (ou string) est une séquence ordonnée de caractères utilisée pour
représenter du texte. En Python, les chaînes sont des objets immuables, ce qui signifie qu’une
fois créées, elles ne peuvent pas être modifiées.
Déclaration d’une chaîne
 Les chaînes peuvent être définies avec des guillemets simples '...' ou doubles "..."
:

python
nom = 'Alice'
message = "Bonjour tout le monde"

 Pour les chaînes multilignes, on utilise des triples guillemets simples ou doubles :

python
texte = """Ceci est
une chaîne
sur plusieurs lignes."""

Caractéristiques importantes
 Immuabilité : Toute modification crée une nouvelle chaîne.
 Indexation : Les caractères sont accessibles par leur position (indice) à partir de 0.

python
mot = "Python"
print(mot[0]) # 'P'
print(mot[-1]) # 'n' (dernier caractère)

 Slicing (tranchage) : Extraire une sous-chaîne avec la syntaxe [début:fin].

python
mot = "Python"
print(mot[1:4]) # 'yth'

Opérations courantes sur les chaînes


 Concaténation : Joindre deux chaînes avec l’opérateur +.

python
prenom = "Alice"
nom = "Dupont"
nom_complet = prenom + " " + nom
print(nom_complet) # 'Alice Dupont'

 Répétition : Répéter une chaîne avec l’opérateur *.

python
echo = "Ha! " * 3
print(echo) # 'Ha! Ha! Ha! '

 Longueur : Obtenir la taille d’une chaîne avec len().

python
print(len("Python")) # 6
 Méthodes utiles :
o lower() / upper() : conversion en minuscules / majuscules.
o strip() : supprimer les espaces en début et fin.
o split() : découper une chaîne en liste selon un séparateur.
o replace() : remplacer une sous-chaîne par une autre.
o find() : chercher la position d’une sous-chaîne.

Exemple :

python
phrase = " Bonjour Python "
print([Link]().upper()) # 'BONJOUR PYTHON'

Échappement de caractères
Pour inclure des caractères spéciaux (guillemets, saut de ligne, tabulation), on utilise le
caractère d’échappement \ :

python
texte = "Il a dit : \"Bonjour !\""
nouvelle_ligne = "Première ligne\nDeuxième ligne"
tabulation = "Col1\tCol2"

Chaînes formatées
Python propose plusieurs manières d’insérer des variables dans des chaînes :

 Concaténation classique :

python
nom = "Alice"
age = 30
print("Nom : " + nom + ", âge : " + str(age))

 Interpolation avec f-strings (depuis Python 3.6) :

python
print(f"Nom : {nom}, âge : {age}")

 Méthode format() :

python
print("Nom : {}, âge : {}".format(nom, age))

Exemple complet
python
prenom = "Alice"
age = 30
message = f"Bonjour, je m'appelle {prenom} et j'ai {age} ans."
print(message)
Résumé
Concept Description
Chaînes (str) Séquences immuables de caractères
Déclaration Guillemets simples, doubles ou triples
Indexation & slicing Accès aux caractères par position
Opérations Concaténation, répétition, longueur
Méthodes utiles lower(), upper(), strip(), split(), etc.
Échappement Utilisation de \ pour caractères spéciaux
Formatage f-strings, format(), concaténation

Maîtriser les chaînes de caractères est essentiel pour manipuler du texte dans vos programmes
Python.

Manipulation des chaînes de caractères en Python


Les chaînes de caractères (str) sont des objets immuables en Python, mais Python propose de
nombreuses méthodes pour créer, transformer et analyser des chaînes efficacement.

1. Accès aux caractères et slicing


 Accéder à un caractère par son index (indice commençant à 0) :

python
texte = "Python"
print(texte[0]) # 'P'
print(texte[-1]) # 'n' (dernier caractère)

 Extraire une sous-chaîne (slicing) :

python
print(texte[1:4]) # 'yth' (indices 1 à 3)
print(texte[:3]) # 'Pyt' (du début à l’indice 2)
print(texte[3:]) # 'hon' (de l’indice 3 à la fin)

2. Méthodes courantes pour modifier ou analyser les


chaînes
 lower() et upper() : conversion en minuscules ou majuscules.

python
print("Python".lower()) # 'python'
print("python".upper()) # 'PYTHON'

 strip() : supprime les espaces en début et fin.

python
s = " Bonjour "
print([Link]()) # 'Bonjour'
 replace(old, new) : remplace toutes les occurrences d’une sous-chaîne.

python
phrase = "J’aime le Python"
print([Link]("Python", "Java")) # 'J’aime le Java'

 split(sep) : découpe la chaîne en liste selon un séparateur.

python
mots = "un,deux,trois".split(",")
print(mots) # ['un', 'deux', 'trois']

 join(iterable) : assemble une liste de chaînes en une seule chaîne.

python
liste = ['un', 'deux', 'trois']
print(", ".join(liste)) # 'un, deux, trois'

 find(sub) : trouve la position de la première occurrence de sub, retourne -1 si non


trouvé.

python
print("Bonjour".find("jour")) # 3
print("Bonjour".find("soir")) # -1

3. Opérations sur les chaînes


 Concaténation avec + :

python
a = "Bonjour"
b = "le monde"
print(a + " " + b) # 'Bonjour le monde'

 Répétition avec * :

python
print("Ha! " * 3) # 'Ha! Ha! Ha! '

4. Chaînes formatées
 Utilisation des f-strings pour insérer des variables dans une chaîne :

python
nom = "Alice"
age = 30
print(f"Je m'appelle {nom} et j'ai {age} ans.")

5. Exemples pratiques
python
texte = " Python est génial! "
# Nettoyer les espaces
texte_nettoye = [Link]()

# Remplacer un mot
texte_modifie = texte_nettoye.replace("génial", "fantastique")

# Mettre en majuscule
texte_maj = texte_modifie.upper()

print(texte_maj) # 'PYTHON EST FANTASTIQUE!'

Résumé des méthodes utiles


Méthode Description
lower() Convertir en minuscules
upper() Convertir en majuscules
strip() Supprimer espaces début/fin
replace() Remplacer une sous-chaîne
split() Diviser en liste
join() Joindre une liste en chaîne
find() Trouver la position d’une sous-chaîne

La manipulation des chaînes est essentielle pour traiter du texte, analyser des données ou
préparer des sorties dans vos programmes Python.

Indexation des chaînes de caractères en Python


Qu’est-ce que l’indexation ?
L’indexation permet d’accéder à un caractère précis dans une chaîne de caractères en utilisant
sa position, appelée indice.

Comment ça marche ?
 Les indices commencent à 0 pour le premier caractère.
 On peut aussi utiliser des indices négatifs pour accéder aux caractères en partant de la
fin : -1 correspond au dernier caractère, -2 à l’avant-dernier, etc.

Exemple simple
python
texte = "Python"

print(texte[0]) # 'P' : premier caractère


print(texte[3]) # 'h' : quatrième caractère
print(texte[-1]) # 'n' : dernier caractère
print(texte[-3]) # 'h' : troisième caractère depuis la fin

Utilisation pratique
 Extraire un caractère spécifique pour le tester ou le manipuler.
 Parcourir une chaîne caractère par caractère avec une boucle.

Erreurs courantes
 Index hors limites : essayer d’accéder à un indice qui n’existe pas provoque une
erreur IndexError.

python
print(texte[10]) # Erreur : indice trop grand

 Toujours vérifier la longueur de la chaîne avec len() avant d’accéder à un indice.

Exemple avec boucle


python
for i in range(len(texte)):
print(f"Caractère à l'indice {i} : {texte[i]}")

Résumé
Concept Description
Indices positifs Comptent à partir de 0 depuis le début
Indices négatifs Comptent à partir de -1 depuis la fin
Accès direct chaine[indice] retourne un caractère
Erreur IndexError Se produit si indice hors limites

L’indexation est une opération fondamentale pour manipuler les chaînes de caractères en
Python.

Le découpage (Slicing) des chaînes de caractères en Python


Qu’est-ce que le slicing ?
Le slicing est une technique qui permet d’extraire une sous-chaîne (une portion) d’une chaîne
de caractères en spécifiant un intervalle d’indices.

Syntaxe générale
python
chaine[start:stop:step]

 start : indice de début (inclusif). Par défaut 0.


 stop : indice de fin (exclusif). Par défaut la fin de la chaîne.
 step : pas de saut entre les indices. Par défaut 1.

Exemples pratiques
Considérons la chaîne :

python
texte = "Python est génial"

 Extraire les caractères de l’indice 0 à 5 (exclu 6) :

python
print(texte[0:6]) # 'Python'

 Extraire de l’indice 7 à la fin :

python
print(texte[7:]) # 'est génial'

 Extraire du début jusqu’à l’indice 5 :

python
print(texte[:6]) # 'Python'

 Extraire toute la chaîne avec un pas de 2 (un caractère sur deux) :

python
print(texte[::2]) # 'Pto stgna'

 Extraire la chaîne à l’envers (inverser la chaîne) :

python
print(texte[::-1]) # 'lainég tse nohtyP'

Utilisations courantes
 Extraire des mots ou parties spécifiques d’une chaîne.
 Inverser une chaîne.
 Sélectionner des caractères selon un motif régulier.

Attention aux indices


 L’indice start est inclus dans le résultat.
 L’indice stop est exclu.
 Si start > stop avec un pas positif, le résultat est une chaîne vide.
 Les indices peuvent être négatifs pour compter depuis la fin.

Exemple complet
python
phrase = "Bonjour tout le monde"

print(phrase[0:7]) # 'Bonjour'
print(phrase[8:12]) # 'tout'
print(phrase[-5:]) # 'monde'
print(phrase[::-1]) # 'ednom el tuot ruojnoB'
Résumé
Paramètre Description Exemple
start Indice de début (inclus) texte[2:5]
stop Indice de fin (exclus) texte[:6]
step Pas entre les indices (par défaut 1) texte[::2]

Le slicing est une fonctionnalité puissante et flexible, essentielle pour manipuler efficacement
les chaînes en Python.

Découpage (Slicing) des chaînes de caractères en Python


Qu’est-ce que le slicing ?
Le slicing permet d’extraire une partie (une sous-chaîne) d’une chaîne de caractères en
spécifiant un intervalle d’indices.

Syntaxe générale
python
chaine[start:stop]

 start : indice de début (inclus), optionnel, par défaut 0.


 stop : indice de fin (exclus), optionnel, par défaut la fin de la chaîne.

Exemples simples
Considérons la chaîne suivante :

python
texte = "Python"

 Extraire les 3 premiers caractères :

python
print(texte[0:3]) # 'Pyt'

 Extraire à partir du 3e caractère jusqu’à la fin :

python
print(texte[3:]) # 'hon'

 Extraire toute la chaîne :

python
print(texte[:]) # 'Python'

Indices négatifs
Les indices négatifs comptent à partir de la fin de la chaîne :

python
print(texte[-3:]) # 'hon' (3 derniers caractères)
print(texte[:-3]) # 'Pyt' (tout sauf les 3 derniers)

Points importants
 L’indice start est inclus, stop est exclu.
 Si start est omis, le découpage commence au début.
 Si stop est omis, le découpage va jusqu’à la fin.

Exemple pratique
python
phrase = "Bonjour tout le monde"
print(phrase[0:7]) # 'Bonjour'
print(phrase[8:12]) # 'tout'
print(phrase[-5:]) # 'monde'

Résumé
Syntaxe Description Exemple Résultat
chaine[a:b] Sous-chaîne de l’indice a à b-1 texte[1:4] caractères 1 à 3
chaine[:b] Du début à l’indice b-1 texte[:3] premiers 3 caractères
chaine[a:] De l’indice a à la fin texte[3:] de l’indice 3 à la fin
chaine[:] Toute la chaîne texte[:] chaîne complète

Le slicing est une technique essentielle pour manipuler les chaînes de caractères en Python de
façon simple et efficace.

Qu’est-ce que la fonction print() ?


La fonction print() est une des fonctions les plus utilisées en Python. Elle sert à afficher des
messages, des valeurs ou des objets à l’écran (ou sur un autre flux de sortie). C’est un outil
essentiel pour afficher des résultats, communiquer avec l’utilisateur, ou déboguer un
programme.

Syntaxe générale
python
print(*objects, sep=' ', end='\n', file=[Link], flush=False)

 objects : un ou plusieurs objets à afficher, séparés par des virgules. Ils sont
automatiquement convertis en chaînes de caractères.
 sep (optionnel) : chaîne utilisée pour séparer les objets. Par défaut, un espace ' '.
 end (optionnel) : chaîne ajoutée à la fin de l’affichage. Par défaut, un saut de ligne
'\n'.
 file (optionnel) : flux de sortie, par défaut la console ([Link]).
 flush (optionnel) : booléen indiquant si la sortie doit être forcée immédiatement
(False par défaut).

Exemples d’utilisation
1. Affichage simple

python
print("Hello World")

Affiche :

text
Hello World

2. Afficher plusieurs objets

python
print("Hello", "how are you?")

Affiche :

text
Hello how are you?

3. Changer le séparateur entre objets

python
print("Hello", "how are you?", sep="---")

Affiche :

text
Hello---how are you?

4. Modifier la fin de ligne

Par défaut, print() ajoute un saut de ligne à la fin. Pour afficher plusieurs messages sur la
même ligne :

python
print("Good Morning!", end=' ')
print("It is rainy today")

Affiche :

text
Good Morning! It is rainy today

5. Afficher une ligne vide

python
print()
Affiche une ligne blanche (utile pour espacer la sortie).

6. Afficher une liste ou un tuple

python
x = ("apple", "banana", "cherry")
print(x)

Affiche :

text
('apple', 'banana', 'cherry')

7. Écrire dans un fichier

python
with open('[Link]', 'w') as f:
print('Hello file!', file=f)

Points importants
 La fonction print() convertit automatiquement les objets en chaînes.
 Le paramètre sep permet de personnaliser la séparation entre plusieurs objets.
 Le paramètre end permet de contrôler ce qui est affiché à la fin (souvent un saut de
ligne).
 print() peut écrire dans n’importe quel flux qui supporte la méthode write(), pas
seulement la console.
 Utiliser flush=True pour forcer l’affichage immédiat, utile dans certains contextes
(ex. affichage en temps réel).

Résumé rapide
Paramètre Description Valeur par défaut
objects Objets à afficher -
sep Séparateur entre objets ' ' (espace)
end Fin de ligne ou chaîne ajoutée '\n' (nouvelle ligne)
file Flux de sortie (console, fichier, etc.) [Link]
flush Forcer la sortie immédiate False

Exemple complet
python
name = "John"
age = 25

print("Name:", name, "Age:", age, sep=" | ", end="\n\n")


print("Welcome to Python programming!")
print()
print("This is the end of the demo.")

Affiche :
text
Name: | John | Age: | 25

Welcome to Python programming!

This is the end of the demo.

La fonction print() est un outil fondamental pour toute interaction avec l’utilisateur et le
débogage en Python. Sa flexibilité permet d’adapter l’affichage selon les besoins.

Mini-projet : Compteur de lettres


Objectif
Créer un programme Python qui demande à l’utilisateur de saisir une phrase, puis qui compte
et affiche le nombre d’occurrences de chaque lettre présente dans cette phrase.

Étapes du projet
1. Saisie de la phrase
o Utiliser la fonction input() pour récupérer une chaîne de caractères.
2. Prétraitement
o Convertir la phrase en minuscules pour que la comptabilisation soit insensible
à la casse.
o Optionnel : retirer les espaces et caractères non alphabétiques si on souhaite ne
compter que les lettres.
3. Comptage des lettres
o Parcourir chaque caractère de la chaîne.
o Utiliser un dictionnaire (dict) pour stocker les lettres comme clés et leur
nombre d’occurrences comme valeurs.
o Incrémenter le compteur à chaque apparition.
4. Affichage des résultats
o Parcourir le dictionnaire et afficher chaque lettre avec son nombre
d’occurrences.

Exemple de code simplifié


python
# 1. Saisie de la phrase
phrase = input("Entrez une phrase : ")

# 2. Prétraitement
phrase = [Link]()

# 3. Comptage des lettres


compteur = {}

for caractere in phrase:


if [Link](): # Ne compter que les lettres
if caractere in compteur:
compteur[caractere] += 1
else:
compteur[caractere] = 1

# 4. Affichage des résultats


print("\nNombre d'occurrences de chaque lettre :")
for lettre, nombre in sorted([Link]()):
print(f"{lettre} : {nombre}")

Extensions possibles
 Compter aussi les chiffres ou autres caractères.
 Afficher les résultats triés par fréquence décroissante.
 Ignorer les accents en normalisant la chaîne.
 Ajouter une interface graphique simple avec Jupyter Notebook.

Ce mini-projet permet de mettre en pratique la saisie utilisateur, la manipulation des chaînes,


les boucles, les conditions, et l’utilisation des dictionnaires, des notions fondamentales en
Python.

Vue d’ensemble des opérateurs Python


Les opérateurs en Python sont des symboles ou mots-clés qui permettent de réaliser des
opérations sur des variables ou des valeurs. Ils sont essentiels pour manipuler les données et
contrôler le flux d’un programme.

Types principaux d’opérateurs en Python


Type d’opérateur Description
Opérateurs Effectuent des calculs mathématiques de base (addition,
arithmétiques soustraction, multiplication, etc.)
Opérateurs Assignent ou modifient la valeur d’une variable (=, +=, -=, etc.)
d’affectation
Opérateurs de Comparent deux valeurs (==, !=, <, >, <=, >=)
comparaison
Opérateurs logiques Combinent des expressions booléennes (and, or, not)
Opérateurs d’identité Vérifient si deux objets sont identiques (is, is not)
Opérateurs Vérifient la présence d’un élément dans une collection (in, not
d’appartenance in)
Opérateurs bit à bit Manipulent les bits des nombres entiers (&, `

1. Opérateurs arithmétiques
Opérateur Nom Exemple Description
+ Addition x + y Additionne deux nombres
- Soustraction x - y Soustrait y de x
* Multiplication x * y Multiplie x par y
/ Division x / y Divise x par y (résultat float)
% Modulo x % y Reste de la division de x par y
** Exponentiation x ** y x puissance y
// Division entière x // y Division avec arrondi vers le bas

Exemple :

python
a = 10
b=3
print(a + b) # 13
print(a // b) # 3
print(a ** b) # 1000

2. Opérateurs d’affectation
Ils permettent d’assigner ou modifier la valeur d’une variable.

Opérateur Exemple Équivalent


= x = 5 Affectation simple
+= x += 3 x = x + 3
-= x -= 3 x = x - 3
*= x *= 3 x = x * 3
/= x /= 3 x = x / 3
%= x %= 3 x = x % 3
//= x //= 3 x = x // 3
**= x **= 3 x = x ** 3

3. Opérateurs de comparaison
Ils comparent deux valeurs et retournent un booléen (True ou False).

Opérateur Signification Exemple


== Égal à x == y
!= Différent de x != y
< Strictement inférieur à x < y
> Strictement supérieur à x > y
<= Inférieur ou égal à x <= y
>= Supérieur ou égal à x >= y

4. Opérateurs logiques
Utilisés pour combiner des expressions booléennes.

Opérateur Description Exemple


and ET logique x > 0 and y < 10
or OU logique x < 0 or y > 10
not Négation logique not(x == y)

5. Opérateurs d’identité
Vérifient si deux objets sont le même objet en mémoire.
Opérateur Description Exemple
is Identique (même objet) x is y
is not Pas identique x is not y

6. Opérateurs d’appartenance
Vérifient la présence d’un élément dans une collection.

Opérateur Description Exemple


in Est dans 'a' in 'apple'
not in N’est pas dans 'b' not in 'apple'

7. Opérateurs bit à bit


Manipulent les bits des entiers.

Opérateur Description Exemple


& ET bit à bit x & y
` ` OU bit à bit
^ OU exclusif (XOR) bit à bit x ^ y
~ Complément bit à bit ~x
<< Décalage à gauche x << 2
>> Décalage à droite x >> 2

Exemple complet
python
a = 15
b=4

print("Addition:", a + b)
print("Division entière:", a // b)
print("Puissance:", a ** b)
print("Comparaison égalité:", a == b)
print("ET logique:", (a > 10) and (b < 5))
print("Appartenance:", 'p' in "apple")
print("Décalage à gauche:", a << 1)

Conclusion
Les opérateurs Python couvrent un large éventail d’opérations indispensables pour manipuler
les données, effectuer des calculs, comparer des valeurs, contrôler la logique, et manipuler les
bits. Maîtriser ces opérateurs est fondamental pour programmer efficacement en Python.

Les opérateurs arithmétiques en Python


Les opérateurs arithmétiques permettent d’effectuer des opérations mathématiques de base sur
des nombres. Ils sont essentiels pour manipuler des données numériques.
Liste des opérateurs arithmétiques
Opérateur Nom Description Exemple Résultat
+ Addition Additionne deux nombres 7 + 2 9
- Soustraction Soustrait le second nombre du 7 - 2 5
premier
* Multiplication Multiplie deux nombres 7 * 2 14
/ Division Divise le premier nombre par 7 / 2 3.5
le second (float)
// Division entière (floor Divise et arrondit à l’entier 7 // 2 3
division) inférieur
% Modulo Donne le reste de la division 7 % 2 1
** Exponentiation Élève le premier nombre à la 7 ** 2 49
puissance du second

Exemple pratique
python
a=7
b=2

print("Addition:", a + b) #9
print("Soustraction:", a - b) #5
print("Multiplication:", a * b) # 14
print("Division:", a / b) # 3.5
print("Division entière:", a // b) # 3
print("Modulo:", a % b) #1
print("Puissance:", a ** b) # 49

Particularités
 La division / retourne toujours un nombre à virgule flottante (float), même si la
division est exacte.
 La division entière // retourne la partie entière du quotient, arrondie vers le bas.
 Le modulo % est utile pour déterminer le reste d’une division, par exemple pour tester
la parité d’un nombre (x % 2 == 0).
 L’opérateur ** permet d’effectuer des puissances, par exemple 2 ** 3 donne 8.

Utilisation mixte
Python supporte les opérations entre types différents (entiers, flottants, complexes) et effectue
automatiquement la conversion si nécessaire.

python
print(10 + 3.5) # 13.5 (float)
print(2 ** 3.0) # 8.0 (float)

Résumé
Opérateur Fonction Exemple Résultat
+ Addition a + b Somme
- Soustraction a - b Différence
* Multiplication a * b Produit
/ Division (float) a / b Quotient
// Division entière a // b Quotient entier
% Modulo (reste) a % b Reste
** Puissance a ** b Puissance

Ces opérateurs forment la base des calculs numériques en Python.

Les opérateurs d’affectation en Python


Qu’est-ce qu’un opérateur d’affectation ?
Un opérateur d’affectation sert à attribuer une valeur à une variable. Le plus simple est le
signe égal =, mais Python propose aussi des opérateurs combinés qui effectuent une opération
et assignent le résultat à la variable en une seule étape.

Liste des opérateurs d’affectation courants


Opérateur Description Exemple Équivalent à
= Affectation simple x = 5 —
+= Addition puis affectation x += 3 x = x + 3
-= Soustraction puis affectation x -= 2 x = x - 2
*= Multiplication puis affectation x *= 4 x = x * 4
/= Division puis affectation x /= 2 x = x / 2
//= Division entière puis affectation x //= 3 x = x // 3
%= Modulo puis affectation x %= 5 x = x % 5
**= Puissance puis affectation x **= 2 x = x ** 2

Exemple d’utilisation
python
x = 10
x += 5 # équivaut à x = x + 5, donc x vaut 15
x *= 2 # équivaut à x = x * 2, donc x vaut 30
x -= 10 # équivaut à x = x - 10, donc x vaut 20
print(x) # affiche 20

Avantages
 Code plus concis et lisible.
 Permet de modifier rapidement la valeur d’une variable en fonction de son ancienne
valeur.

Résumé rapide
Opérateur Fonction Exemple
= Affectation simple x = 5
+= Addition et affectation x += 3
-= Soustraction et affectation x -= 2
*= Multiplication et affectation x *= 4
/= Division et affectation x /= 2

Ces opérateurs sont essentiels pour manipuler efficacement les variables dans vos
programmes Python.

Les opérateurs de comparaison en Python


Les opérateurs de comparaison permettent de comparer deux valeurs ou variables et
retournent un résultat booléen : True ou False. Ils sont essentiels pour les conditions, les
boucles, et la prise de décision dans un programme.

Liste des opérateurs de comparaison


Opérateur Nom Description Exemple Résultat
== Égal à Vrai si les deux valeurs sont x == y True ou
égales False
!= Différent de Vrai si les deux valeurs sont x != y True ou
différentes False
> Strictement Vrai si la valeur de gauche est plus x > y True ou
supérieur à grande que celle de droite False
< Strictement Vrai si la valeur de gauche est plus x < y True ou
inférieur à petite que celle de droite False
>= Supérieur ou Vrai si la valeur de gauche est plus x >= y True ou
égal à grande ou égale à celle de droite False
<= Inférieur ou Vrai si la valeur de gauche est plus x <= y True ou
égal à petite ou égale à celle de droite False

Exemples concrets
python
a=5
b = 10
c=5

print(a == b) # False, car 5 != 10


print(a != b) # True, car 5 est différent de 10
print(a > b) # False, 5 n’est pas supérieur à 10
print(a < b) # True, 5 est inférieur à 10
print(a >= c) # True, 5 est égal à 5
print(b <= c) # False, 10 n’est pas inférieur ou égal à 5

Particularités
 Comparaison de types différents : Par exemple, 5 == 5.0 retourne True car Python
considère l’égalité entre entier et flottant si les valeurs numériques sont égales.
 Comparaison de chaînes de caractères : Les chaînes sont comparées selon l’ordre
lexicographique (ordre alphabétique basé sur les codes ASCII/Unicode).

python
print("apple" < "banana") # True
print("Apple" < "apple") # True, car majuscule a un code ASCII plus petit

 Comparaison de tuples ou listes : Python compare élément par élément, dans l’ordre.

python
print((1, 2, 3) < (1, 3, 2)) # True, car 2 < 3 au deuxième élément

 Attention aux flottants : Les comparaisons d’égalité sur des nombres à virgule
flottante peuvent être imprécises à cause des erreurs d’arrondi.

Utilisation typique
Les opérateurs de comparaison sont souvent utilisés dans :

 Les structures conditionnelles (if, elif, else)


 Les boucles (while, for avec conditions)
 Les expressions booléennes complexes combinées avec les opérateurs logiques ( and,
or, not)

Résumé rapide des opérateurs de comparaison


Opérateur Fonction Exemple
== Égal à x == y
!= Différent de x != y
> Strictement supérieur à x > y
< Strictement inférieur à x < y
>= Supérieur ou égal à x >= y
<= Inférieur ou égal à x <= y

Les opérateurs logiques en Python


Les opérateurs logiques permettent de combiner plusieurs conditions booléennes (vraies ou
fausses) pour construire des expressions plus complexes. Ils sont essentiels pour contrôler le
flux d’exécution dans les programmes Python.

Les trois opérateurs logiques principaux


Opérateur Description Fonctionnement principal
and ET logique Vrai si toutes les conditions sont vraies
Or OU logique Vrai si au moins une condition est vraie
not Négation (NON Inverse la valeur booléenne (True devient False, et
logique) vice versa)

1. Opérateur and
 Retourne True seulement si toutes les conditions sont vraies.
 Si une condition est fausse, le résultat est immédiatement False (évaluation courte-
circuit).

Table de vérité :

A B A and B
True True True
True False False
False True False
False False False

Exemple :

python
a = 10
b = 20

if a > 5 and b > 15:


print("Les deux conditions sont vraies")

Ici, la phrase sera affichée car a > 5 et b > 15 sont vraies.

2. Opérateur or
 Retourne True si au moins une des conditions est vraie.
 Retourne False uniquement si toutes les conditions sont fausses.
 Évaluation courte-circuit : si la première condition est vraie, la seconde n’est pas
évaluée.

Table de vérité :

A B A or B
True True True
True False True
False True True
False False False

Exemple :

python
age = 17
revenu = 35000

if age > 18 or revenu > 30000:


print("Éligible à un prêt partiel")

Ici, même si age > 18 est faux, revenu > 30000 est vrai, donc la condition globale est vraie.

3. Opérateur not
 Inverse la valeur booléenne d’une expression.
 not True devient False, not False devient True.
 Toujours retourne un booléen (True ou False).

Table de vérité :

A not A
True False
False True

Exemple :

python
est_etudiant = False

if not est_etudiant:
print("Éligible à la réduction")

Ici, comme est_etudiant est False, not est_etudiant est True et le message est affiché.

Particularités importantes
 Les opérateurs and et or retournent parfois l’un des opérandes, pas nécessairement un
booléen pur, sauf si les expressions sont explicitement booléennes.
 L’opérateur not retourne toujours un booléen.
 Ces opérateurs supportent l’évaluation courte-circuit, ce qui optimise les
performances.

Exemple combiné
python
a = 10
b=5
c = 20

if (a > b and c > a) or not (b == 5):


print("Condition complexe vérifiée")
else:
print("Condition non vérifiée")

Ici, la condition est vraie car a > b and c > a est vraie, donc la partie or est satisfaite.

Résumé synthétique
Opérateur Fonction Exemple Résultat attendu
and Vrai si toutes les conditions x > 0 and y < True si x > 0 et y <
vraies 10 10
or Vrai si au moins une condition x < 0 or y > 10 True si x < 0 ou y >
vraie 10
not Inverse la valeur booléenne not(x == y) True si x ≠ y

Les opérateurs logiques sont indispensables pour écrire des conditions précises et complexes
en Python, notamment dans les structures conditionnelles et les boucles.

Qu’est-ce que les opérateurs d’identité ?


Les opérateurs d’identité permettent de vérifier si deux variables référencent exactement le
même objet en mémoire. Ils ne comparent pas seulement la valeur, mais l’identité de l’objet.

Les deux opérateurs d’identité


Opérateur Description Exemple
is Vrai si les deux variables pointent vers le même objet a is b
is not Vrai si les deux variables ne pointent pas vers le même objet a is not b

Différence avec l’opérateur ==


 == compare la valeur des objets (égalité de contenu).
 is compare l’identité des objets (même emplacement mémoire).

Exemple concret
python
a = [1, 2, 3]
b=a
c = [1, 2, 3]

print(a == b) # True, mêmes valeurs


print(a is b) # True, même objet en mémoire

print(a == c) # True, mêmes valeurs


print(a is c) # False, objets différents en mémoire

Utilisation typique
 Tester si une variable est None (valeur spéciale indiquant l’absence de valeur) :

python
x = None
if x is None:
print("x n’a pas de valeur")
 Vérifier que deux variables référencent le même objet (utile pour optimiser ou
contrôler les références).

Résumé rapide
Opérateur Fonction Exemple Résultat attendu
is Même objet en mémoire a is b True si même objet
is not Objets différents en mémoire a is not b True si objets différents

Les opérateurs d’identité sont essentiels pour comprendre la gestion des objets en Python,
notamment pour éviter des erreurs liées à la mutabilité ou aux références.

Les opérateurs d’appartenance en Python permettent de vérifier si une valeur est présente ou
absente dans une séquence (comme une chaîne de caractères, une liste, un tuple, un ensemble
ou un dictionnaire). Ils retournent un booléen (True ou False).

Les deux opérateurs d’appartenance


Opérateur Description
in Renvoie True si la valeur est présente dans la séquence
not in Renvoie True si la valeur n’est pas présente dans la séquence

Exemples avec in
python
var = "TutorialsPoint"
print("P" in var) # True, car 'P' est dans la chaîne
print("tor" in var) # True, 'tor' est une sous-chaîne
print("To" in var) # False, la casse est sensible

Exemples avec not in

python
print("P" not in var) # False, 'P' est présent
print("To" not in var) # True, 'To' n’est pas présent (sensible à la casse)

Utilisation typique
 Tester la présence d’un élément dans une liste, un tuple, une chaîne, un dictionnaire
(sur les clés).
 Contrôler les conditions dans les structures conditionnelles.

Remarques importantes
 La recherche est sensible à la casse dans les chaînes de caractères.
 Ces opérateurs fonctionnent aussi avec d’autres types itérables comme les ensembles
(set) et dictionnaires (vérifie les clés).
 Préférez not in plutôt que not (x in y) pour plus de lisibilité.
Résumé rapide
Opérateur Fonction Exemple Résultat
in Vérifie la présence 'a' in 'apple' True
not in Vérifie l’absence 'b' not in 'apple' True

Ces opérateurs sont simples mais très puissants pour tester rapidement l’appartenance d’une
valeur à une collection.

Les opérateurs bit à bit en Python


Les opérateurs bit à bit permettent de manipuler directement les bits des nombres entiers. Ils
effectuent des opérations sur la représentation binaire des entiers, bit par bit. Ces opérateurs
sont très utiles en programmation bas niveau, cryptographie, optimisation, ou manipulation de
données binaires.

Fonctionnement général
 Les entiers sont convertis en binaire.
 L’opération est appliquée sur chaque paire de bits correspondants.
 Le résultat est converti en entier décimal.

Liste des opérateurs bit à bit


Opérateur Nom Description Exemple Résultat
(décimal)
& ET bit à bit Met un bit à 1 si les deux 10 & 7 2
(AND) bits sont 1
` ` OU bit à bit (OR) Met un bit à 1 `10
si au moins un
des bits est 1
^ OU exclusif Met un bit à 1 si un seul des 10 ^ 7 13
(XOR) bits est 1
~ Complément à Inverse tous les bits (0 ~10 -11
un (NOT) devient 1, 1 devient 0)
<< Décalage à Décale les bits vers la 10 << 2 40
gauche gauche, ajoute des 0 à droite
(équivaut à une
multiplication par 2n2^n2n)
>> Décalage à Décale les bits vers la droite, 10 >> 1 5
droite supprime les bits de droite
(équivaut à une division
entière par 2n2^n2n)

Explications détaillées
1. Bitwise AND (&)
Compare chaque bit des deux nombres. Le bit résultant est 1 seulement si les deux bits sont 1.

Exemple :

python
a = 10 # binaire : 1010
b = 7 # binaire : 0111
print(a & b) # 2 (binaire 0010)

2. Bitwise OR (|)
Le bit résultant est 1 si au moins un des bits est 1.

python
print(a | b) # 15 (binaire 1111)

3. Bitwise XOR (^)


Le bit résultant est 1 si un seul des bits est 1 (exclusif).

python
print(a ^ b) # 13 (binaire 1101)

4. Bitwise NOT (~)


Inverse tous les bits. En Python, cela correspond à −x−1-x - 1−x−1.

python
print(~a) # -11

5. Décalage à gauche (<<)


Décale les bits vers la gauche, ajoute des zéros à droite. Multiplie par 2n2^{n}2n.

python
print(a << 2) # 40 (1010 devient 101000)

6. Décalage à droite (>>)


Décale les bits vers la droite, supprime les bits de droite. Divise par 2n2^{n}2n (division
entière).

python
print(a >> 1) # 5 (1010 devient 0101)

Exemple complet
python
a = 60 # 0b00111100
b = 13 # 0b00001101
print("a & b =", a & b) # 12 (0b00001100)
print("a | b =", a | b) # 61 (0b00111101)
print("a ^ b =", a ^ b) # 49 (0b00110001)
print("~a =", ~a) # -61
print("a << 2 =", a << 2) # 240 (0b11110000)
print("a >> 2 =", a >> 2) # 15 (0b00001111)

Points clés
 Les opérateurs bit à bit ne fonctionnent que sur des entiers.
 Ils permettent une manipulation fine des données au niveau binaire.
 Le décalage à gauche multiplie par des puissances de 2, le décalage à droite divise.
 Le complément à un (NOT) inverse tous les bits et produit un nombre négatif selon la
représentation en complément à deux.

Voici un résumé clair et structuré en français du contenu de ce module :

Résumé du module
 Types de données
Les types de données catégorisent les éléments de données. Ils déterminent la nature
des valeurs et les opérations qui peuvent leur être appliquées.
 Objets mutables et immutables
Les objets sont stockés en mémoire pour traitement. Certains objets sont mutables
(modifiables), d’autres immuables (non modifiables).
 Les chaînes de caractères (strings)
Une chaîne est une séquence de caractères en Python. Elle est définie par des
caractères entourés de guillemets simples, doubles ou triples.
 Indexation des chaînes
Utiliser un indice supérieur à la longueur de la chaîne provoque une erreur.
 Exemples de types de données de base
Les types fondamentaux en Python comprennent les booléens ( bool), les chaînes de
caractères (str) et les entiers (int).
 Opérateurs arithmétiques
Utilisés pour effectuer des opérations mathématiques courantes sur des valeurs
numériques.
 Opérateurs de comparaison
Permettent de comparer deux valeurs et retournent un booléen.
 Opérateurs d’appartenance (membership)
Permettent de tester si une séquence est présente dans un objet.
 Opérateurs logiques
Utilisés pour combiner plusieurs conditions dans des expressions conditionnelles.
 Opérateurs d’identité
Permettent de vérifier si deux objets sont identiques (référencent le même objet en
mémoire).

Ce module vous a ainsi permis de comprendre les bases essentielles pour manipuler les
données et les expressions en Python.
Objectifs d’apprentissage
Après avoir terminé ce module, vous serez capable de :

1. Citer des exemples de types de données avancés en Python


Comprendre et reconnaître des types comme les listes, tuples, dictionnaires,
ensembles, etc.
2. Expliquer pourquoi on ne peut pas faire d’indexation ni de slicing sur un objet de
type set
Savoir que les ensembles (set) sont des collections non ordonnées, ce qui empêche
l’accès par position.
3. Expliquer l’exécution conditionnelle et répétitive
Comprendre comment utiliser les structures conditionnelles ( if, else, elif) et les
boucles (for, while) pour contrôler le flux d’un programme.
4. Comparer les fonctions zip() et enumerate()
Savoir que zip() combine plusieurs itérables en un seul itérable de tuples, tandis que
enumerate() ajoute un compteur à un itérable.
5. Définir les types de données composés (compound data types) en Python
Comprendre les collections qui regroupent plusieurs éléments, comme les listes,
tuples, dictionnaires et ensembles.

Vue d’ensemble des types de données avancés en Python


Introduction
Python propose plusieurs types de données intégrés, qui sont les briques fondamentales pour
stocker et manipuler des données. On distingue les types de base, qui contiennent une seule
valeur, et les types avancés (ou composés), qui peuvent contenir plusieurs éléments.

1. Types de données de base


 Entiers (int) : nombres entiers positifs ou négatifs, sans limite de taille.
 Nombres à virgule flottante (float) : nombres réels avec décimale, y compris en
notation scientifique.
 Nombres complexes (complex) : nombres avec partie réelle et imaginaire, par
exemple 2 + 3j.
 Booléens (bool) : valeurs True ou False.
 Chaînes de caractères (str) : séquences immuables de caractères.

2. Types de données avancés (composés)


Ces types permettent de stocker plusieurs éléments et ont des caractéristiques spécifiques :

a) Listes (list)
 Collections ordonnées, modifiables (mutables).
 Peuvent contenir des éléments de types différents.
 Syntaxe : [1, "texte", 3.14]

b) Tuples (tuple)
 Collections ordonnées, immuables.
 Utiles pour des données constantes.
 Syntaxe : (1, "texte", 3.14)

c) Ranges (range)
 Représentent une séquence d’entiers générée à la volée.
 Utilisés souvent dans les boucles.
 Syntaxe : range(0, 10)

d) Dictionnaires (dict)
 Collections non ordonnées de paires clé-valeur.
 Clés uniques, valeurs associées.
 Syntaxe : {"nom": "Alice", "âge": 30}

e) Ensembles (set) et ensembles figés (frozenset)


 Collections non ordonnées d’éléments uniques.
 set est mutable, frozenset est immuable.
 Utiles pour opérations ensemblistes (union, intersection, différence).
 Syntaxe : {"pomme", "banane", "cerise"}

3. Types binaires
 bytes : séquences immuables d’octets.
 bytearray : séquences mutables d’octets.
 memoryview : permet d’accéder directement à la mémoire d’un autre objet binaire.

4. Particularités importantes
 Mutabilité : certains types sont modifiables (list, set, dict), d’autres non (tuple,
str, frozenset).
 Choix du type : dépend du besoin en termes d’ordre, mutabilité, unicité, association
clé-valeur.
 Performance : certains types comme range sont calculés à la volée, économisant de
la mémoire.

5. Exemples d’utilisation
python
# Liste mutable
fruits = ["pomme", "banane", "cerise"]
[Link]("orange")

# Tuple immuable
coordonnees = (10.0, 20.0)

# Dictionnaire clé-valeur
personne = {"nom": "Alice", "âge": 30}

# Ensemble unique
lettres = set("abracadabra") # {'a', 'b', 'r', 'c', 'd'}

# Range pour boucle


for i in range(5):
print(i)

Résumé des types avancés


Type Mutable Description Exemple
?
list Oui Séquence ordonnée modifiable [1][2][3]
tuple Non Séquence ordonnée immuable (1, 2, 3)
range Non Séquence d’entiers générée à la range(0, 10)
volée
dict Oui Paires clé-valeur {"clé": "valeur"}
set Oui Ensemble non ordonné d’éléments {"a", "b", "c"}
uniques
frozenset Non Ensemble immuable frozenset({"a", "b",
"c"})

Conclusion
Connaître ces types avancés est essentiel pour structurer efficacement vos données en Python,
choisir la bonne structure selon vos besoins, et écrire des programmes performants et lisibles.

Les listes en Python


Qu’est-ce qu’une liste ?
Une liste est une collection ordonnée et modifiable d’éléments. Elle peut contenir des
éléments de types différents (nombres, chaînes, objets, etc.). Les listes sont très utilisées pour
stocker et manipuler des collections de données.

Création d’une liste


 Avec des crochets [] et des éléments séparés par des virgules :

python
fruits = ["pomme", "banane", "cerise"]
nombres = [1, 2, 3, 4, 5]
mixte = [1, "deux", 3.0, True]
 Liste vide :

python
vide = []

Accès aux éléments


 Par indice (commence à 0) :

python
print(fruits[0]) # 'pomme'
print(fruits[-1]) # 'cerise' (dernier élément)

Modification des éléments


 Affecter une nouvelle valeur à une position donnée :

python
fruits[1] = "orange"
print(fruits) # ['pomme', 'orange', 'cerise']

Méthodes courantes des listes


 append() : ajoute un élément à la fin.

python
[Link]("kiwi")

 insert(index, valeur) : insère un élément à une position donnée.

python
[Link](1, "mangue")

 remove(valeur) : supprime la première occurrence d’un élément.

python
[Link]("pomme")

 pop(index) : supprime et retourne l’élément à l’indice donné (par défaut le dernier).

python
dernier = [Link]()

 sort() : trie la liste (modifie la liste).

python
[Link]()

 reverse() : inverse l’ordre des éléments.

python
[Link]()
Longueur d’une liste
 Avec la fonction len() :

python
print(len(fruits)) # nombre d’éléments dans la liste

Parcourir une liste


 Avec une boucle for :

python
for fruit in fruits:
print(fruit)

Exemple complet
python
fruits = ["pomme", "banane", "cerise"]
[Link]("orange")
fruits[1] = "kiwi"
print(fruits) # ['pomme', 'kiwi', 'cerise', 'orange']

for fruit in fruits:


print(fruit)

Résumé rapide
Opération Syntaxe Description
Créer une liste liste = Liste avec éléments
Accéder à un élément liste Premier élément
Ajouter un élément [Link](valeur) Ajoute à la fin
Insérer un élément [Link](index, Insère à l’indice donné
valeur)
Supprimer un [Link](valeur) Supprime la première
élément occurrence
Supprimer par index [Link](index) Supprime et retourne l’élément
Trier la liste [Link]() Trie la liste

Les listes sont un outil fondamental pour gérer des collections dynamiques en Python.

Indexation et slicing des listes en Python


1. Indexation des listes
L’indexation permet d’accéder à un élément précis d’une liste en utilisant sa position (indice).

 Les indices commencent à 0 pour le premier élément.


 Les indices négatifs permettent d’accéder aux éléments depuis la fin : -1 est le dernier
élément, -2 l’avant-dernier, etc.

Exemple :

python
fruits = ["pomme", "banane", "cerise", "orange"]

print(fruits[0]) # 'pomme'
print(fruits[2]) # 'cerise'
print(fruits[-1]) # 'orange'
print(fruits[-3]) # 'banane'

2. Slicing (découpage) des listes


Le slicing permet d’extraire une sous-liste à partir d’une liste existante.

Syntaxe générale :
python
liste[start:stop:step]

 start : indice de début (inclus), par défaut 0.


 stop : indice de fin (exclus), par défaut la fin de la liste.
 step : pas entre les indices, par défaut 1.

Exemples :
python
fruits = ["pomme", "banane", "cerise", "orange", "kiwi", "mangue"]

print(fruits[1:4]) # ['banane', 'cerise', 'orange']


print(fruits[:3]) # ['pomme', 'banane', 'cerise']
print(fruits[3:]) # ['orange', 'kiwi', 'mangue']
print(fruits[::2]) # ['pomme', 'cerise', 'kiwi'] (un élément sur deux)
print(fruits[::-1]) # ['mangue', 'kiwi', 'orange', 'cerise', 'banane', 'pomme'] (liste inversée)

Points importants
 L’indice start est inclus dans la tranche.
 L’indice stop est exclu.
 Le pas step peut être négatif pour parcourir la liste à l’envers.
 Si start ou stop sont omis, Python utilise le début ou la fin de la liste par défaut.

Exemple complet
python
nombres = [10, 20, 30, 40, 50, 60, 70]

print(nombres[2:5]) # [30, 40, 50]


print(nombres[:4]) # [10, 20, 30, 40]
print(nombres[3:]) # [40, 50, 60, 70]
print(nombres[::3]) # [10, 40, 70]
print(nombres[::-1]) # [70, 60, 50, 40, 30, 20, 10]

Résumé rapide
Syntaxe Description Exemple Résultat
liste[i] Accès à l’élément à fruits 'pomme'
l’indice i
liste[start:stop] Sous-liste de start à fruits[1:4] ['banane',
'cerise',
stop-1
'orange']
liste[start:stop:step] Sous-liste avec pas fruits[::2] ['pomme',
step 'cerise', 'kiwi']
liste[::-1] Liste inversée fruits[::- Liste à l’envers
1]

Le slicing et l’indexation sont des outils puissants pour manipuler efficacement les listes en
Python.

Les tuples en Python


Qu’est-ce qu’un tuple ?
Un tuple est une collection ordonnée et immuable d’éléments. Contrairement aux listes, une
fois créé, un tuple ne peut pas être modifié (pas d’ajout, suppression ou modification
d’éléments).

Création d’un tuple


 Avec des parenthèses () et des éléments séparés par des virgules :

python
mon_tuple = (1, 2, 3)
couleurs = ("rouge", "vert", "bleu")
mixte = (1, "deux", 3.0, True)

 Un tuple à un seul élément doit avoir une virgule après l’élément :

python
tuple_un_element = (5,)

Accès aux éléments


 Par indice, comme pour les listes (indices commençant à 0) :

python
print(couleurs[0]) # 'rouge'
print(couleurs[-1]) # 'bleu'
Avantages des tuples
 Immutabilité : garantit que les données ne seront pas modifiées accidentellement.
 Plus rapides que les listes pour certaines opérations.
 Utiles comme clés dans les dictionnaires ou éléments de sets.

Exemple simple
python
coordonnees = (10.0, 20.0)
print(coordonnees[0]) # 10.0

Résumé rapide
Caractéristique Description
Ordonné Oui
Modifiable Non (immuable)
Syntaxe () avec éléments séparés par des virgules
Accès Par indice

Les tuples sont idéaux pour stocker des données constantes et garantir leur intégrité dans votre
programme.

Les ensembles (sets) en Python


Qu’est-ce qu’un set ?
Un set est une collection non ordonnée d’éléments uniques. Cela signifie que :

 Les éléments ne sont pas rangés dans un ordre particulier.


 Chaque élément apparaît une seule fois (pas de doublons).
 Les sets sont mutables, on peut ajouter ou supprimer des éléments.

Création d’un set


 Avec des accolades {} contenant les éléments séparés par des virgules :

python
mon_set = {1, 2, 3, 4}
fruits = {"pomme", "banane", "cerise"}

 Pour créer un set vide, on utilise la fonction set() (car {} crée un dictionnaire vide) :

python
vide = set()

Caractéristiques importantes
 Les éléments doivent être hashables (types immuables comme int, str, tuple
immuable).
 Les sets ne supportent pas l’indexation ni le slicing car ils sont non ordonnés.

Opérations courantes sur les sets


Opération Méthode ou opérateur Description Exemple
Ajouter un add() Ajoute un élément mon_set.add(5)
élément
Supprimer remove() / discard() Supprime un mon_set.remove(2)
un élément élément (discard
ne lève pas d’erreur
si absent)
Vider un set clear() Supprime tous les mon_set.clear()
éléments
Union union() ou ` ` Combine les éléments
de deux sets
Intersection intersection() ou & Éléments communs set1 & set2
aux deux sets
Différence difference() ou - Éléments dans le set1 - set2
premier set mais
pas dans le second
Différence symmetric_difference() Éléments dans un set1 ^ set2
symétrique ou ^ set ou l’autre mais
pas les deux

Exemples pratiques
python
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}

print("Union :", A | B) # {1, 2, 3, 4, 5, 6}


print("Intersection :", A & B) # {3, 4}
print("Différence :", A - B) # {1, 2}
print("Différence symétrique :", A ^ B) # {1, 2, 5, 6}

Parcourir un set
On peut parcourir les éléments d’un set avec une boucle for, mais l’ordre n’est pas garanti.

python
for element in fruits:
print(element)

Utilisations courantes
 Éliminer les doublons dans une liste.
 Effectuer des opérations ensemblistes (union, intersection).
 Tester rapidement l’appartenance d’un élément.
Exemple d’élimination de doublons
python
liste = [1, 2, 2, 3, 4, 4, 5]
ensemble = set(liste)
print(ensemble) # {1, 2, 3, 4, 5}

Résumé rapide
Caractéristique Description
Ordre Non ordonné
Unicité Oui, pas de doublons
Mutable Oui
Indexation/Slicing Non supporté
Syntaxe {éléments} ou set() pour vide

Les sets sont très utiles pour gérer des collections uniques et effectuer des calculs
ensemblistes efficaces.

Les dictionnaires en Python


Qu’est-ce qu’un dictionnaire ?
Un dictionnaire est une collection non ordonnée, modifiable et indexée par des clés
uniques. Chaque élément est une paire clé : valeur. Les clés doivent être immutables
(comme des chaînes, nombres, tuples immuables), tandis que les valeurs peuvent être de
n’importe quel type.

Création d’un dictionnaire


 Avec des accolades {} contenant des paires clé-valeur séparées par des deux-points : :

python
personne = {
"nom": "Alice",
"âge": 30,
"ville": "Paris"
}

 Dictionnaire vide :

python
vide = {}

 Avec la fonction dict() :

python
d = dict(nom="Bob", âge=25)
Accès aux valeurs
 Par la clé entre crochets [] :

python
print(personne["nom"]) # 'Alice'

 Avec la méthode get() (évite une erreur si la clé est absente) :

python
print([Link]("profession", "Inconnu")) # 'Inconnu'

Modification et ajout d’éléments


 Modifier une valeur existante :

python
personne["âge"] = 31

 Ajouter une nouvelle paire clé-valeur :

python
personne["profession"] = "Ingénieur"

Suppression d’éléments
 Avec del :

python
del personne["ville"]

 Avec pop() (retire et retourne la valeur) :

python
age = [Link]("âge")

 Avec clear() pour vider le dictionnaire :

python
[Link]()

Parcourir un dictionnaire
 Parcourir les clés :

python
for cle in personne:
print(cle)

 Parcourir les valeurs :


python
for valeur in [Link]():
print(valeur)

 Parcourir les paires clé-valeur :

python
for cle, valeur in [Link]():
print(f"{cle} : {valeur}")

Méthodes utiles
Méthode Description
keys() Retourne les clés
values() Retourne les valeurs
items() Retourne les paires clé-valeur
update() Met à jour avec un autre dictionnaire ou paires clé-valeur
copy() Crée une copie superficielle

Exemple complet
python
personne = {
"nom": "Alice",
"âge": 30,
"ville": "Paris"
}

# Ajouter une profession


personne["profession"] = "Ingénieur"

# Modifier l’âge
personne["âge"] = 31

# Parcourir
for cle, valeur in [Link]():
print(f"{cle} : {valeur}")

Particularités
 Les clés doivent être uniques dans un dictionnaire.
 Les dictionnaires sont très rapides pour accéder aux données via les clés.
 Depuis Python 3.7, les dictionnaires conservent l’ordre d’insertion des éléments.

Applications courantes
 Stocker des données structurées (ex : informations d’une personne).
 Remplacer les tableaux associatifs (maps) d’autres langages.
 Manipuler des JSON et autres formats de données.

Résumé rapide
Opération Syntaxe Description
Création d = {"clé": valeur} Dictionnaire avec paires clé-
valeur
Accès d["clé"] Accès à la valeur par clé
Ajout/modification d["clé"] = valeur Ajout ou modification
Suppression del d["clé"] ou Supprime une clé et sa valeur
[Link]("clé")
Parcours for k, v in [Link](): Parcours des clés et valeurs

Les dictionnaires sont un outil puissant pour organiser et accéder efficacement aux données en
Python.

Quand utiliser chaque type de collection en Python ?


Python propose plusieurs types de collections avancées, chacune adaptée à des besoins
spécifiques. Voici un aperçu pour choisir la bonne structure selon le contexte.

Type Caractéristiques Quand l’utiliser ?


principales
Liste (list) Ordonnée, mutable, Quand vous avez besoin d’une collection
éléments en double ordonnée, modifiable, avec accès par indice
possibles et possibilité de doublons.
Tuple (tuple) Ordonné, immuable Pour stocker des données constantes, par
exemple des coordonnées, ou comme clés
dans un dictionnaire.
Ensemble Non ordonné, mutable, Pour éliminer les doublons, effectuer des
(set) éléments uniques opérations ensemblistes (union, intersection),
ou tester rapidement l’appartenance.
Dictionnaire Collection clé-valeur, Pour associer des valeurs à des clés uniques,
(dict) mutable, clés uniques idéal pour représenter des objets ou des
données structurées.

Cas d’usage typiques


 Liste : gestion d’une séquence d’éléments modifiables, comme une liste de tâches, une
collection d’objets à parcourir dans un ordre précis.
 Tuple : données fixes qui ne doivent pas changer, par exemple des coordonnées GPS,
ou pour garantir l’intégrité des données.
 Set : quand l’unicité des éléments est importante, par exemple pour supprimer les
doublons d’une liste ou pour manipuler des ensembles mathématiques.
 Dictionnaire : quand vous avez besoin d’associer des informations à des clés, comme
stocker les attributs d’un utilisateur (nom, âge, email).

Résumé rapide
Besoin Type recommandé
Collection ordonnée modifiable Liste (list)
Collection ordonnée immuable Tuple (tuple)
Collection non ordonnée unique Ensemble (set)
Association clé-valeur Dictionnaire (dict)

Conseil pratique
Commencez par définir clairement vos besoins : ordre, mutabilité, unicité, accès par clé ou
par position. Cela vous guidera vers la structure la plus adaptée, optimisant ainsi la lisibilité et
la performance de votre code.

Types de données composés en Python


Qu’est-ce qu’un type de données composé ?
Un type de données composé permet de regrouper plusieurs valeurs sous une seule
variable. Cela facilite la gestion de collections de données comme des listes de noms, des
scores, ou des enregistrements structurés. Contrairement aux types simples (entiers, booléens,
chaînes), les types composés contiennent plusieurs éléments.

Les 4 principaux types composés en Python


Type Description Caractéristiques Exemple
principales
Liste (list) Collection ordonnée et Permet les doublons, [10]
mutable modifiable
Tuple (tuple) Collection ordonnée et Ne peut pas être modifié (1, 2, 3)
immuable après création
Ensemble Collection non Pas d’ordre, pas de {1, 2, 3, 4}
(set) ordonnée d’éléments doublons, mutable
uniques
Dictionnaire Collection non Clés uniques, valeurs {"nom":
ordonnée de paires clé- associées "Alice", "âge":
(dict) 30}
valeur

Points clés
 Listes : idéales pour des séquences d’éléments modifiables, avec accès par position.
 Tuples : utiles pour des données fixes, garantissant l’intégrité des valeurs.
 Sets : parfaits pour gérer des collections d’éléments uniques et effectuer des
opérations ensemblistes.
 Dictionnaires : adaptés pour associer des clés uniques à des valeurs, très utilisés pour
représenter des objets ou des données structurées.

Pourquoi utiliser les types composés ?


 Ils rendent le code plus propre, lisible et efficace.
 Ils permettent de manipuler facilement des groupes de données.
 Ils sont à la base de nombreuses structures de données et algorithmes.
Exemple simple
python
# Liste mutable
scores = [89, 92, 75]

# Tuple immuable
coordonnees = (10.0, 20.0)

# Set unique
lettres = set("abracadabra") # {'a', 'b', 'r', 'c', 'd'}

# Dictionnaire clé-valeur
personne = {"nom": "Alice", "âge": 30}

Ces types composés sont fondamentaux pour programmer efficacement en Python.

Vue d’ensemble du contrôle de flux en Python


Introduction
Le contrôle de flux en Python désigne l’ordre dans lequel les instructions d’un programme
sont exécutées. Par défaut, le code s’exécute séquentiellement, ligne par ligne. Les structures
de contrôle permettent de modifier ce comportement pour :

 Prendre des décisions (exécuter certains blocs selon des conditions),


 Répéter des actions (boucles),
 Gérer les erreurs (gestion d’exceptions),
 Et plus encore.

Maîtriser ces structures est fondamental pour écrire des programmes dynamiques, flexibles et
robustes.

1. Les structures conditionnelles (décisionnelles)


Elles permettent d’exécuter du code uniquement si une condition est vraie.

 if : exécute un bloc si la condition est vraie.


 elif (else if) : teste une autre condition si la précédente est fausse.
 else : exécute un bloc si aucune condition précédente n’est vraie.

Exemple :

python
age = 20
if age < 18:
print("Mineur")
elif age == 18:
print("Juste majeur")
else:
print("Majeur")
2. L’instruction match (pattern matching)
Introduite récemment, elle permet de comparer une expression à plusieurs cas possibles, un
peu comme un switch dans d’autres langages.

Exemple :

python
def check_vowel(letter):
match letter:
case 'a' | 'e' | 'i' | 'o' | 'u':
return "Voyelle"
case _:
return "Consonne"

3. Les boucles (répétition)


Elles permettent de répéter un bloc de code plusieurs fois.

 for : itère sur une séquence (liste, chaîne, range, etc.).

python
for i in range(5):
print(i)

 while : répète tant qu’une condition est vraie.

python
count = 0
while count < 5:
print(count)
count += 1

4. Contrôle des boucles


 break : interrompt la boucle immédiatement.
 continue : saute à l’itération suivante.
 else sur boucle : s’exécute si la boucle se termine sans break.

5. Gestion des exceptions (try-except)


Permet de gérer les erreurs sans interrompre brutalement le programme.

python
try:
x = int(input("Entrez un nombre: "))
except ValueError:
print("Ce n’est pas un nombre valide.")

6. Importance du contrôle de flux


 Permet de rendre les programmes interactifs et adaptatifs.
 Facilite la gestion des cas complexes.
 Améliore la robustesse et la maintenance du code.

Résumé rapide
Structure Usage principal Exemple court
if / elif / else Décision conditionnelle if x > 0:
match Correspondance de motifs (pattern matching) match var:
for Itération sur une séquence for i in range(3):
while Boucle conditionnelle while condition:
break Sortir d’une boucle if x == 5: break
continue Passer à l’itération suivante if x < 0: continue
try / except Gestion d’exceptions try: ... except:

Conclusion
Comprendre et maîtriser les structures de contrôle de flux est indispensable pour tout
développeur Python. Elles permettent de créer des programmes intelligents, capables de
prendre des décisions, de répéter des actions, et de gérer les erreurs efficacement.

Le contrôle de flux en Python correspond à l'ordre dans lequel les instructions de votre
programme sont exécutées 1. Normalement, le code s'exécute de manière séquentielle, de haut
en bas 2. Cependant, les structures de contrôle de flux permettent de modifier cet ordre
d'exécution 1.

Ces structures sont fondamentales car elles permettent à un programme de :

 Prendre des décisions, c'est-à-dire exécuter différentes parties du code en fonction de


certaines conditions 1.
 Répéter des tâches en exécutant un bloc de code plusieurs fois 1.
 Gérer les exceptions pour éviter l'arrêt inattendu du programme en cas d'erreur 1.

Les principaux éléments du contrôle de flux en Python incluent les instructions


conditionnelles comme if, elif et else, les boucles for et while, ainsi que la gestion des
exceptions avec try...except, et le pattern matching avec match...case 1. Maîtriser le
contrôle de flux est une compétence essentielle pour écrire des programmes Python
dynamiques, intelligents et robustes 1.

Instructions conditionnelles de base en Python


1. Introduction aux instructions conditionnelles
Les instructions conditionnelles permettent d’exécuter un bloc de code seulement si une
condition est vraie. Elles sont essentielles pour contrôler le flux d’un programme en fonction
des données ou des événements.
2. L’instruction if
Syntaxe :

python
if condition:
# bloc de code exécuté si la condition est vraie

Exemple :

python
x = 10
if x > 5:
print("x est supérieur à 5")

Ici, le message s’affiche uniquement si x > 5 est vrai.

3. L’instruction if-else
Permet d’exécuter un bloc si la condition est vraie, et un autre bloc sinon.

Syntaxe :

python
if condition:
# bloc si vrai
else:
# bloc si faux

Exemple :

python
age = 16
if age >= 18:
print("Vous êtes majeur")
else:
print("Vous êtes mineur")

4. L’instruction if-elif-else
Permet de tester plusieurs conditions successivement. La première condition vraie déclenche
l’exécution de son bloc, les autres sont ignorées.

Syntaxe :

python
if condition1:
# bloc 1
elif condition2:
# bloc 2
else:
# bloc sinon aucune condition vraie
Exemple :

python
note = 75
if note >= 90:
print("Excellent")
elif note >= 70:
print("Bien")
else:
print("Peut mieux faire")

5. Les instructions if imbriquées (nested if)


Il est possible de placer une instruction if à l’intérieur d’une autre pour tester plusieurs
conditions dépendantes.

Exemple :

python
x=8
y = 12
if x > 5:
if y > 10:
print("x est supérieur à 5 et y est supérieur à 10")

6. Opérateurs logiques dans les conditions


On peut combiner plusieurs conditions avec :

 and : toutes les conditions doivent être vraies.


 or : au moins une condition doit être vraie.
 not : inverse la condition.

Exemples :

python
if x > 5 and y > 10:
print("Les deux conditions sont vraies")

if x > 5 or y > 10:


print("Au moins une condition est vraie")

if not x > 5:
print("x n’est pas supérieur à 5")

7. Expression conditionnelle (opérateur ternaire)


Une forme compacte de if-else en une seule ligne, qui retourne une valeur selon une
condition.

Syntaxe :
python
valeur_si_vrai if condition else valeur_si_faux

Exemple :

python
age = 20
statut = "majeur" if age >= 18 else "mineur"
print(statut) # affiche "majeur"

8. Exemple complet avec saisie utilisateur


python
age = int(input("Entrez votre âge : "))

if age < 0:
print("Âge invalide")
elif age < 18:
print("Vous êtes mineur")
elif age <= 65:
print("Vous êtes adulte")
else:
print("Vous êtes senior")

Conclusion
Les instructions conditionnelles sont la base du contrôle de flux en Python. Elles permettent
de rendre un programme dynamique et adapté aux différentes situations. En combinant if,
elif, else et les opérateurs logiques, vous pouvez gérer des scénarios complexes.

Instructions conditionnelles complexes en Python


1. Introduction aux conditions complexes
Les conditions complexes combinent plusieurs expressions booléennes à l’aide des opérateurs
logiques and, or et not pour tester des situations plus élaborées. Elles permettent d’écrire des
tests précis et adaptés à des cas réels.

2. Opérateurs logiques pour combiner des conditions


 and : toutes les conditions doivent être vraies pour que l’ensemble soit vrai.
 or : au moins une condition doit être vraie pour que l’ensemble soit vrai.
 not : inverse la valeur d’une condition.

Exemple :

python
x = 10
y=5
if x > 0 and y > 0:
print("x et y sont positifs")
if x > 0 or y < 0:
print("Au moins une condition est vraie")
if not x < 0:
print("x n’est pas négatif")

3. Exemple pratique : point sur le bord d’un rectangle


On veut vérifier si un point (x,y)(x, y)(x,y) est sur un des côtés d’un rectangle défini par
(x1,y1)(x_1, y_1)(x1,y1) et (x2,y2)(x_2, y_2)(x2,y2) avec x1<x2x_1 < x_2x1<x2 et
y1<y2y_1 < y_2y1<y2.

Le point est sur un bord si :

 x=x1x = x_1x=x1 ou x=x2x = x_2x=x2, et yyy est entre y1y_1y1 et y2y_2y2,


ou
 y=y1y = y_1y=y1 ou y=y2y = y_2y=y2, et xxx est entre x1x_1x1 et x2x_2x2.

Code simplifié :

python
on_left_or_right = (x == x1 or x == x2) and (y1 <= y <= y2)
on_top_or_bottom = (y == y1 or y == y2) and (x1 <= x <= x2)

if on_left_or_right or on_top_or_bottom:
print("Border")
else:
print("Inside / Outside")

Cet exemple illustre l’importance d’utiliser des variables booléennes intermédiaires pour
améliorer la lisibilité.

4. Imbrication des conditions (nested if)


Il est possible de imbriquer des instructions if pour tester des conditions dépendantes.

Exemple :

python
if x > 0:
if y > 0:
print("x et y sont positifs")
else:
print("x positif, y non positif")
else:
print("x non positif")

5. Expressions conditionnelles (ternaires)


Pour écrire des conditions simples en une ligne, on utilise l’opérateur ternaire :

python
message = "Positif" if x > 0 else "Négatif ou zéro"
print(message)

6. Conseils pratiques
 Lisibilité avant tout : préférez des conditions claires avec des variables intermédiaires
plutôt que des expressions trop condensées.
 Indentation rigoureuse : elle délimite les blocs de code et évite les erreurs.
 Testez chaque condition séparément pour faciliter le débogage.

7. Résumé rapide
Concept Description Exemple court
and Toutes conditions vraies if a > 0 and b > 0:
or Au moins une condition vraie if a > 0 or b > 0:
not Inverse la condition if not a > 0:
Variables Stocker des parties de conditions on_border = ...
booléennes pour lisibilité
Imbrication if Conditions dépendantes if x > 0:\n if y > 0:
Ternaire Condition simple en une ligne msg = "OK" if x > 0 else
"Non OK"

Les conditions complexes sont indispensables pour gérer des scénarios réalistes dans vos
programmes Python. Leur maîtrise vous permettra d’écrire un code clair, efficace et facile à
maintenir.

Les boucles for en Python


1. Introduction
La boucle for en Python permet d’itérer sur une séquence d’éléments (liste, tuple, chaîne de
caractères, dictionnaire, ensemble, ou objet itérable) et d’exécuter un bloc de code pour
chaque élément. C’est un outil fondamental pour automatiser les tâches répétitives.

2. Syntaxe de base
python
for variable in sequence:
# bloc de code à exécuter

 variable prend successivement la valeur de chaque élément de la sequence.


 Le bloc indenté s’exécute une fois par élément.
 La boucle s’arrête lorsque tous les éléments ont été parcourus.

3. Exemples simples
 Itérer sur une liste :

python
fruits = ["pomme", "banane", "cerise"]
for fruit in fruits:
print(fruit)

Sortie :

text
pomme
banane
cerise

 Itérer sur une chaîne de caractères (chaque caractère) :

python
for lettre in "Python":
print(lettre)

4. Utilisation avec range()


La fonction range() génère une séquence d’entiers, souvent utilisée avec for pour répéter un
bloc un nombre précis de fois.

python
for i in range(5):
print(i)

Sortie :

text
0
1
2
3
4

On peut spécifier un début, une fin et un pas :

python
for i in range(1, 10, 2):
print(i)

Sortie :

text
1
3
5
7
9

5. Boucle imbriquée
On peut imbriquer des boucles pour parcourir des listes de listes ou des structures plus
complexes.
python
matrice = [[1, 2], [3, 4], [5, 6]]
for ligne in matrice:
for element in ligne:
print(element)

6. Utilisation avec les tuples et déballage


Pour parcourir une liste de tuples, on peut déballer les éléments directement dans la boucle.

python
etudiants = [("Alice", 90), ("Bob", 85), ("Charlie", 92)]
for nom, note in etudiants:
print(f"{nom} a obtenu {note}")

7. La fonction zip() avec for


zip() permet d’itérer simultanément sur plusieurs séquences.

python
noms = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]

for nom, age in zip(noms, ages):


print(f"{nom} a {age} ans")

8. Contrôle de la boucle : break et continue


 break : interrompt la boucle avant la fin.

python
for i in range(10):
if i == 5:
break
print(i)

 continue : saute l’itération courante et passe à la suivante.

python
for i in range(10):
if i % 2 == 0:
continue
print(i)

9. La clause else avec for


Le bloc else s’exécute si la boucle se termine normalement (sans break).

python
for i in range(3):
print(i)
else:
print("Boucle terminée sans interruption")
10. Résumé rapide
Fonctionnalité Syntaxe / Exemple Description
Boucle simple for x in sequence: Itération sur chaque élément
Itération sur for i in range(5): Itère sur une séquence d’entiers
range
Boucle imbriquée for x in list1:\n for y in Parcours de structures complexes
list2:
Déballage de for a, b in list_of_tuples: Récupération directe des
tuples éléments
zip() for a, b in zip(list1, Itération parallèle sur plusieurs
list2): séquences
break if condition: break Sortie anticipée de la boucle
continue if condition: continue Passe à l’itération suivante
else avec for for ... else: Bloc exécuté si pas d’interruption

Conclusion
La boucle for est un outil puissant et flexible pour parcourir des séquences et automatiser des
tâches répétitives en Python. Sa syntaxe simple et ses fonctionnalités avancées comme le
déballage, l’utilisation de zip(), et les contrôles break/continue en font un élément clé de la
programmation Python.

Voici une présentation complète et détaillée en français sur les boucles while en Python,
adaptée à une vidéo d’environ 11 minutes 38 secondes :

Les boucles while en Python


1. Introduction
La boucle while permet d’exécuter un bloc de code tant qu’une condition est vraie.
Contrairement à la boucle for qui itère sur une séquence, la boucle while est utilisée lorsque
le nombre d’itérations n’est pas connu à l’avance et dépend d’une condition dynamique.

2. Syntaxe de base
python
while condition:
# bloc de code à exécuter tant que la condition est vraie

 La condition est évaluée avant chaque itération.


 Si la condition est vraie, le bloc s’exécute.
 Si la condition est fausse, la boucle s’arrête.

3. Exemple simple
python
compteur = 0
while compteur < 5:
print(compteur)
compteur += 1

Sortie :

text
0
1
2
3
4

4. Importance de modifier la condition


Pour éviter une boucle infinie, il faut s’assurer que la condition finira par devenir fausse,
généralement en modifiant une variable dans le bloc.

5. Utilisation de break et continue


 break : interrompt immédiatement la boucle, même si la condition est toujours vraie.

python
while True:
entree = input("Tapez 'exit' pour quitter : ")
if entree == "exit":
break

 continue : saute le reste du bloc et passe à l’évaluation suivante de la condition.

python
i=0
while i < 10:
i += 1
if i % 2 == 0:
continue
print(i)

Affiche les nombres impairs de 1 à 9.

6. Clause else avec while


Le bloc else s’exécute lorsque la boucle se termine naturellement (condition fausse), mais
pas si elle est interrompue par un break.

python
compteur = 0
while compteur < 3:
print(compteur)
compteur += 1
else:
print("Boucle terminée sans interruption")
7. Boucles infinies
Une boucle while peut être volontairement infinie pour des programmes qui tournent en
continu (serveurs, jeux, etc.). Il faut alors prévoir un mécanisme d’arrêt (comme break).

8. Exemple pratique : deviner un nombre


python
secret = 7
essai = None

while essai != secret:


essai = int(input("Devinez le nombre : "))
if essai < secret:
print("Trop petit")
elif essai > secret:
print("Trop grand")
else:
print("Bravo, vous avez trouvé !")

9. Comparaison avec la boucle for


 for est utilisé quand on connaît le nombre d’itérations ou qu’on itère sur une
séquence.
 while est utilisé quand la condition d’arrêt dépend d’une logique plus complexe ou
dynamique.

10. Résumé rapide


Fonctionnalité Syntaxe / Exemple Description
Boucle de base while condition: Exécute tant que la condition est
vraie
Modification de compteur += 1 Pour éviter boucle infinie
variable
break Interrompt la boucle Sortie anticipée
immédiatement
continue Passe à l’itération suivante Ignore le reste du bloc
else while ... else: S’exécute si pas d’interruption
Boucle infinie while True: Boucle sans fin, nécessite break

Conclusion
La boucle while est un outil puissant pour répéter des actions tant qu’une condition est
remplie. Elle est particulièrement utile lorsque le nombre d’itérations n’est pas déterminé à
l’avance. Bien maîtriser while, break, continue et la clause else vous permettra d’écrire
des boucles efficaces et sûres.

Le contrôle de flux avancé en Python permet de gérer de manière fine et flexible l’ordre
d’exécution des instructions dans un programme. Au-delà des structures de base comme les
instructions conditionnelles (if, elif, else) et les boucles (for, while), Python propose des
outils puissants pour écrire des programmes plus dynamiques et robustes12.

Parmi ces outils avancés, on trouve :

 Le pattern matching avec match…case, qui offre une alternative claire et expressive
aux longues chaînes de conditions, en permettant de comparer une expression à
plusieurs motifs possibles24.
 Les structures imbriquées (nested conditionals et nested loops), qui permettent de
gérer des scénarios complexes en combinant plusieurs conditions ou boucles à
différents niveaux9.
 Les mots-clés de contrôle de boucle comme break (pour sortir prématurément d’une
boucle), continue (pour passer à l’itération suivante sans exécuter le reste du bloc), et
pass (instruction vide utile pour le développement)910.
 La gestion d’exceptions avec try…except qui permet d’intercepter et de traiter les
erreurs sans interrompre brutalement le programme1.

L’utilisation de ces structures avancées améliore la lisibilité, la maintenabilité et la robustesse


des programmes Python, en adaptant précisément le flux d’exécution aux besoins spécifiques.

En résumé, le contrôle de flux avancé en Python vous permet de :

 Prendre des décisions complexes avec des conditions multiples et le pattern


matching.
 Répéter des tâches de manière contrôlée avec des boucles imbriquées et des
instructions de contrôle.
 Gérer les erreurs efficacement pour rendre vos programmes plus sûrs et fiables.

La déclaration break en Python


1. Qu’est-ce que la déclaration break ?
La déclaration break permet de sortir immédiatement de la boucle la plus proche (qu’elle
soit une boucle for ou while), interrompant ainsi l’exécution normale de la boucle avant
qu’elle ne termine toutes ses itérations.

2. Syntaxe
python
break

Elle est généralement placée à l’intérieur d’une condition if pour arrêter la boucle quand une
condition spécifique est remplie.

3. Utilisation dans une boucle for


Exemple simple : arrêter la boucle dès qu’un élément est trouvé.
python
for i in range(10):
if i == 5:
break
print(i)

Sortie :

text
0
1
2
3
4

Ici, la boucle s’arrête dès que i atteint 5, donc les nombres 5 à 9 ne sont pas affichés.

4. Utilisation dans une boucle while


Exemple : boucle infinie interrompue par break quand une condition est vraie.

python
count = 0
while True:
print(count)
count += 1
if count == 5:
break

Sortie :

text
0
1
2
3
4

5. break dans les boucles imbriquées


 Le break interrompt uniquement la boucle la plus interne.
 Pour sortir de plusieurs boucles imbriquées, il faut utiliser des techniques
supplémentaires (par exemple, des drapeaux booléens ou des exceptions).

Exemple :

python
for i in range(3):
for j in range(5):
if j == 2:
break # sort de la boucle sur j seulement
print(i, j)

Sortie :
text
00
01
10
11
20
21

6. Cas d’usage courant


 Trouver un élément dans une liste et arrêter la recherche dès qu’il est trouvé.
 Sortir d’une boucle infinie lorsque la condition d’arrêt est rencontrée.
 Optimiser les performances en évitant des itérations inutiles.

7. Attention aux erreurs courantes


 Ne pas oublier que break ne sort que de la boucle la plus proche.
 S’assurer que la condition déclenchant le break sera atteinte, sinon la boucle peut
devenir infinie.
 Dans une boucle while True, le break est souvent indispensable pour éviter une
boucle infinie.

8. Exemple complet : recherche dans une liste


python
nombres = [1, 3, 5, 7, 9]
valeur = 5

for n in nombres:
if n == valeur:
print(f"{valeur} trouvé !")
break
else:
print(f"{valeur} non trouvé.")

Ici, la boucle s’arrête dès que la valeur est trouvée. Si la boucle se termine sans break, le bloc
else s’exécute.

9. Résumé rapide
Fonctionnalité Description Exemple
break Sortir immédiatement de la boucle la if condition: break
plus proche
Dans boucle for Arrêter la boucle avant la fin des Trouver un élément et
itérations arrêter
Dans boucle Sortir d’une boucle conditionnelle ou Boucle infinie avec
while infinie condition
Boucles Sort uniquement la boucle interne break dans la boucle la plus
imbriquées proche
Éviter boucle S’assurer que la condition break sera Contrôle rigoureux des
infinie atteinte conditions
La déclaration break est un outil essentiel pour contrôler précisément l’exécution des boucles
en Python, permettant d’optimiser les performances et de gérer des cas particuliers
efficacement.

La déclaration continue en Python


1. Qu’est-ce que continue ?
La déclaration continue permet de passer immédiatement à l’itération suivante d’une
boucle, en sautant le reste du code dans le bloc courant. Elle s’utilise dans les boucles for et
while.

2. Syntaxe
python
continue

Elle est généralement placée à l’intérieur d’une condition if pour ignorer certaines itérations
spécifiques.

3. Exemple simple dans une boucle for


Afficher uniquement les nombres impairs entre 0 et 9 :

python
for i in range(10):
if i % 2 == 0:
continue # saute les nombres pairs
print(i)

Sortie :

text
1
3
5
7
9

Ici, dès qu’un nombre pair est rencontré, le reste du bloc est ignoré et la boucle passe à
l’itération suivante.

4. Exemple dans une boucle while


Afficher les nombres de 1 à 10, sauf ceux divisibles par 3 :

python
i=0
while i < 10:
i += 1
if i % 3 == 0:
continue
print(i)

5. Utilité de continue
 Ignorer certaines itérations sans sortir de la boucle.
 Simplifier le code en évitant des blocs if imbriqués.
 Améliorer la lisibilité en traitant rapidement les cas à ignorer.

6. Différence avec break


 break interrompt complètement la boucle.
 continue saute seulement l’itération courante et poursuit la boucle.

7. Résumé rapide
Instruction Fonction Exemple d’usage
continue Passe à l’itération suivante Ignorer les nombres pairs dans une boucle
break Sort de la boucle Arrêter la boucle dès qu’une condition est
immédiatement vraie

Conclusion
La déclaration continue est un outil simple mais puissant pour contrôler finement le
déroulement des boucles en Python. Elle vous permet d’ignorer certaines itérations sans
arrêter la boucle, rendant votre code plus clair et efficace.

La fonction zip() en Python


1. Qu’est-ce que la fonction zip() ?
La fonction zip() est une fonction intégrée de Python qui permet de combiner plusieurs
itérables (listes, tuples, chaînes, dictionnaires, etc.) en un seul itérateur de tuples. Chaque
tuple contient un élément de chaque itérable, pris à la même position.

On peut voir zip() comme une fermeture éclair (zipper) qui assemble des éléments
correspondants de plusieurs séquences.

2. Syntaxe
python
zip(iterable1, iterable2, iterable3, ...)

 Chaque argument est un itérable.


 La fonction retourne un objet zip, un itérateur de tuples.
 La longueur de l’itérateur résultant est égale à la longueur du plus court des itérables
passés.

3. Exemple simple
python
noms = ["Alice", "Bob", "Charlie"]
notes = [85, 90, 78]

zipped = zip(noms, notes)


print(list(zipped))

Sortie :

text
[('Alice', 85), ('Bob', 90), ('Charlie', 78)]

Chaque élément de noms est associé à l’élément correspondant de notes.

4. Cas avec des itérables de longueurs différentes


Si les itérables n’ont pas la même longueur, zip() s’arrête à la fin du plus court.

python
a = ("John", "Charles", "Mike")
b = ("Jenny", "Christy", "Monica", "Vicky")

result = list(zip(a, b))


print(result)

Sortie :

text
[('John', 'Jenny'), ('Charles', 'Christy'), ('Mike', 'Monica')]

L’élément "Vicky" est ignoré car il n’a pas de correspondant dans a.

5. Utilisations courantes
 Itération parallèle sur plusieurs listes :

python
for nom, note in zip(noms, notes):
print(f"{nom} a obtenu {note}")

 Création de dictionnaires à partir de deux listes (clés et valeurs) :

python
cles = ["nom", "âge", "ville"]
valeurs = ["Alice", 30, "Paris"]

d = dict(zip(cles, valeurs))
print(d)
Sortie :

text
{'nom': 'Alice', 'âge': 30, 'ville': 'Paris'}

 Décompression (unzipping) avec l’opérateur * :

python
zipped_data = [('a', 1), ('b', 2), ('c', 3)]
lettres, chiffres = zip(*zipped_data)
print(lettres) # ('a', 'b', 'c')
print(chiffres) # (1, 2, 3)

6. Points importants
 zip() retourne un itérateur, il faut souvent le convertir en liste ou autre pour le
visualiser.
 Si aucun argument n’est passé, zip() retourne un itérateur vide.
 Avec un seul itérable, zip() retourne un itérateur de tuples à un élément.

7. Exemple complet
python
noms = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
villes = ["Paris", "Lyon", "Marseille"]

for nom, age, ville in zip(noms, ages, villes):


print(f"{nom}, {age} ans, habite à {ville}")

Sortie :

text
Alice, 25 ans, habite à Paris
Bob, 30 ans, habite à Lyon
Charlie, 35 ans, habite à Marseille

8. Résumé rapide
Fonctionnalité Description
Combine plusieurs itérables Associe éléments par position dans des tuples
Itérateur Retourne un objet itérateur (lazy evaluation)
Longueur Égale à la plus courte des séquences
Utilisation principale Itération parallèle, création de dictionnaires
Décompression Utilisation de zip(*iterables) pour dézipper

La fonction zip() est un outil puissant pour manipuler plusieurs séquences en parallèle,
simplifiant grandement la gestion de données associées.

La fonction enumerate() en Python


1. Qu’est-ce que la fonction enumerate() ?
La fonction enumerate() permet de parcourir un itérable tout en obtenant à la fois
l’index (la position) et la valeur de chaque élément. C’est très utile lorsque vous avez
besoin du numéro d’élément en plus de sa valeur lors d’une boucle.

2. Syntaxe
python
enumerate(iterable, start=0)

 iterable : la séquence à parcourir (liste, tuple, chaîne, etc.).


 start (optionnel) : l’index de départ (par défaut 0).

3. Exemple simple
python
fruits = ["pomme", "banane", "cerise"]

for index, fruit in enumerate(fruits):


print(index, fruit)

Sortie :

text
0 pomme
1 banane
2 cerise

4. Modifier l’index de départ


Vous pouvez changer l’index de départ avec le paramètre start :

python
for index, fruit in enumerate(fruits, start=1):
print(index, fruit)

Sortie :

text
1 pomme
2 banane
3 cerise

5. Utilisations courantes
 Afficher les éléments avec leur position.
 Remplacer un compteur manuel dans une boucle.
 Traiter des listes où la position est importante.
6. Exemple pratique : recherche avec index
python
noms = ["Alice", "Bob", "Charlie"]
recherche = "Bob"

for i, nom in enumerate(noms):


if nom == recherche:
print(f"{recherche} trouvé à l’indice {i}")
break

7. Résumé rapide
Fonctionnalité Description Exemple
Parcourir avec index Retourne des tuples (index, for i, v in
valeur) enumerate(liste):
Index de départ Définir l’index initial enumerate(liste, start=1)
modifiable
Simplifie les boucles Évite de gérer un compteur
manuel

Conclusion
La fonction enumerate() est un outil simple mais très pratique pour parcourir des séquences
tout en gardant la trace des indices. Elle rend votre code plus lisible et évite les erreurs liées à
la gestion manuelle des compteurs.

Les List Comprehensions en Python


1. Qu’est-ce qu’une list comprehension ?
Une list comprehension est une syntaxe compacte et élégante pour créer des listes à partir
d’autres itérables, en appliquant une expression et éventuellement une condition.

Elle permet d’écrire en une seule ligne ce qui nécessiterait plusieurs lignes avec une boucle
for classique.

2. Syntaxe générale
python
[nouvel_élément for élément in iterable if condition]

 nouvel_élément : expression appliquée à chaque élément.


 élément : variable qui prend chaque valeur de l’itérable.
 iterable : la séquence à parcourir.
 if condition (optionnel) : filtre les éléments selon une condition.

3. Exemple simple
Créer une liste des carrés des nombres de 0 à 4 :

python
carrés = [x**2 for x in range(5)]
print(carrés) # [0, 1, 4, 9, 16]

4. Exemple avec condition


Créer une liste des carrés des nombres pairs seulement :

python
carrés_pairs = [x**2 for x in range(10) if x % 2 == 0]
print(carrés_pairs) # [0, 4, 16, 36, 64]

5. Comparaison avec une boucle classique


Boucle classique équivalente :

python
carrés_pairs = []
for x in range(10):
if x % 2 == 0:
carrés_pairs.append(x**2)

La list comprehension est plus concise et souvent plus lisible.

6. List comprehension avec plusieurs boucles imbriquées


Exemple : créer une liste des paires (x, y) pour x et y dans `` :

python
paires = [(x, y) for x in [1, 2, 3] for y in [1, 2, 3]]
print(paires)

7. Résumé rapide
Élément Description Exemple
Expression Ce qui est ajouté à la liste x**2
Boucle for Parcourt l’itérable for x in range(5)
Condition optionnelle Filtre les éléments if x % 2 == 0

Conclusion
Les list comprehensions sont un outil puissant pour créer et transformer rapidement des listes
en Python. Elles rendent le code plus compact, souvent plus lisible et performant.

Résumé de la leçon
Dans ce module, vous avez appris plusieurs concepts clés liés aux structures de données et au
contrôle de flux en Python :

Listes
 Une liste est une collection ordonnée d’éléments pouvant être de types différents.
 Un objet liste contient un ou plusieurs éléments, séparés par des virgules et encadrés
par des crochets [].
 Les listes permettent des opérations d’indexation et de slicing (découpage),
contrairement aux ensembles (set) qui ne supportent pas ces opérations.

Sets
 Les ensembles (set) ne permettent pas l’indexation ni le slicing car ils sont non
ordonnés.

List Comprehension
 La list comprehension est une technique puissante pour créer des listes rapidement et
de manière concise.

Opérateurs de comparaison et logiques


 Les opérateurs de comparaison (==, !=, <, >, etc.) et logiques (and, or, not) sont
essentiels pour contrôler le flux d’exécution dans un programme.

Contrôle de flux
 Itération indéfinie : avec la boucle while, un bloc de code est exécuté
répétitivement tant qu’une condition est vraie.
 Itération définie : avec la boucle for, le nombre d’itérations est déterminé
explicitement au départ.
 Exécution conditionnelle : un bloc de code est exécuté uniquement si une condition
spécifiée est vraie.
 Exécution répétitive : un bloc de code est exécuté plusieurs fois tant qu’une
condition est vraie.

Instructions de contrôle de boucle


 L’instruction break peut être utilisée dans les boucles while et for pour interrompre
prématurément la boucle.

Ces notions sont fondamentales pour écrire des programmes Python efficaces, clairs et
adaptés à des situations variées. Si vous souhaitez approfondir certains points ou pratiquer
avec des exercices, n’hésitez pas à me le demander !
Objectifs d’apprentissage
À l’issue de ce module, vous serez capable de :

1. Identifier les deux types de variables en Python


Comprendre la différence entre les variables mutables et immuables, et savoir
comment les utiliser.
2. Expliquer les différentes fonctions en Python
Connaître les fonctions intégrées, les fonctions définies par l’utilisateur, ainsi que leur
syntaxe et leur utilité.
3. Indiquer les composants d’une erreur de syntaxe
Reconnaître les erreurs de syntaxe courantes, comprendre leur origine et savoir
comment les corriger.
4. Définir les fonctions anonymes en Python
Comprendre ce qu’est une fonction lambda, sa syntaxe et ses cas d’utilisation.
5. Évaluer des exemples de fonctions d’ordre supérieur en Python
Savoir ce qu’est une fonction d’ordre supérieur, et analyser des exemples concrets
comme map(), filter(), et reduce().

Ces compétences vous permettront de mieux maîtriser la programmation fonctionnelle en


Python et d’écrire un code plus efficace et modulaire.

Vue d’ensemble des fonctions en Python


1. Qu’est-ce qu’une fonction ?
Une fonction est un bloc de code réutilisable qui effectue une tâche spécifique. Elle ne
s’exécute que lorsqu’elle est appelée. Les fonctions permettent d’organiser le code, de le
rendre plus lisible et d’éviter les répétitions.

2. Définition et appel d’une fonction


 On définit une fonction avec le mot-clé def, suivi du nom de la fonction et de
parenthèses (avec éventuellement des paramètres), puis un deux-points.
 Le corps de la fonction est indenté.
 On appelle la fonction par son nom suivi de parenthèses.

Exemple :

python
def saluer():
print("Bonjour !")

saluer() # Appel de la fonction

3. Paramètres et arguments
 Les fonctions peuvent prendre des paramètres (variables d’entrée).
 Lors de l’appel, on fournit des arguments correspondants.
 Il existe plusieurs types d’arguments :
o Positionnels : passés dans l’ordre.
o Només (keyword arguments) : passés avec le nom du paramètre, dans
n’importe quel ordre.
o Arguments par défaut : paramètres qui ont une valeur par défaut si aucun
argument n’est fourni.
o Arguments arbitraires : permettent de passer un nombre variable
d’arguments (*args pour positionnels, **kwargs pour nommés).

Exemple avec paramètres et arguments par défaut :

python
def saluer(nom="Invité"):
print(f"Bonjour, {nom} !")

saluer() # Bonjour, Invité !


saluer("Alice") # Bonjour, Alice !

4. Valeur de retour
 Une fonction peut retourner une valeur avec l’instruction return.
 Cela permet d’utiliser le résultat dans d’autres parties du programme.

Exemple :

python
def addition(a, b):
return a + b

resultat = addition(3, 5)
print(resultat) # 8

5. Types de fonctions
 Fonctions intégrées : fournies par Python (ex. print(), len(), sum()).
 Fonctions définies par l’utilisateur : créées pour des besoins spécifiques.
 Fonctions anonymes (lambda) : petites fonctions sans nom, souvent utilisées pour
des opérations simples.
 Fonctions récursives : qui s’appellent elles-mêmes.
 Fonctions d’ordre supérieur : qui prennent d’autres fonctions en argument ou
retournent des fonctions.

Conclusion
Les fonctions sont au cœur de la programmation Python. Elles permettent de structurer le
code, de le rendre modulaire, réutilisable et plus facile à maintenir. Comprendre les différents
types d’arguments et la gestion des retours est essentiel pour écrire des fonctions efficaces.

Introduction aux fonctions en Python


Qu’est-ce qu’une fonction ?
Une fonction est un bloc de code réutilisable qui ne s’exécute que lorsqu’on l’appelle. Elle
permet de regrouper des instructions pour accomplir une tâche spécifique, ce qui rend le code
plus organisé, lisible et facile à maintenir.

Comment définir une fonction ?


En Python, on définit une fonction avec le mot-clé def, suivi du nom de la fonction, de
parenthèses (qui peuvent contenir des paramètres) et d’un deux-points. Le corps de la fonction
est indenté.

Exemple :

python
def saluer():
print("Bonjour depuis une fonction")

Comment appeler une fonction ?


Pour exécuter le code dans la fonction, on l’appelle simplement par son nom suivi de
parenthèses :

python
saluer()

Cela affichera :

text
Bonjour depuis une fonction

Les paramètres et arguments


Les fonctions peuvent prendre des paramètres, c’est-à-dire des variables en entrée, pour
personnaliser leur comportement.

Exemple avec un paramètre :

python
def saluer(nom):
print(f"Bonjour, {nom} !")

saluer("Emil") # Bonjour, Emil !


saluer("Tobias") # Bonjour, Tobias !

Ici, nom est un paramètre, et "Emil" ou "Tobias" sont des arguments passés à la fonction lors
de l’appel.

Résumé
 Une fonction est un bloc de code qui s’exécute lorsqu’elle est appelée.
 Elle peut prendre des paramètres pour recevoir des données.
 Elle améliore la modularité et la réutilisabilité du code.

Les fonctions d’aide en Python


1. Introduction aux fonctions d’aide
Python propose plusieurs outils intégrés pour obtenir des informations sur les objets,
fonctions, modules, classes, etc. Ces fonctions sont très utiles pour comprendre comment
utiliser une fonction ou un module, surtout lors de l’apprentissage ou du débogage.

2. La fonction help()
 La fonction help() affiche la documentation d’un objet Python (fonction, classe,
module, etc.).
 Elle affiche la docstring (chaîne de documentation) associée, qui décrit l’utilisation,
les paramètres, et parfois des exemples.

Exemple :

python
help(print)

Cela affiche la documentation de la fonction print.

Vous pouvez aussi utiliser help() sur vos propres fonctions ou sur des modules importés.

3. La fonction dir()
 La fonction dir() liste les attributs et méthodes disponibles pour un objet donné.
 Utile pour explorer un module ou un objet et découvrir ses fonctionnalités.

Exemple :

python
dir(str)

Affiche toutes les méthodes disponibles pour les chaînes de caractères.

4. La fonction type()
 Permet de connaître le type d’un objet.

Exemple :

python
type(123) # <class 'int'>
type("hello") # <class 'str'>
5. La fonction id()
 Retourne l’identifiant unique d’un objet en mémoire (utile pour comprendre le
comportement des variables).

Exemple :

python
a=5
print(id(a))

6. Utiliser la documentation interactive dans les IDE


 Dans certains environnements (comme Jupyter Notebook ou certains IDE), taper le
nom d’une fonction suivi de ? affiche sa documentation.
 Exemple : print?

7. Résumé rapide
Fonction Usage Exemple
help() Affiche la documentation d’un objet help(len)
dir() Liste les attributs et méthodes d’un objet dir(list)
type() Donne le type d’un objet type(3.14)
id() Retourne l’identifiant unique d’un objet id(obj)

Conclusion
Les fonctions d’aide intégrées sont indispensables pour apprendre, explorer et déboguer
efficacement en Python. Elles vous permettent d’accéder rapidement à la documentation et
aux informations sur les objets, rendant votre travail plus fluide et autonome.

Définir des fonctions en Python


1. Introduction aux fonctions
Une fonction est un bloc de code réutilisable qui effectue une tâche spécifique. Elle permet
d’organiser le code, d’éviter les répétitions et de rendre les programmes plus modulaires et
lisibles.

2. Syntaxe de base
Pour définir une fonction, on utilise le mot-clé def suivi du nom de la fonction, de
parenthèses (avec éventuellement des paramètres), puis d’un deux-points. Le corps de la
fonction est indenté.

python
def nom_de_fonction(param1, param2):
# bloc de code
pass

3. Exemple simple
python
def saluer():
print("Bonjour !")

saluer() # Appel de la fonction

4. Paramètres et arguments
 Paramètres : variables listées dans la définition de la fonction.
 Arguments : valeurs passées aux paramètres lors de l’appel.

python
def saluer(nom):
print(f"Bonjour, {nom} !")

saluer("Alice")

5. Paramètres par défaut


On peut définir des valeurs par défaut pour les paramètres, ce qui rend ces arguments
optionnels.

python
def saluer(nom="Invité"):
print(f"Bonjour, {nom} !")

saluer() # Bonjour, Invité !


saluer("Bob") # Bonjour, Bob !

6. Arguments nommés (keyword arguments)


Lors de l’appel, on peut spécifier les arguments par leur nom, dans n’importe quel ordre.

python
def afficher_info(nom, age):
print(f"{nom} a {age} ans.")

afficher_info(age=30, nom="Claire")

7. Arguments variables
 *args : pour passer un nombre variable d’arguments positionnels.
 **kwargs : pour passer un nombre variable d’arguments nommés.

python
def afficher_tout(*args, **kwargs):
print("Arguments positionnels :", args)
print("Arguments nommés :", kwargs)

afficher_tout(1, 2, 3, nom="Alice", age=25)

8. Valeur de retour avec return


Une fonction peut retourner une valeur avec return. Sans return, la fonction retourne None
par défaut.

python
def addition(a, b):
return a + b

resultat = addition(5, 7)
print(resultat) # 12

9. Portée des variables (scope)


 Les variables définies dans une fonction sont locales à cette fonction.
 Les variables définies en dehors sont globales.
 Pour modifier une variable globale dans une fonction, on utilise le mot-clé global.

python
x = 10

def modifier():
global x
x=5

modifier()
print(x) # 5

10. Docstrings : documenter une fonction


On peut ajouter une chaîne de documentation (docstring) juste après la définition pour
expliquer la fonction.

python
def saluer(nom):
"""Affiche un message de salutation personnalisé."""
print(f"Bonjour, {nom} !")

Cette docstring est accessible via help(saluer).

11. Fonctions récursives (optionnel)


Une fonction peut s’appeler elle-même pour résoudre des problèmes récursifs.

python
def factorielle(n):
if n == 0:
return 1
else:
return n * factorielle(n - 1)

print(factorielle(5)) # 120

12. Bonnes pratiques


 Choisir des noms de fonctions explicites.
 Utiliser des commentaires et docstrings.
 Garder les fonctions courtes et ciblées.
 Gérer les erreurs et les cas particuliers.

Conclusion
Définir des fonctions en Python est une compétence fondamentale qui permet de structurer le
code, de le rendre réutilisable et plus facile à maintenir. La maîtrise des paramètres, des
arguments, des valeurs de retour et de la portée des variables est essentielle pour écrire des
fonctions efficaces et robustes.

La portée des variables en Python


1. Introduction à la portée des variables
La portée (ou scope) d’une variable désigne la zone du programme où cette variable est
accessible. Comprendre la portée est essentiel pour éviter des erreurs et écrire un code clair et
prévisible.

2. Les principaux types de portée en Python


Python utilise le modèle LEGB pour rechercher les variables, qui signifie :

 Local : variables définies dans la fonction courante.


 Enclosing (environnement englobant) : variables dans les fonctions englobantes (en
cas de fonctions imbriquées).
 Global : variables définies au niveau du module (hors de toute fonction).
 Built-in : noms prédéfinis par Python (ex. print, len).

3. Variables locales
 Une variable définie à l’intérieur d’une fonction est locale à cette fonction.
 Elle n’est pas accessible en dehors de la fonction.

python
def ma_fonction():
x = 10 # variable locale
print(x)

ma_fonction() # affiche 10
print(x) # erreur : x n'est pas défini ici
4. Variables globales
 Une variable définie en dehors de toute fonction est globale.
 Elle est accessible dans tout le module, y compris à l’intérieur des fonctions, sauf si
une variable locale du même nom existe.

python
x = 5 # variable globale

def afficher():
print(x) # accède à la variable globale

afficher() # affiche 5

5. Modifier une variable globale dans une fonction


 Par défaut, assigner une valeur à une variable dans une fonction crée une variable
locale.
 Pour modifier une variable globale, il faut utiliser le mot-clé global.

python
x=5

def modifier():
global x
x = 10

modifier()
print(x) # affiche 10

6. Variables dans des fonctions imbriquées (portée


d’enclosing)
 En Python, on peut définir des fonctions à l’intérieur d’autres fonctions.
 Les variables dans la fonction englobante sont accessibles dans la fonction imbriquée.
 Pour modifier ces variables, on utilise le mot-clé nonlocal.

python
def externe():
x=5
def interne():
nonlocal x
x = 10
interne()
print(x)

externe() # affiche 10

7. Portée des variables dans les boucles et conditions


 Les variables définies dans des boucles ou blocs conditionnels sont accessibles dans
la fonction ou le module, car Python ne crée pas de nouveau scope pour ces blocs.
python
for i in range(3):
pass
print(i) # affiche 2, i est accessible ici

8. Variables built-in
 Python réserve certains noms pour ses fonctions et constantes intégrées.
 Il est déconseillé de redéfinir ces noms pour éviter des conflits.

python
print = 5 # déconseillé, masque la fonction print
print("Hello") # erreur

9. Résumé rapide
Type de portée Description Exemple
Locale Variable définie dans une fonction x = 10 dans une fonction
Enclosing Variable dans une fonction englobante Fonctions imbriquées
Globale Variable définie au niveau du module x = 5 en dehors des fonctions
Built-in Noms prédéfinis par Python print, len, etc.

10. Bonnes pratiques


 Évitez de modifier les variables globales à l’intérieur des fonctions.
 Préférez passer des paramètres et retourner des valeurs.
 Utilisez global et nonlocal avec précaution.
 Choisissez des noms de variables clairs et évitez les conflits avec les noms built-in.

Conclusion
La compréhension de la portée des variables est cruciale pour écrire un code Python fiable et
sans erreurs. Le modèle LEGB vous guide dans la recherche des variables et vous aide à
anticiper leur comportement dans différents contextes.

Les Docstrings en Python


1. Qu’est-ce qu’une docstring ?
Une docstring (documentation string) est une chaîne de caractères placée juste après la
définition d’une fonction, d’une classe ou d’un module. Elle sert à documenter ce que fait cet
élément, ses paramètres, sa valeur de retour, etc.

Elle aide les développeurs à comprendre rapidement l’usage d’une fonction ou d’une classe,
et peut être consultée via la fonction intégrée help().

2. Syntaxe d’une docstring


La docstring est écrite entre triples guillemets ( """ ... """) ou triples apostrophes (''' ...
'''), juste après la ligne de définition.

python
def saluer(nom):
"""Affiche un message de salutation personnalisé.

Args:
nom (str): Le nom de la personne à saluer.

Returns:
None
"""
print(f"Bonjour, {nom} !")

3. Pourquoi utiliser les docstrings ?


 Documentation intégrée : facilite la maintenance et la compréhension du code.
 Accessibilité : consultable avec help() ou dans certains IDE.
 Bonnes pratiques : recommandées dans la plupart des guides de style Python (PEP
257).

4. Accéder à la docstring
Vous pouvez afficher la docstring d’une fonction avec :

python
print(saluer.__doc__)

Ou via la fonction d’aide interactive :

python
help(saluer)

5. Docstrings pour les classes et modules


Les classes et modules peuvent aussi contenir des docstrings pour expliquer leur rôle et leur
utilisation.

python
class Personne:
"""Représente une personne avec un nom et un âge."""
pass

6. Format recommandé
 Commencez par une phrase courte décrivant la fonction.
 Détaillez les paramètres (Args:), la valeur de retour (Returns:), et les exceptions
éventuelles (Raises:).
 Utilisez un style cohérent (Google, NumPy, reStructuredText).
7. Exemple complet
python
def addition(a, b):
"""Calcule la somme de deux nombres.

Args:
a (int or float): Le premier nombre.
b (int or float): Le second nombre.

Returns:
int or float: La somme de a et b.
"""
return a + b

Conclusion
Les docstrings sont un élément clé pour écrire un code Python clair, maintenable et
professionnel. Elles facilitent la collaboration et l’utilisation des fonctions et classes, tout en
étant accessibles directement dans l’environnement de développement.

Introduction à la saisie utilisateur et gestion des erreurs en


Python
1. Saisie utilisateur avec input()
 La fonction intégrée input() permet de demander une saisie à l’utilisateur via la
console.
 Elle affiche un message d’invite (prompt) facultatif et attend que l’utilisateur saisisse
une valeur, puis appuie sur Entrée.
 La valeur retournée par input() est toujours une chaîne de caractères (str), même
si l’utilisateur tape un nombre.

Exemple :

python
nom = input("Entrez votre nom : ")
print(f"Bonjour, {nom} !")

2. Conversion des types


 Pour utiliser la saisie comme un nombre, il faut convertir explicitement la chaîne en
entier (int()) ou en nombre à virgule flottante (float()).

python
age = int(input("Entrez votre âge : "))
prix = float(input("Entrez le prix : "))

3. Gestion des erreurs (validation)


 La conversion peut échouer si l’utilisateur entre une valeur non valide (ex. lettres au
lieu de chiffres).
 Pour éviter que le programme plante, on utilise un bloc try...except pour gérer les
erreurs et demander une nouvelle saisie ou afficher un message d’erreur.

Exemple simple :

python
try:
age = int(input("Entrez votre âge : "))
except ValueError:
print("Erreur : veuillez entrer un nombre valide.")

4. Bonnes pratiques
 Toujours fournir un message clair dans le prompt.
 Valider et gérer les erreurs pour rendre le programme robuste.
 Répéter la demande d’entrée jusqu’à obtenir une donnée correcte (boucle avec gestion
d’exception).

Cette approche permet de créer des programmes interactifs, conviviaux et résistants aux
erreurs de saisie utilisateur.

Introduction à la gestion des erreurs en Python


1. Qu’est-ce qu’une erreur (exception) ?
Une erreur ou exception est un problème qui survient lors de l’exécution d’un programme,
empêchant son bon déroulement. Par exemple, diviser par zéro, accéder à une variable non
définie, ou ouvrir un fichier inexistant.

Sans gestion, une exception provoque l’arrêt immédiat du programme.

2. Le bloc try / except


La façon principale de gérer les erreurs en Python est d’utiliser les blocs try et except :

 Le code susceptible de générer une erreur est placé dans le bloc try.
 Si une exception survient, le programme saute au bloc except où on peut gérer cette
erreur sans interrompre le programme.

Exemple simple :

python
try:
print(x) # x n'est pas défini
except:
print("Une exception est survenue !")

Ici, au lieu d’arrêter le programme, on affiche un message d’erreur.


3. Gérer plusieurs types d’exceptions
On peut prévoir plusieurs blocs except pour traiter différemment plusieurs erreurs
spécifiques :

python
try:
result = 10 / 0
except ZeroDivisionError:
print("Impossible de diviser par zéro !")
except Exception:
print("Une autre erreur est survenue.")

4. Le bloc finally
Le bloc finally s’exécute toujours, que l’erreur survienne ou non. Il est utile pour libérer
des ressources (fermer un fichier, une connexion, etc.).

python
try:
f = open("[Link]")
contenu = [Link]()
except FileNotFoundError:
print("Fichier non trouvé.")
finally:
[Link]()
print("Fichier fermé.")

5. Bonnes pratiques
 Utiliser des exceptions spécifiques pour mieux cibler les erreurs.
 Éviter de capturer toutes les exceptions de façon générique.
 Toujours nettoyer les ressources dans finally.
 Utiliser la gestion d’erreurs pour rendre le programme robuste et convivial.

Conclusion
La gestion des erreurs avec try, except et finally permet d’écrire des programmes Python
capables de faire face aux imprévus sans planter brutalement. C’est une compétence
essentielle pour développer des applications fiables et professionnelles.

Introduction à la saisie utilisateur avec input() en Python


1. Qu’est-ce que la fonction input() ?
La fonction intégrée input() permet de demander une saisie à l’utilisateur pendant
l’exécution d’un programme Python. Elle affiche un message (optionnel) et attend que
l’utilisateur tape une réponse, puis appuie sur Entrée.
Important : la valeur retournée par input() est toujours une chaîne de caractères (str),
quel que soit le type de donnée saisie.

2. Syntaxe de base
python
variable = input(prompt)

 prompt (optionnel) : une chaîne affichée à l’utilisateur avant la saisie, pour l’informer
de ce qu’il doit entrer.
 La fonction retourne la saisie sous forme de chaîne.

Exemple simple :

python
nom = input("Entrez votre nom : ")
print("Bonjour, " + nom + " !")

3. Conversion des types


Puisque input() retourne une chaîne, il est souvent nécessaire de convertir cette valeur en un
autre type, comme un entier (int) ou un nombre à virgule flottante (float), pour effectuer
des calculs.

Exemple avec conversion en entier :

python
age = int(input("Entrez votre âge : "))
print(f"Vous avez {age} ans.")

Exemple avec conversion en float :

python
prix = float(input("Entrez le prix : "))
print(f"Le prix est {prix} euros.")

4. Saisie de plusieurs valeurs


Pour saisir plusieurs valeurs sur une même ligne, on peut utiliser la méthode split() pour
découper la chaîne, puis convertir chaque élément.

Exemple :

python
a, b = input("Entrez deux nombres séparés par un espace : ").split()
a = int(a)
b = int(b)
print(f"Somme : {a + b}")

5. Saisie de listes, tuples, dictionnaires


 On peut convertir la chaîne saisie en liste ou tuple en utilisant list() ou tuple().

python
liste = list(input("Entrez des caractères : "))
print(liste)

 Pour un dictionnaire, il faut un traitement plus spécifique, par exemple en séparant des
paires clé-valeur.

6. Bonnes pratiques
 Toujours fournir un message clair dans le prompt pour guider l’utilisateur.
 Valider la saisie et gérer les erreurs (exemple : conversion en int échouée).
 Utiliser des boucles pour redemander la saisie en cas d’erreur.

7. Exemple complet avec validation simple


python
while True:
try:
age = int(input("Entrez votre âge : "))
break
except ValueError:
print("Erreur : veuillez entrer un nombre valide.")
print(f"Votre âge est {age}.")

Conclusion
La fonction input() est essentielle pour rendre vos programmes interactifs en Python. Elle
permet de récupérer des données utilisateur, mais nécessite souvent une conversion et une
validation pour être utilisée efficacement.

Les erreurs de syntaxe en Python


1. Qu’est-ce qu’une erreur de syntaxe ?
Une erreur de syntaxe (SyntaxError) survient lorsque Python rencontre un code qui ne
respecte pas les règles de la langue. C’est une erreur détectée avant l’exécution du
programme, lors de la phase d’analyse.

Elle empêche le programme de démarrer ou de continuer.

2. Causes courantes d’erreurs de syntaxe


 Parenthèses, crochets ou accolades non fermés
Exemple :

python
print("Bonjour"
 Mauvaise indentation
Python utilise l’indentation pour délimiter les blocs de code. Une erreur d’alignement
provoque une erreur.
Exemple :

python
def f():
print("Hello") # Indentation manquante

 Mots-clés mal utilisés ou mal orthographiés


Exemple :

python
whle True: # faute de frappe sur while
pass

 Omissions de deux-points : après les structures de contrôle


Exemple :

python
if x > 0 # deux-points manquants
print(x)

 Chaînes de caractères non terminées


Exemple :

python
texte = "Bonjour

3. Comment identifier une erreur de syntaxe ?


 Python affiche un message d’erreur indiquant la ligne et la nature de l’erreur.
 Le message peut aussi indiquer une flèche pointant approximativement l’endroit du
problème.
 Lire attentivement le message permet souvent de comprendre la cause.

4. Exemples d’erreurs et messages


python
File "[Link]", line 2
print("Hello"
^
SyntaxError: unexpected EOF while parsing

Ce message indique que la parenthèse fermante est manquante.

5. Comment éviter les erreurs de syntaxe ?


 Utiliser un éditeur de code ou un IDE avec coloration syntaxique et vérification en
temps réel.
 Respecter l’indentation (4 espaces par niveau recommandé).
 Relire attentivement le code, surtout après des modifications.
 Tester régulièrement le code par petites étapes.

6. Résumé rapide
Cause fréquente Exemple incorrect Correction
Parenthèse non fermée print("Hello" print("Hello")
Indentation incorrecte def f():\nprint("Hi") def f():\n print("Hi")
Mot-clé mal orthographié whle True: while True:
Deux-points manquants if x > 0 if x > 0:
Chaîne non terminée texte = "Bonjour texte = "Bonjour"

Conclusion
Les erreurs de syntaxe sont les erreurs les plus courantes pour les débutants en Python. Elles
empêchent le programme de s’exécuter, mais sont faciles à corriger en lisant attentivement les
messages d’erreur et en respectant la syntaxe du langage.

Les Exceptions en Python


1. Introduction aux exceptions
Une exception est un événement qui survient lors de l’exécution d’un programme et qui
interrompt son déroulement normal. Elle signale une erreur ou une situation exceptionnelle
(ex. division par zéro, fichier non trouvé, etc.).

Sans gestion, une exception provoque l’arrêt brutal du programme.

2. Différence entre erreurs et exceptions


 Erreurs de syntaxe : détectées avant l’exécution, empêchent le programme de
démarrer.
 Exceptions : erreurs détectées lors de l’exécution, pouvant être gérées pour éviter
l’arrêt.

3. Gestion des exceptions avec try / except


Le mécanisme principal pour gérer les exceptions en Python est le bloc try...except :

python
try:
# code susceptible de générer une exception
except ExceptionType:
# code exécuté si l’exception est levée

Exemple :

python
try:
x = 10 / 0
except ZeroDivisionError:
print("Erreur : division par zéro impossible.")

4. Capturer plusieurs exceptions


On peut gérer plusieurs types d’exceptions avec plusieurs blocs except :

python
try:
valeur = int(input("Entrez un nombre : "))
resultat = 10 / valeur
except ValueError:
print("Erreur : saisie non valide.")
except ZeroDivisionError:
print("Erreur : division par zéro.")

5. Capturer toutes les exceptions


Pour attraper toutes les exceptions (pas recommandé sauf cas spécifiques) :

python
try:
# code
except Exception as e:
print(f"Une erreur est survenue : {e}")

6. Le bloc else
Le bloc else s’exécute si aucune exception n’a été levée dans le bloc try.

python
try:
x = int(input("Entrez un nombre : "))
except ValueError:
print("Erreur de saisie.")
else:
print(f"Vous avez entré {x}.")

7. Le bloc finally
Le bloc finally s’exécute toujours, que l’exception soit levée ou non. Il est utile pour
libérer des ressources (fermer un fichier, une connexion, etc.).

python
try:
f = open("[Link]")
contenu = [Link]()
except FileNotFoundError:
print("Fichier introuvable.")
finally:
[Link]()
print("Fichier fermé.")
8. Lever des exceptions avec raise
On peut provoquer volontairement une exception avec raise pour signaler une erreur
personnalisée.

python
def verifier_age(age):
if age < 0:
raise ValueError("L’âge ne peut pas être négatif.")
print(f"Âge valide : {age}")

try:
verifier_age(-5)
except ValueError as e:
print(e)

9. Créer ses propres classes d’exceptions


On peut définir des exceptions personnalisées en héritant de la classe Exception.

python
class MonErreur(Exception):
pass

try:
raise MonErreur("Erreur personnalisée.")
except MonErreur as e:
print(e)

10. Bonnes pratiques


 Gérer uniquement les exceptions que vous pouvez traiter.
 Ne pas utiliser un bloc except générique sans raison.
 Utiliser finally pour nettoyer les ressources.
 Documenter les exceptions levées par vos fonctions.

11. Résumé rapide


Mot-clé Fonction
try Bloc de code surveillé
except Bloc exécuté en cas d’exception
else Bloc exécuté si pas d’exception
finally Bloc toujours exécuté
raise Lancer une exception volontaire

Conclusion
La gestion des exceptions est essentielle pour écrire des programmes robustes et fiables. Elle
permet de traiter proprement les erreurs, d’éviter les plantages et d’améliorer l’expérience
utilisateur.
Gestion des exceptions en Python
1. Introduction à la gestion des exceptions
Les exceptions sont des erreurs qui surviennent lors de l’exécution d’un programme. Pour
éviter que le programme ne plante brutalement, Python propose un mécanisme de gestion des
exceptions qui permet d’intercepter et de traiter ces erreurs.

2. Le bloc try / except


Le bloc try contient le code susceptible de générer une exception. Le bloc except permet de
gérer l’exception lorsqu’elle survient.

python
try:
x = int(input("Entrez un nombre : "))
resultat = 10 / x
except ZeroDivisionError:
print("Erreur : division par zéro impossible.")
except ValueError:
print("Erreur : saisie non valide.")

3. Capturer plusieurs exceptions


On peut gérer plusieurs types d’exceptions en enchaînant plusieurs blocs except. Cela permet
de traiter spécifiquement chaque type d’erreur.

4. Capturer toutes les exceptions


Pour attraper toutes les exceptions sans distinction, on peut utiliser :

python
except Exception as e:
print(f"Une erreur est survenue : {e}")

Cependant, cette pratique doit être utilisée avec précaution pour ne pas masquer des erreurs
inattendues.

5. Le bloc else
Le bloc else s’exécute uniquement si aucune exception n’a été levée dans le bloc try.

python
try:
x = int(input("Entrez un nombre : "))
except ValueError:
print("Erreur de saisie.")
else:
print(f"Vous avez entré {x}.")
6. Le bloc finally
Le bloc finally s’exécute toujours, que l’exception ait été levée ou non. Il est idéal pour
effectuer des opérations de nettoyage, comme fermer un fichier ou une connexion.

python
try:
f = open("[Link]")
contenu = [Link]()
except FileNotFoundError:
print("Fichier introuvable.")
finally:
[Link]()
print("Fichier fermé.")

7. Lever une exception avec raise


On peut déclencher une exception volontairement pour signaler une erreur spécifique.

python
def verifier_age(age):
if age < 0:
raise ValueError("L’âge ne peut pas être négatif.")
print(f"Âge valide : {age}")

try:
verifier_age(-1)
except ValueError as e:
print(e)

8. Bonnes pratiques
 Utiliser des exceptions spécifiques pour un traitement précis.
 Ne pas capturer toutes les exceptions sans raison.
 Toujours nettoyer les ressources dans finally.
 Documenter les exceptions que vos fonctions peuvent lever.
 Utiliser raise pour signaler des erreurs personnalisées.

9. Résumé rapide
Mot-clé Description
try Code à surveiller pour les exceptions
except Bloc pour gérer les exceptions
else Code exécuté si aucune exception
finally Code exécuté toujours, nettoyage
raise Lancer une exception volontaire

Conclusion
La gestion des exceptions est essentielle pour écrire des programmes robustes et fiables. Elle
permet d’anticiper les erreurs, de les traiter proprement et d’assurer la continuité du
programme.

Gestion de plusieurs exceptions en Python


1. Introduction
En Python, un programme peut rencontrer différents types d’erreurs (exceptions) lors de son
exécution. Pour écrire un code robuste, il est important de gérer ces exceptions de manière
appropriée.

La gestion de plusieurs exceptions permet de traiter différemment chaque type d’erreur, ou de


regrouper plusieurs exceptions similaires.

2. Syntaxe de base pour gérer plusieurs exceptions


On peut écrire plusieurs blocs except pour capturer des exceptions spécifiques :

python
try:
# Code pouvant générer plusieurs types d'exceptions
except ValueError:
print("Erreur : valeur invalide.")
except ZeroDivisionError:
print("Erreur : division par zéro.")
except FileNotFoundError:
print("Erreur : fichier introuvable.")

Chaque bloc except ne sera exécuté que si l’exception correspondante est levée.

3. Gérer plusieurs exceptions dans un seul bloc except


On peut regrouper plusieurs exceptions dans un tuple pour les traiter de la même manière :

python
try:
x = int(input("Entrez un nombre : "))
resultat = 10 / x
except (ValueError, ZeroDivisionError) as e:
print(f"Erreur détectée : {e}")

Cela simplifie le code lorsque plusieurs exceptions nécessitent le même traitement.

4. Exemple complet avec plusieurs exceptions


python
try:
fichier = input("Entrez le nom du fichier : ")
with open(fichier, 'r') as f:
contenu = [Link]()
nombre = int(input("Entrez un nombre entier : "))
resultat = 100 / nombre
except FileNotFoundError:
print("Le fichier spécifié est introuvable.")
except ValueError:
print("Vous devez entrer un nombre entier valide.")
except ZeroDivisionError:
print("Division par zéro impossible.")
else:
print("Lecture du fichier et calcul réussis.")
print(f"Contenu du fichier :\n{contenu}")
print(f"Résultat du calcul : {resultat}")
finally:
print("Fin du programme.")

5. Utilisation du bloc else


Le bloc else s’exécute uniquement si aucune exception n’a été levée dans le bloc try. Il est
utile pour le code qui doit s’exécuter uniquement en cas de succès.

6. Utilisation du bloc finally


Le bloc finally s’exécute toujours, qu’une exception ait été levée ou non. Il est idéal pour
effectuer des opérations de nettoyage, comme fermer un fichier ou une connexion.

7. Conseils et bonnes pratiques


 Spécifiez toujours les exceptions que vous voulez gérer pour éviter de masquer des
erreurs inattendues.
 Regroupez les exceptions similaires dans un tuple si elles ont le même traitement.
 Utilisez else pour le code qui doit s’exécuter uniquement sans erreur.
 Utilisez finally pour garantir l’exécution d’un nettoyage ou d’une action finale.
 Évitez d’utiliser un bloc except générique sans raison, cela peut cacher des bugs
difficiles à détecter.

8. Résumé rapide
Élément Description
Plusieurs except Gérer différentes exceptions séparément
Tuple d’exceptions Gérer plusieurs exceptions dans un seul bloc
else Exécuté si aucune exception levée
finally Exécuté toujours, pour nettoyage

Conclusion
La gestion de plusieurs exceptions en Python permet d’écrire un code robuste, capable de
réagir de manière appropriée à différents types d’erreurs. Bien maîtriser cette gestion améliore
la fiabilité et la maintenabilité de vos programmes.
Vue d’ensemble des fonctions avancées en Python
1. Arguments avancés : *args et **kwargs
 *args permet de passer un nombre variable d’arguments positionnels à une fonction.
 **kwargs permet de passer un nombre variable d’arguments nommés (keyword
arguments).

Cela rend les fonctions très flexibles.

Exemple :

python
def afficher_info(*args, **kwargs):
print("Arguments positionnels :", args)
print("Arguments nommés :", kwargs)

afficher_info(1, 2, 3, nom="Alice", age=30)

2. Arguments mots-clés forcés


Python permet de forcer certains paramètres à être passés uniquement en tant qu’arguments
nommés, ce qui améliore la clarté du code.

python
def fonction(a, b, *, c):
print(a, b, c)

fonction(1, 2, c=3) # Correct


# fonction(1, 2, 3) # Erreur

3. Fonctions anonymes (lambda)


 Les fonctions lambda sont des fonctions anonymes, petites et souvent utilisées pour
des opérations simples et rapides.
 Syntaxe compacte : lambda arguments: expression

Exemple :

python
carre = lambda x: x ** 2
print(carre(5)) # 25

4. Décorateurs de fonctions
 Un décorateur est une fonction qui prend une autre fonction en argument, la modifie
ou l’enrichit, puis la retourne.
 Ils permettent d’ajouter du comportement (logging, contrôle d’accès, mesure de temps,
etc.) sans modifier la fonction d’origine.
Exemple simple :

python
def decorateur(fonction):
def wrapper():
print("Avant l’exécution")
fonction()
print("Après l’exécution")
return wrapper

@decorateur
def dire_bonjour():
print("Bonjour !")

dire_bonjour()

5. Décompression d’arguments (* et **)


 On peut décompresser des listes ou dictionnaires pour passer leurs éléments comme
arguments à une fonction.

python
def addition(a, b, c):
return a + b + c

args = [1, 2, 3]
print(addition(*args)) # 6

kwargs = {'a': 4, 'b': 5, 'c': 6}


print(addition(**kwargs)) # 15

6. Fonctions comme objets de première classe


 En Python, les fonctions sont des objets : on peut les passer en argument, les retourner,
les assigner à des variables.
 Cela permet de créer des fonctions d’ordre supérieur, comme map(), filter(), ou
d’implémenter des callbacks.

Exemple :

python
def saluer():
print("Salut !")

def executer_fonction(f):
f()

executer_fonction(saluer) # Affiche "Salut !"

7. Récursion
 Une fonction peut s’appeler elle-même pour résoudre un problème divisé en sous-
problèmes plus petits.
 Il faut toujours prévoir une condition d’arrêt pour éviter une récursion infinie.
Exemple :

python
def factorielle(n):
if n == 0:
return 1
else:
return n * factorielle(n - 1)

print(factorielle(5)) # 120

8. Générateurs et yield
 Les générateurs sont des fonctions qui produisent une séquence de valeurs au fur et à
mesure, avec le mot-clé yield.
 Ils permettent d’économiser de la mémoire en générant les éléments à la demande.

Exemple :

python
def compte():
for i in range(5):
yield i

for nombre in compte():


print(nombre)

Conclusion
Les fonctions avancées en Python offrent une grande puissance et flexibilité : gestion
dynamique des arguments, fonctions anonymes, décorateurs, récursion, générateurs, et plus
encore. Maîtriser ces concepts vous permettra d’écrire un code plus efficace, modulaire et
élégant.

Les fonctions lambda en Python


1. Qu’est-ce qu’une fonction lambda ?
Une fonction lambda est une petite fonction anonyme (sans nom) que l’on définit de manière
concise avec le mot-clé lambda. Elle peut prendre n’importe quel nombre d’arguments,
mais ne peut contenir qu’une seule expression. Cette expression est évaluée et retournée
automatiquement.

2. Syntaxe
python
lambda arguments: expression

 arguments : une ou plusieurs variables séparées par des virgules.


 expression : une expression simple dont le résultat sera retourné.
3. Exemple simple
Ajouter 10 à un nombre :

python
x = lambda a: a + 10
print(x(5)) # Affiche 15

Multiplier deux nombres :

python
x = lambda a, b: a * b
print(x(5, 6)) # Affiche 30

Somme de trois nombres :

python
x = lambda a, b, c: a + b + c
print(x(5, 6, 2)) # Affiche 13

4. Pourquoi utiliser les fonctions lambda ?


 Elles sont utiles pour écrire des fonctions courtes et temporaires, souvent utilisées
comme arguments dans d’autres fonctions.
 Elles permettent d’écrire un code plus concise et lisible lorsque la fonction est simple.
 Elles sont souvent utilisées avec des fonctions comme map(), filter(), reduce(),
ou sorted().

5. Exemple avec une fonction retournant une lambda


(closure)
python
def multiplier(n):
return lambda a: a * n

doubler = multiplier(2)
tripler = multiplier(3)

print(doubler(11)) # Affiche 22
print(tripler(11)) # Affiche 33

Ici, multiplier retourne une fonction lambda qui multiplie son argument par n. Cela montre
que les lambdas peuvent capturer des variables de leur environnement.

6. Utilisation avec map()


Appliquer une fonction lambda pour doubler chaque élément d’une liste :

python
nombres = [1, 2, 3, 4]
doubles = list(map(lambda x: x * 2, nombres))
print(doubles) # [2, 4, 6, 8]

7. Utilisation avec filter()


Filtrer les nombres pairs dans une liste :

python
nombres = [1, 2, 3, 4, 5, 6]
pairs = list(filter(lambda x: x % 2 == 0, nombres))
print(pairs) # [2, 4, 6]

8. Limitations des fonctions lambda


 Elles ne peuvent contenir qu’une seule expression, pas de blocs de code complexes ni
d’instructions multiples.
 Pour des fonctions plus complexes, il est préférable d’utiliser la définition classique
avec def.

9. Résumé rapide
Caractéristique Description
Syntaxe lambda arguments: expression
Anonyme Pas de nom de fonction
Arguments multiples Peut prendre plusieurs arguments
Expression unique Une seule expression retournée
Usage fréquent Fonctions temporaires, arguments de fonction

Conclusion
Les fonctions lambda sont un outil puissant pour écrire des fonctions simples et anonymes
rapidement. Elles améliorent la concision du code, surtout lorsqu’elles sont utilisées avec des
fonctions comme map(), filter() ou dans des expressions fonctionnelles.

Fonctionnement des arguments *args et **kwargs en Python


1. Introduction
En Python, il est souvent utile de créer des fonctions capables d’accepter un nombre variable
d’arguments. Pour cela, on utilise deux mécanismes spéciaux :

 *args : pour les arguments positionnels variables (non nommés)


 **kwargs : pour les arguments nommés variables (keyword arguments)

Ces deux outils rendent vos fonctions flexibles et capables de gérer différents scénarios
d’appel.

2. Comprendre *args
 *args permet à une fonction d’accepter un nombre variable d’arguments
positionnels.
 Les arguments passés sont accessibles dans la fonction sous forme d’un tuple.

Exemple :

python
def additionner(*nombres):
total = 0
for n in nombres:
total += n
print("Somme :", total)

additionner(3, 5)
additionner(4, 5, 6, 7)
additionner(1, 2, 3, 5, 6)

Sortie :

text
Somme : 8
Somme : 22
Somme : 17

Ici, la fonction additionner accepte un nombre quelconque d’arguments et les additionne.

3. Comprendre **kwargs
 **kwargs permet de passer un nombre variable d’arguments nommés.
 Ces arguments sont accessibles dans la fonction sous forme d’un dictionnaire clé-
valeur.

Exemple :

python
def afficher_adresse(**kwargs):
for cle, valeur in [Link]():
print(f"{cle} : {valeur}")

afficher_adresse(rue="123 Rue Fausse", ville="Paris", code_postal="75000")

Sortie :

text
rue : 123 Rue Fausse
ville : Paris
code_postal : 75000

4. Utiliser *args et **kwargs ensemble


On peut combiner les deux pour accepter à la fois des arguments positionnels et nommés.
Règle importante :
L’ordre des paramètres dans la définition doit être :

python
def fonction(a, b, *args, **kwargs):
pass

*args doit toujours précéder **kwargs.

Exemple :

python
def fonction_exemple(a, b, *args, **kwargs):
print("a =", a)
print("b =", b)
print("args =", args)
print("kwargs =", kwargs)

fonction_exemple(1, 2, 3, 4, x=5, y=6)

Sortie :

text
a=1
b=2
args = (3, 4)
kwargs = {'x': 5, 'y': 6}

5. Décompression d’arguments avec * et **


On peut aussi décompresser des listes, tuples ou dictionnaires lors de l’appel d’une fonction :

python
def addition(a, b, c):
return a + b + c

args = [1, 2, 3]
print(addition(*args)) # 6

kwargs = {'a': 4, 'b': 5, 'c': 6}


print(addition(**kwargs)) # 15

6. Exemple pratique : initialisation d’objets avec *args et


**kwargs

 Utilisation de *args pour passer plusieurs attributs positionnels :

python
class Livre:
def __init__(self, *args):
[Link], [Link], [Link] = args

livre = Livre("1984", "George Orwell", 1949)


print([Link], [Link], [Link])
 Utilisation de **kwargs pour passer des attributs nommés :

python
class Livre:
def __init__(self, **kwargs):
[Link] = [Link]('titre')
[Link] = [Link]('auteur')
[Link] = [Link]('annee')

livre = Livre(titre="1984", auteur="George Orwell", annee=1949)


print([Link], [Link], [Link])

7. Bonnes pratiques
 Utiliser *args lorsque vous attendez un nombre variable d’arguments positionnels.
 Utiliser **kwargs pour des arguments nommés optionnels et flexibles.
 Toujours respecter l’ordre : paramètres standards, *args, puis **kwargs.
 Documenter clairement les fonctions qui utilisent ces paramètres pour faciliter leur
utilisation.

8. Résumé rapide
Élément Description Type dans la fonction
*args Arguments positionnels variables Tuple
**kwargs Arguments nommés variables Dictionnaire (clé-valeur)
Ordre Paramètres standards, puis *args, puis **kwargs Syntaxe obligatoire
Décompression Utiliser * et ** pour passer des listes/dict En appel de fonction

Conclusion
Les arguments *args et **kwargs sont des outils puissants pour écrire des fonctions Python
flexibles et adaptables à différents besoins. Ils permettent de gérer un nombre variable
d’arguments, d’améliorer la modularité et la réutilisabilité du code.

Les itérateurs en Python


1. Qu’est-ce qu’un itérateur ?
Un itérateur est un objet qui permet de parcourir une collection d’éléments (comme une
liste, un tuple, une chaîne de caractères, etc.) un par un, sans avoir à manipuler directement les
indices.

Techniquement, un itérateur doit implémenter deux méthodes spéciales, appelées le protocole


itérateur :

 __iter__() : retourne l’itérateur lui-même.


 __next__() : retourne l’élément suivant de la séquence, ou lève l’exception
StopIteration s’il n’y a plus d’éléments.
2. Itérables vs Itérateurs
 Itérable : un objet capable de retourner un itérateur (ex. listes, tuples, chaînes,
dictionnaires).
 Itérateur : un objet qui produit les éléments un par un, souvent créé à partir d’un
itérable via la fonction iter().

3. Exemple simple avec une liste


python
ma_liste = [4, 7, 0]

itérateur = iter(ma_liste) # Création de l’itérateur

print(next(itérateur)) # 4
print(next(itérateur)) # 7
print(next(itérateur)) # 0
# next(itérateur) # Provoquerait StopIteration

Ici, iter() crée un itérateur à partir de la liste, et next() récupère les éléments un par un.

4. Utilisation avec une boucle for


La boucle for en Python utilise automatiquement un itérateur derrière le décor. Par exemple :

python
for élément in ma_liste:
print(élément)

Cela évite d’appeler explicitement iter() et next().

5. Créer un itérateur personnalisé


Pour créer votre propre itérateur, vous devez définir une classe qui implémente :

 __iter__(self) : retourne l’objet itérateur (souvent self).


 __next__(self) : retourne l’élément suivant ou lève StopIteration.

Exemple : itérateur qui retourne les nombres pairs à partir de 2

python
class NombresPairs:
def __init__(self):
self.n = 2

def __iter__(self):
return self

def __next__(self):
x = self.n
self.n += 2
return x
pairs = NombresPairs()
it = iter(pairs)

print(next(it)) # 2
print(next(it)) # 4
print(next(it)) # 6

6. Exemple d’itérateur avec fin définie


Pour éviter une boucle infinie, on peut lever StopIteration :

python
class SequenceIterator:
def __init__(self, sequence):
[Link] = sequence
[Link] = 0

def __iter__(self):
return self

def __next__(self):
if [Link] < len([Link]):
item = [Link][[Link]]
[Link] += 1
return item
else:
raise StopIteration

seq = SequenceIterator([1, 2, 3])


for x in seq:
print(x)

7. Avantages des itérateurs


 Efficacité mémoire : ils ne chargent pas toute la collection en mémoire, ils produisent
les éléments à la demande.
 Flexibilité : on peut créer des itérateurs personnalisés pour des séquences complexes
ou infinies.
 Interopérabilité : la plupart des constructions Python (for, sum(), list(), etc.)
fonctionnent avec n’importe quel itérateur.

8. Résumé rapide
Concept Description
Itérable Objet pouvant retourner un itérateur
Itérateur Objet avec __iter__() et __next__()
iter() Crée un itérateur à partir d’un itérable
next() Récupère l’élément suivant de l’itérateur
StopIteration Exception levée quand la séquence est terminée

9. Conclusion
Les itérateurs sont un concept fondamental en Python, permettant de parcourir efficacement
des collections d’éléments. Maîtriser la création et l’utilisation des itérateurs vous aidera à
écrire du code plus performant et plus pythonique.

Générateurs et yield en Python


1. Qu’est-ce qu’un générateur ?
Un générateur est un type spécial d’itérateur qui produit des valeurs au fur et à mesure,
plutôt que de calculer et stocker toute une séquence en mémoire. Cela permet de gérer
efficacement de grandes quantités de données ou des séquences potentiellement infinies.

2. Le mot-clé yield
 Le mot-clé yield est utilisé dans une fonction pour produire une valeur et
suspendre temporairement l’exécution de cette fonction.
 Lorsque la fonction est appelée, elle retourne un objet générateur.
 Chaque appel à next() sur ce générateur reprend l’exécution là où elle s’était arrêtée,
jusqu’au prochain yield.
 Cette suspension permet de garder en mémoire l’état local (variables, position dans
le code) entre les appels.

3. Différence entre yield et return


Caractéristique return yield
Fonction Termine la fonction Suspend la fonction
Valeur retournée Une seule valeur Génère une séquence de valeurs
État local Perdu après le return Conservé entre les appels
Usage Fonctions classiques Générateurs

4. Exemple simple de générateur


python
def compteur(max):
count = 0
while count < max:
yield count
count += 1

for nombre in compteur(5):


print(nombre)

Sortie :

text
0
1
2
3
4
Le générateur produit les nombres de 0 à 4, un par un, sans stocker toute la liste en mémoire.

5. Fonctionnement interne
 Appeler compteur(5) ne lance pas l’exécution mais crée un générateur.
 La boucle for appelle next() sur le générateur pour obtenir chaque valeur.
 Après chaque yield, la fonction est suspendue, puis reprise lors du prochain next().

6. Générateurs vs listes
 Les générateurs sont plus économes en mémoire car ils ne stockent pas tous les
éléments.
 Ils sont particulièrement adaptés pour traiter des flux de données volumineux ou
infinis.

7. Utilisation avancée de yield : expression et envoi de


valeurs
 Depuis Python 2.5, yield est une expression qui peut recevoir une valeur envoyée via
la méthode .send().

python
def generator():
value = yield 1
print(f"Valeur reçue : {value}")
yield 2

gen = generator()
print(next(gen)) # Affiche 1
print([Link](10)) # Affiche "Valeur reçue : 10" puis 2

 Cela permet d’interagir avec le générateur en lui passant des données pendant son
exécution.

8. Gestion des exceptions dans les générateurs


 On peut envoyer des exceptions à un générateur avec .throw().
 Le générateur peut les gérer via des blocs try/except internes.

9. Générateurs et pipelines de données


 Les générateurs peuvent être enchaînés pour créer des pipelines de traitement
efficaces.
 Chaque générateur traite les données au fur et à mesure, sans charger la totalité des
données en mémoire.

10. Bonnes pratiques avec yield


 Utiliser yield pour créer des fonctions génératrices lorsque la séquence est grande ou
infinie.
 Ne pas utiliser yield dans des fonctions où l’on veut retourner une valeur unique.
 Documenter clairement les générateurs, car leur comportement diffère des fonctions
classiques.
 Gérer proprement la fin du générateur avec l’exception StopIteration.

11. Résumé rapide


Concept Description
Générateur Fonction avec yield produisant un itérateur
yield Produit une valeur et suspend la fonction
.send() Envoie une valeur dans le générateur
.throw() Envoie une exception dans le générateur
Avantage Économie mémoire, traitement paresseux

12. Conclusion
Les générateurs et le mot-clé yield sont des outils puissants en Python pour écrire des
programmes efficaces, capables de traiter des séquences volumineuses ou infinies sans
surcharge mémoire. Ils permettent aussi des interactions avancées via .send() et .throw(),
ouvrant la voie à des architectures complexes et performantes.

Cette présentation s’appuie sur les explications et exemples fournis par plusieurs sources
récentes et fiables, notamment GeeksforGeeks, Real Python, DataCamp, Programiz, et
d’autres.

La fonction map() en Python (14min33)


1. Introduction à map()
La fonction intégrée map() permet d’appliquer une fonction donnée à tous les éléments d’un
ou plusieurs itérables (listes, tuples, etc.) et retourne un itérateur avec les résultats.

Elle est très utile pour transformer ou traiter des collections de données de manière concise et
efficace.

2. Syntaxe de map()
python
map(function, iterable, ...)

 function : la fonction à appliquer à chaque élément.


 iterable : un ou plusieurs itérables dont les éléments seront passés à la fonction.

map() retourne un objet itérateur, qu’on peut convertir en liste, tuple, etc.
3. Exemple simple avec un seul itérable
Appliquer une fonction qui double chaque élément d’une liste :

python
def doubler(x):
return x * 2

nombres = [1, 2, 3, 4]
resultat = map(doubler, nombres)
print(list(resultat)) # [2, 4, 6, 8]

4. Utiliser une fonction lambda avec map()


On peut écrire la fonction directement avec une fonction anonyme (lambda) :

python
nombres = [1, 2, 3, 4]
resultat = map(lambda x: x * 2, nombres)
print(list(resultat)) # [2, 4, 6, 8]

5. Utiliser map() avec plusieurs itérables


Si plusieurs itérables sont passés, la fonction doit accepter autant d’arguments que d’itérables.
L’itération s’arrête à la plus courte des séquences.

Exemple : additionner deux listes élément par élément

python
a = [1, 2, 3]
b = [4, 5, 6]

resultat = map(lambda x, y: x + y, a, b)
print(list(resultat)) # [5, 7, 9]

6. Avantages de map() par rapport à une boucle for


 Code plus concise et souvent plus lisible.
 Peut être plus performant dans certains cas.
 Retourne un itérateur paresseux (lazy), ce qui économise de la mémoire.

7. Conversion du résultat de map()


L’objet retourné par map() est un itérateur, il faut souvent le convertir en liste ou autre pour
afficher ou réutiliser les résultats.

python
resultat = map(str, [1, 2, 3])
print(list(resultat)) # ['1', '2', '3']
8. Exemple complet : conversion de températures Celsius
en Fahrenheit
python
def celsius_en_fahrenheit(c):
return (c * 9/5) + 32

temperatures_c = [0, 20, 37, 100]


temperatures_f = map(celsius_en_fahrenheit, temperatures_c)
print(list(temperatures_f)) # [32.0, 68.0, 98.6, 212.0]

9. Utilisation avec des fonctions intégrées


On peut utiliser map() avec des fonctions Python intégrées, comme str(), abs(), etc.

python
nombres = [-1, -2, 3, 4]
valeurs_absolues = map(abs, nombres)
print(list(valeurs_absolues)) # [1, 2, 3, 4]

10. Limites et alternatives


 map() est moins lisible que les compréhensions de liste pour des transformations
simples.
 Les compréhensions de liste sont souvent préférées pour leur clarté.

Exemple équivalent avec compréhension de liste :

python
nombres = [1, 2, 3, 4]
resultat = [x * 2 for x in nombres]
print(resultat) # [2, 4, 6, 8]

11. Cas d’usage avancés


 Chaîner plusieurs appels à map() pour des transformations successives.
 Utiliser avec des fonctions personnalisées complexes.
 Combiner avec filter() pour filtrer et transformer des données.

12. Résumé rapide


Élément Description
map() Applique une fonction à tous les éléments d’un itérable
Fonction Peut être une fonction définie ou une lambda
Plusieurs itérables La fonction doit accepter autant d’arguments que d’itérables
Résultat Itérateur paresseux, souvent converti en liste

13. Conclusion
La fonction map() est un outil puissant pour appliquer des transformations fonctionnelles sur
des collections en Python. Elle favorise un style de programmation clair, concis et efficace,
notamment lorsqu’elle est combinée avec des fonctions lambda.

La fonction filter() en Python


1. Qu’est-ce que la fonction filter() ?
La fonction intégrée filter() permet de filtrer les éléments d’un itérable (liste, tuple, set,
etc.) selon une condition donnée. Elle applique une fonction de test (appelée fonction
prédicat) à chaque élément, et ne conserve que ceux pour lesquels la fonction retourne True.

2. Syntaxe de filter()
python
filter(function, iterable)

 function : une fonction qui prend un seul argument et retourne True ou False.
o Cette fonction sert à décider si un élément doit être conservé (True) ou rejeté
(False).
o Si function est None, la fonction filtre les éléments évalués comme True
(utile pour filtrer les valeurs "falsy").
 iterable : un objet itérable (liste, tuple, etc.) dont on veut filtrer les éléments.

filter() retourne un itérateur contenant uniquement les éléments qui passent le test.

3. Exemple simple avec une fonction définie


Filtrer les nombres pairs dans une liste :

python
def est_pair(n):
return n % 2 == 0

nombres = [1, 2, 3, 4, 5, 6]
pairs = filter(est_pair, nombres)
print(list(pairs)) # [2, 4, 6]

4. Exemple avec une fonction lambda


On peut utiliser une fonction anonyme pour plus de concision :

python
nombres = [1, 2, 3, 4, 5, 6]
pairs = filter(lambda x: x % 2 == 0, nombres)
print(list(pairs)) # [2, 4, 6]

5. Utilisation avec None comme fonction


Si on passe None en premier argument, filter() élimine tous les éléments évalués comme
False (ex. 0, False, None, '').

python
valeurs = [0, 1, False, 2, '', 3, None, 4]
filtre = filter(None, valeurs)
print(list(filtre)) # [1, 2, 3, 4]

6. Fonctionnement interne
 filter() applique la fonction à chaque élément de l’itérable.
 Si la fonction retourne True, l’élément est inclus dans le résultat.
 Sinon, il est ignoré.
 Le résultat est un itérateur paresseux (lazy), donc l’évaluation est faite au fur et à
mesure.

7. Comparaison avec une compréhension de liste


L’équivalent avec une compréhension de liste serait :

python
pairs = [x for x in nombres if x % 2 == 0]

filter() est souvent plus efficace en mémoire car il ne crée pas immédiatement une
nouvelle liste, mais un itérateur.

8. Exemples pratiques
 Filtrer les mots commençant par une voyelle :

python
mots = ['apple', 'banana', 'orange', 'grape', 'avocado']
voyelles = filter(lambda mot: mot[0].lower() in 'aeiou', mots)
print(list(voyelles)) # ['apple', 'orange', 'avocado']

 Filtrer des dictionnaires selon une clé :

python
personnes = [
{'nom': 'Alice', 'age': 25},
{'nom': 'Bob', 'age': 17},
{'nom': 'Charlie', 'age': 30}
]

adultes = filter(lambda p: p['age'] >= 18, personnes)


print(list(adultes)) # [{'nom': 'Alice', 'age': 25}, {'nom': 'Charlie', 'age': 30}]

9. Avantages de filter()
 Permet un filtrage clair et fonctionnel.
 Fonctionne avec n’importe quel itérable.
 Économie mémoire grâce à l’évaluation paresseuse.
 Facilement combinable avec d’autres fonctions comme map() ou reduce().

10. Résumé rapide


Élément Description
filter() Filtre les éléments d’un itérable selon une fonction de test
function Fonction qui retourne True ou False pour chaque élément
iterable Liste, tuple, set, ou autre itérable
Résultat Itérateur paresseux contenant les éléments filtrés

11. Conclusion
La fonction filter() est un outil puissant et efficace pour extraire des éléments répondant à
un critère précis dans une collection. Elle favorise un style de programmation fonctionnel et
s’intègre bien dans des chaînes de transformations de données.

Résumé du module
Concepts clés appris :
 Fonctions en Python
Une fonction est un groupe d’instructions liées qui réalisent une tâche spécifique.
 Variables globales et locales
o Les variables globales peuvent être consultées et modifiées depuis n’importe
où dans le code.
o Les variables locales sont accessibles uniquement à l’intérieur des fonctions où
elles sont définies.
 Gestion des exceptions
o Une exception interrompt l’exécution normale du code, empêchant l’exécution
des lignes suivantes.
o Le mot-clé assert permet de détecter plus clairement les bugs en vérifiant des
conditions pendant l’exécution.
o Les erreurs d’exception surviennent lorsque le code est syntaxiquement correct
mais échoue dans certains cas à l’exécution.
 Fonctions anonymes (lambda)
Le mot-clé lambda sert à définir des fonctions anonymes, souvent utilisées pour des
opérations simples et temporaires.
 Itérateurs
Un itérateur est un objet qui contient une séquence de valeurs accessibles une par une.
 Générateurs
o Un générateur est une fonction spéciale qui ne retourne pas une valeur unique
mais un itérateur produisant une séquence de valeurs.
o La différence principale avec une fonction classique est l’utilisation du mot-clé
yield.
 Fonction filter()
Au lieu d’appliquer une fonction à tous les éléments d’un itérable, filter()
sélectionne uniquement les éléments qui satisfont une condition donnée.
Ce module t’a permis de comprendre les bases et certains concepts avancés de la
programmation fonctionnelle et de la gestion des erreurs en Python, essentiels pour écrire du
code robuste, clair et efficace.

Voici les réponses développées en français correspondant aux objectifs d’apprentissage que tu
as fournis :

Résultats d’apprentissage du module


1. Discuter des différents IDE disponibles pour Python
Un IDE (Integrated Development Environment) est un environnement de développement
intégré qui facilite l’écriture, le test et le débogage du code. Pour Python, plusieurs IDE
populaires existent en 2025, chacun avec ses avantages et inconvénients :

 IDLE : L’IDE officiel de Python, simple et léger. Il offre coloration syntaxique,


indentation automatique et un débogueur basique. Idéal pour débutants ou petits
projets, mais limité pour des projets complexes.
 PyCharm : IDE complet développé par JetBrains, avec une version gratuite
(Community) et une version payante (Professional). Il supporte de nombreux
frameworks, offre un débogueur avancé, intégration Git, et des outils pour le
développement scientifique.
 Visual Studio Code (VS Code) : Éditeur de code très populaire, extensible via des
plugins, notamment pour Python. Supporte Git, intellisense, et intègre des outils d’IA
comme Copilot.
 Jupyter Notebook/Lab : Environnement interactif idéal pour la science des données,
le prototypage et l’exploration. Permet d’exécuter du code par cellules et d’afficher
graphiques et résultats directement.
 Spyder : IDE orienté data science, avec console IPython intégrée, explorateur de
variables, et outils de visualisation.
 Autres IDEs : Komodo, Wing, Thonny, PyDev, Ninja-IDE, etc., chacun avec des
fonctionnalités spécifiques.

2. Expliquer les inconvénients de l’utilisation de Jupyter


Notebook
Bien que Jupyter Notebook soit très apprécié pour l’exploration interactive et la science des
données, il présente certains inconvénients :

 Pas idéal pour le développement logiciel classique : Manque de fonctionnalités


avancées de gestion de projet, refactorisation, et débogage complet.
 Difficulté à gérer la structure du code : Le code est divisé en cellules, ce qui peut
rendre la lecture et la maintenance difficiles, surtout dans des projets complexes.
 Problèmes de reproductibilité : L’exécution des cellules dans un ordre non linéaire
peut conduire à des états incohérents du kernel.
 Performance limitée : Pas optimisé pour le développement d’applications lourdes ou
en production.
 Sécurité : Exécuter des notebooks téléchargés peut présenter des risques.
3. Identifier le mot-clé utilisé pour importer des fonctions
spécifiques en Python
En Python, pour importer des fonctions spécifiques d’un module, on utilise le mot-clé from
suivi du nom du module, puis import suivi des fonctions désirées.

Exemple :

python
from math import sqrt, pi

Cela importe uniquement les fonctions sqrt et la constante pi du module math, évitant
d’importer tout le module.

4. Évaluer la principale structure de données dans NumPy


La structure de données principale dans NumPy est le ndarray (N-dimensional array).

 C’est un tableau multidimensionnel homogène, c’est-à-dire que tous les éléments ont
le même type.
 Il est optimisé pour le calcul numérique rapide et efficace.
 Supporte les opérations vectorielles, le broadcasting, et permet de manipuler
facilement des données en plusieurs dimensions.
 Constitue la base pour la plupart des calculs scientifiques et d’apprentissage
automatique en Python.

Vue d’ensemble des scripts et bibliothèques Python


1. Qu’est-ce qu’une bibliothèque Python ?
Une bibliothèque Python est une collection organisée de modules liés entre eux, contenant
du code réutilisable pour accomplir diverses tâches. Elle permet aux programmeurs de ne pas
réécrire du code commun et d’accéder facilement à des fonctionnalités avancées.

 Une bibliothèque peut contenir des centaines de modules.


 Elle facilite la programmation en offrant des outils prêts à l’emploi.
 La bibliothèque standard Python est fournie avec l’installation de Python et contient
plus de 200 modules pour des tâches courantes (gestion de fichiers, mathématiques,
manipulation de chaînes, etc.).

2. Différence entre scripts, modules, packages et


bibliothèques
 Script : Un fichier Python destiné à être exécuté directement. Il contient souvent du
code autonome.
 Module : Un fichier Python contenant des définitions (fonctions, classes) destiné à
être importé dans d’autres scripts ou modules.
 Package : Un dossier contenant plusieurs modules liés, avec un fichier spécial
__init__.py indiquant à Python qu’il s’agit d’un package.
 Bibliothèque : Un ensemble de modules et packages fournissant une large gamme de
fonctionnalités.

3. Utilisation des bibliothèques


 Pour utiliser une fonction ou classe d’une bibliothèque, on l’importe dans son script
avec le mot-clé import ou from ... import ....
 Exemple :

python
import math
print([Link](16)) # 4.0

from math import pi


print(pi) # 3.14159...

4. Bibliothèques populaires en Python


 NumPy : Manipulation efficace des tableaux multidimensionnels et calcul
scientifique.
 Pandas : Structures de données flexibles pour l’analyse et la manipulation de données.
 Matplotlib : Visualisation graphique (graphes, histogrammes, diagrammes).
 TensorFlow : Calculs avancés et apprentissage automatique (machine learning).
 Scikit-learn : Outils pour le machine learning classique.
 Autres : Requests (requêtes HTTP), BeautifulSoup (parsing HTML), Flask/Django
(web), etc.

5. Gestion des bibliothèques externes


 Les bibliothèques non incluses dans la bibliothèque standard sont souvent installées
via des gestionnaires de paquets comme pip ou conda.
 Exemple d’installation :

text
pip install numpy

 Ces bibliothèques sont disponibles sur le Python Package Index (PyPI).

6. Création d’une bibliothèque personnelle


 On peut organiser son code en modules et packages pour créer une bibliothèque
réutilisable.
 Utiliser des fichiers __init__.py pour définir les packages.
 Importer et exposer les fonctions dans __init__.py pour faciliter l’utilisation.
 Installer localement la bibliothèque pour la tester avant distribution.

7. Avantages des bibliothèques Python


 Gain de temps et d’effort en réutilisant du code éprouvé.
 Accès à des fonctionnalités avancées sans avoir à les coder soi-même.
 Facilite la collaboration et la maintenance du code.
 Permet d’écrire des scripts plus courts, plus clairs et plus puissants.

Qu’est-ce qu’un script ?


Un script est un fichier contenant une suite d’instructions écrites dans un langage de
programmation, ici Python, destinées à être exécutées de manière séquentielle.

Caractéristiques principales :
 Fichier texte : Un script Python est un fichier texte avec l’extension .py.
 Exécution directe : Il est conçu pour être exécuté directement par l’interpréteur
Python, sans compilation préalable.
 Automatisation de tâches : Les scripts servent souvent à automatiser des tâches
répétitives, comme le traitement de fichiers, l’analyse de données, ou la gestion
système.
 Simplicité : Contrairement aux programmes plus complexes, un script est
généralement simple, linéaire et orienté vers une tâche spécifique.
 Modularité possible : Un script peut aussi importer des modules ou bibliothèques
pour étendre ses fonctionnalités.

Exemple simple :
Un script [Link] affichant un message :

python
print("Bonjour, monde !")

Pour l’exécuter, on lance la commande dans un terminal :

bash
python [Link]

Résumé
Un script Python est un programme léger et autonome, idéal pour écrire rapidement du code
réalisant une tâche spécifique, sans nécessiter d’interface graphique ou de structure complexe.

Qu’est-ce qu’un IDE ?


Un IDE (Integrated Development Environment), ou environnement de développement
intégré en français, est une application logicielle qui regroupe dans une interface unique un
ensemble d’outils essentiels pour le développement de logiciels. Son objectif principal est
d’augmenter la productivité des développeurs en centralisant toutes les étapes du cycle de
développement dans un seul programme.
Composants clés d’un IDE
Un IDE comprend généralement :

 Éditeur de code source : Un éditeur avancé avec coloration syntaxique, indentation


automatique, et complétion de code intelligente (auto-complétion).
 Compilateur ou interpréteur : Permet de traduire le code source en code exécutable
ou de l’exécuter directement.
 Débogueur : Outil pour tester le programme, détecter et corriger les erreurs à
l’exécution.
 Outils d’automatisation : Gestion de la compilation, du déploiement, des tests
unitaires.
 Gestionnaire de versions : Intégration avec des systèmes comme Git pour le contrôle
des versions et la collaboration.
 Explorateurs de classes, objets et fichiers : Facilite la navigation dans le projet.
 Refactoring : Outils pour restructurer le code sans changer son comportement.
 Extensions et plugins : Pour ajouter des fonctionnalités spécifiques ou supporter
différents langages.

Avantages d’utiliser un IDE


 Gain de temps : Toutes les tâches (édition, compilation, débogage) sont accessibles
dans une interface unique.
 Réduction des erreurs : La coloration syntaxique et la complétion automatique aident
à éviter les fautes de frappe et erreurs de syntaxe.
 Débogage facilité : Les outils intégrés permettent d’analyser le comportement du
programme en temps réel.
 Meilleure organisation : Navigation rapide dans les fichiers et classes du projet.
 Support multi-langages : Certains IDE supportent plusieurs langages et frameworks.
 Personnalisation : Interface et outils adaptables aux préférences du développeur.

IDE vs outils traditionnels


Avant l’apparition des IDE, les développeurs utilisaient des outils séparés (éditeur de texte,
compilateur, débogueur) et devaient les configurer et utiliser indépendamment. L’IDE intègre
ces outils, réduisant la complexité et améliorant la productivité.

Exemples populaires d’IDE


 PyCharm : Très utilisé pour Python, avec des fonctionnalités avancées.
 Visual Studio Code (VS Code) : Éditeur extensible avec support IDE via plugins.
 Eclipse, IntelliJ IDEA : IDEs polyvalents pour plusieurs langages.
 Jupyter Notebook : IDE interactif pour la data science (moins adapté au
développement classique).

Conclusion
Un IDE est un outil indispensable pour les développeurs modernes. Il facilite la création, la
gestion, le test et le déploiement de logiciels en offrant un environnement intégré, complet et
ergonomique. Son utilisation permet d’accélérer le développement et d’améliorer la qualité du
code.

Qu’est-ce qu’un éditeur de texte ?


Définition générale
Un éditeur de texte est un logiciel permettant de créer, modifier et sauvegarder des
fichiers contenant du texte brut (plain text). Contrairement aux traitements de texte (comme
Microsoft Word) qui gèrent du texte enrichi avec mise en forme (gras, italique, taille, images),
un éditeur de texte travaille uniquement avec du texte non formaté.

Caractéristiques principales
 Travail sur du texte brut : Chaque caractère est stocké selon un encodage (ASCII,
UTF-8, Unicode…), sans informations de mise en forme.
 Fonctions basiques : Saisie, couper, copier, coller, recherche/remplacement,
annuler/rétablir.
 Pas de formatage : Impossible d’ajouter du gras, des images, ou des tableaux.
 Manipulation de fichiers volumineux : Les éditeurs de texte sont souvent capables
d’ouvrir et modifier des fichiers très grands, ce qui est difficile pour les traitements de
texte.
 Utilisation courante : Programmation, modification de fichiers de configuration,
rédaction de scripts, édition de fichiers logs, création de documents en Markdown ou
HTML.

Éditeurs de texte et programmation


Les programmeurs utilisent les éditeurs de texte pour écrire et modifier le code source. Ces
éditeurs offrent souvent des fonctionnalités avancées pour faciliter la programmation :

 Coloration syntaxique : Mise en couleur des mots-clés, commentaires, chaînes de


caractères pour améliorer la lisibilité.
 Indentation automatique : Aide à respecter la structure du code.
 Complétion de code : Suggestions automatiques pendant la saisie.
 Recherche avancée : Utilisation d’expressions régulières pour rechercher et
remplacer du texte.
 Macros et raccourcis : Automatisation de tâches répétitives.
 Navigation dans le code : Accès rapide aux fonctions, classes, ou sections.

Types d’éditeurs de texte


 Éditeurs en ligne : Fonctionnent dans un terminal, souvent utilisés sur des systèmes
UNIX/Linux (exemples : vi, vim, nano, emacs).
 Éditeurs graphiques : Interfaces avec fenêtres et menus, plus conviviaux (exemples :
Notepad++, Sublime Text, Visual Studio Code, Atom).
Différence avec un traitement de texte
Éditeur de texte Traitement de texte
Texte brut, sans mise en forme Texte enrichi avec styles, images, etc.
Fichiers légers, rapides à ouvrir Fichiers plus lourds, formatés
Utilisé pour coder et configurer Utilisé pour rédiger documents
Pas de gestion de polices ou marges Gestion avancée de mise en page

Exemples d’éditeurs de texte populaires


 Notepad++ (Windows) : Léger, puissant, avec coloration syntaxique.
 Visual Studio Code : Très populaire, extensible, supporte de nombreux langages.
 Sublime Text : Rapide, interface épurée, très utilisé par les développeurs.
 Vim / Emacs : Puissants, personnalisables, utilisés principalement dans les
environnements UNIX.
 Atom : Open-source, développé par GitHub.

Pourquoi utiliser un éditeur de texte ?


 Simplicité et rapidité : Pas de surcharge liée au formatage, ouverture instantanée.
 Contrôle total sur le contenu : Le texte est pur, sans métadonnées cachées.
 Idéal pour le développement : Permet d’écrire du code propre, facilement
manipulable par d’autres outils.
 Manipulation de gros fichiers : Logs, bases de données exportées, fichiers de
configuration.

Conclusion
Un éditeur de texte est un outil fondamental pour les développeurs, administrateurs système,
et toute personne travaillant avec du texte brut. Il offre un environnement simple, efficace et
puissant pour créer et modifier du code, des scripts, ou tout autre fichier texte.

Pour passer de Jupyter Notebook à Visual Studio Code (VS Code) et convertir un fichier
.ipynb en fichier Python .py, voici les étapes clés à suivre :

1. Ouvrir le fichier Jupyter Notebook dans VS Code


Lance VS Code, puis ouvre ton fichier .ipynb via le menu Fichier > Ouvrir. VS Code
affichera automatiquement le notebook dans son éditeur natif.
2. Installer les extensions nécessaires
Pour travailler avec les notebooks dans VS Code, tu dois installer deux extensions
essentielles :
o Python (par Microsoft)
o Jupyter (par Microsoft)
Ces extensions permettent d’exécuter les cellules de code, de gérer
l’environnement Python et de convertir les notebooks12.
3. Configurer l’environnement Python
Sélectionne l’interpréteur Python approprié dans VS Code (via la commande Python:
Select Interpreter) qui doit avoir le package Jupyter installé. Cela peut être un
environnement Anaconda ou un autre environnement Python23.
4. Exécuter les cellules dans VS Code
Une fois les extensions installées et l’environnement configuré, tu peux exécuter les
cellules du notebook directement dans VS Code, comme dans Jupyter Notebook.
5. Convertir le fichier .ipynb en .py
Pour convertir ton notebook en script Python :
o Clique sur les trois points en haut à droite de l’éditeur du notebook
o Sélectionne l’option Exporter ou utilise l’icône de conversion dans la barre
d’outils
o Choisis Python Script
VS Code va alors créer un nouveau fichier .py où chaque cellule de code est
délimitée par des commentaires # %% pour garder la structure du notebook. Les
cellules Markdown sont converties en commentaires précédés de # %%
[markdown]12.
6. Avantages de cette conversion
o Tu peux éditer, exécuter et déboguer le code plus facilement dans un fichier
.py classique.
o Le débogage est plus puissant et plus simple dans VS Code que dans Jupyter
Notebook.
o Tu peux continuer à utiliser des fonctionnalités interactives grâce aux cellules
délimitées dans le script Python.

Résumé :

Pour passer de Jupyter Notebook à VS Code, il faut ouvrir ton fichier .ipynb dans VS Code,
installer les extensions Python et Jupyter, configurer ton environnement Python avec Jupyter
installé, puis utiliser l’option d’export pour convertir le notebook en script Python. Ce script
conserve la structure cellulaire du notebook et te permet de bénéficier d’un environnement de

Pour utiliser Jupyter Notebook directement dans Visual Studio Code (VS Code), voici un
résumé clair des étapes et fonctionnalités principales :

1. Installation des extensions nécessaires


Dans VS Code, installe les extensions Python et Jupyter proposées par Microsoft via
le gestionnaire d’extensions. Ces extensions permettent à VS Code de reconnaître et
d’exécuter les fichiers .ipynb (notebooks Jupyter)136.
2. Création et ouverture d’un notebook
Tu peux créer un nouveau fichier Jupyter Notebook en cliquant sur "Nouveau fichier"
puis en choisissant l’extension .ipynb. Tu peux aussi ouvrir un notebook existant. VS
Code affichera alors une interface interactive similaire à Jupyter Notebook classique,
avec des cellules de code et Markdown236.
3. Sélection de l’interpréteur Python
Lors de l’ouverture d’un notebook, VS Code te demandera de sélectionner un
interpréteur Python (environnement virtuel, Anaconda, etc.) où le package Jupyter est
installé. Cela garantit que le code s’exécute dans le bon environnement236.
4. Exécution des cellules et édition interactive
Tu peux exécuter chaque cellule de code indépendamment, voir les résultats
directement dans VS Code, et éditer le contenu Markdown pour la documentation.
L’expérience est fluide et intégrée, avec des fonctionnalités comme l’auto-complétion
(IntelliSense) et le débogage134.
5. Exploration des variables et visualisation
VS Code propose un explorateur de variables et un visualiseur de données qui te
permettent d’inspecter facilement les variables en mémoire, ainsi que d’afficher des
graphiques et images générés dans les cellules34.
6. Sécurité et confiance du workspace
Pour exécuter du code dans un notebook, assure-toi que ton dossier de travail est en
mode "trusted workspace" (espace de travail de confiance). Sinon, l’exécution sera
restreinte pour des raisons de sécurité3.

En résumé :
VS Code intègre nativement Jupyter Notebook, te permettant de créer, éditer, exécuter et
déboguer des notebooks Python dans un seul environnement. Il suffit d’installer les extensions
Python et Jupyter, de choisir ton interpréteur, puis de travailler avec les notebooks de façon
interactive, tout en bénéficiant des outils avancés de VS Code.

Pour importer des scripts Python dans Visual Studio Code (VS Code) et utiliser tes
propres modules ou fichiers Python dans un projet, voici les points essentiels à connaître :

1. Organisation des fichiers dans un même dossier ou workspace


Pour que l’import fonctionne facilement, place ton fichier principal (par exemple
[Link]) et ton module Python (par exemple mon_module.py) dans le même dossier
ou dans un dossier inclus dans ton workspace VS Code. Cela évite les erreurs de type
ModuleNotFoundError dues à un mauvais chemin3.
2. Syntaxe d’import classique
Dans ton fichier principal, tu peux importer ton module avec :

python
import mon_module

ou importer des fonctions/classes spécifiques :

python
from mon_module import ma_fonction

3. Configurer le chemin Python si nécessaire


Si tes modules sont dans des sous-dossiers, tu peux ajouter un fichier __init__.py
dans ces dossiers pour les rendre des packages Python, ou modifier la variable
d’environnement PYTHONPATH pour inclure ces dossiers. Cela permet à Python de
trouver tes modules lors de l’import3.
4. Utiliser l’explorateur de fichiers VS Code
Crée et organise tes fichiers directement dans VS Code via l’explorateur de fichiers.
Utilise l’option New File pour créer tes scripts .py et garde une structure claire12.
5. Exécution et débogage
Une fois les imports en place, tu peux exécuter ton script principal dans VS Code via
le bouton "Run Python File" ou le terminal intégré. VS Code détecte automatiquement
les erreurs d’import et te les signale25.
6. Exemple simple
o mon_module.py :
python
pi = 3.14
def aire_cercle(rayon):
return pi * rayon ** 2

o [Link] :

python
import mon_module
print(mon_module.pi)
print(mon_module.aire_cercle(5))

7. Assure-toi que ces fichiers sont dans le même dossier pour que l’import fonctionne
sans problème3.

En résumé :
Pour importer tes propres scripts dans VS Code, place-les dans le même dossier ou un dossier
reconnu par Python, utilise une syntaxe d’import classique, et organise bien ton projet dans
l’explorateur VS Code. Si tu as des sous-dossiers, pense à gérer les packages avec
__init__.py ou à configurer PYTHONPATH. Ensuite, tu peux exécuter et déboguer ton code
facilement dans VS Code.

La bibliothèque standard de Python est un ensemble très complet de modules et de


packages intégrés fournis avec l’installation de Python. Elle offre des solutions prêtes à
l’emploi pour de nombreux besoins courants en programmation, ce qui évite de réinventer la
roue ou d’installer des bibliothèques externes inutiles.

Points clés sur la bibliothèque standard Python :


 Modules intégrés : Certains modules sont écrits en C pour offrir un accès performant
à des fonctionnalités système comme la gestion des fichiers, les opérations sur les
chemins, la manipulation des dates et heures, la gestion des processus, ou encore les
communications réseau.
 Modules en Python : D’autres modules sont écrits en Python et fournissent des outils
standardisés pour des tâches fréquentes, comme la gestion des fichiers compressés, le
traitement des données textuelles, la sérialisation (pickle, json), ou encore la gestion
des expressions régulières.
 Portabilité : Ces modules sont conçus pour fonctionner de manière uniforme sur
différentes plateformes (Windows, Linux, macOS), en masquant les spécificités
propres à chaque système.
 Disponibilité : La bibliothèque standard est incluse dans toute installation officielle de
Python, ce qui garantit que ces modules sont toujours disponibles sans installation
supplémentaire.
 Exemples courants : os pour l’interaction avec le système d’exploitation, sys pour
accéder aux variables et fonctions liées à l’interpréteur, math pour les fonctions
mathématiques, datetime pour manipuler les dates, json pour le format JSON, ou
encore re pour les expressions régulières.

Avantages d’utiliser la bibliothèque standard :


 Fiabilité et performance : Les modules sont bien testés et optimisés, ce qui assure
une bonne robustesse et efficacité.
 Lisibilité et maintenabilité : Utiliser des modules standards rend le code plus clair et
plus facile à comprendre pour d’autres développeurs.
 Pas de dépendances externes : Cela simplifie la distribution et l’exécution de ton
code, car tu n’as pas besoin d’installer des packages tiers.

Utilisation dans Visual Studio Code (VS Code) :


 VS Code, avec l’extension Python officielle, supporte parfaitement l’utilisation des
modules de la bibliothèque standard.
 L’auto-complétion (IntelliSense) te propose les fonctions et classes de ces modules
pendant que tu codes.
 Le débogueur intégré te permet d’inspecter les variables et le comportement des
modules standards dans ton programme.

En résumé :
La bibliothèque standard Python est un outil puissant et incontournable qui fournit une vaste
gamme de modules prêts à l’emploi, garantissant portabilité, fiabilité et simplicité. Elle est
intégrée à toute installation Python et parfaitement prise en charge dans VS Code, facilitant

Les bibliothèques tierces (third-party libraries) en Python sont des modules ou packages
développés par la communauté pour étendre les fonctionnalités offertes par la bibliothèque
standard. Elles permettent d’ajouter facilement des outils spécialisés, des frameworks, ou des
fonctionnalités avancées à tes projets Python.

Installation des bibliothèques tierces


La méthode principale pour installer ces bibliothèques est d’utiliser pip, le gestionnaire de
paquets officiel de Python. Pip télécharge et installe les modules depuis le dépôt officiel
appelé PyPI (Python Package Index), qui est une sorte de "magasin d’applications" pour
Python123.

Étapes pour installer une bibliothèque tierce :


1. Vérifier que pip est installé
o Sur Python 3.4 et versions ultérieures, pip est installé par défaut.
o Sinon, il faut l’installer manuellement (exemple sous Linux : sudo apt-get
install python3-pip)134.
2. Installer une bibliothèque avec pip
Ouvre un terminal (ou l’invite de commandes sous Windows) et tape :

bash
pip install nom_du_package

Par exemple :

bash
pip install requests
Si tu as plusieurs versions de Python, tu peux préciser :

bash
python3 -m pip install requests

ou sous Windows :

bash
py -3 -m pip install requests

3. Installer pour l’utilisateur seulement


Pour éviter d’avoir besoin des droits administrateurs, tu peux installer un package
uniquement pour ton utilisateur avec l’option --user :

bash
pip install --user nom_du_package

4. Installer à partir d’autres sources


o Depuis un fichier local .[Link] ou .whl
o Depuis un dépôt alternatif (exemple : un serveur privé)
o En mode editable pour du développement local
Ces cas sont un peu plus avancés mais pip supporte tous ces scénarios2.

Utilisation dans Visual Studio Code (VS Code)


 VS Code détecte automatiquement les environnements Python et leurs packages
installés.
 L’extension Python propose l’auto-complétion et la documentation pour les
bibliothèques tierces installées.
 Tu peux installer des packages directement via le terminal intégré de VS Code.
 Pour gérer plusieurs environnements (venv, conda), assure-toi de sélectionner
l’interpréteur Python approprié dans VS Code.

Exemples de bibliothèques tierces populaires


Bibliothèque Usage principal
requests Requêtes HTTP simples et puissantes
numpy Calcul scientifique et manipulation de tableaux
pandas Analyse et manipulation de données
matplotlib Visualisation graphique
scikit-learn Machine learning
flask Création d’applications web légères

Résumé
 Les bibliothèques tierces permettent d’étendre Python au-delà de la bibliothèque
standard.
 pip est l’outil principal pour installer ces packages depuis PyPI.
 L’installation est simple et rapide via la ligne de commande.
 VS Code facilite leur gestion grâce à son intégration Python.

NumPy (Numerical Python) est une bibliothèque fondamentale et open-source pour le calcul
numérique et scientifique en Python126. Créée en 2005 par Travis Oliphant, elle est devenue
un outil essentiel pour les professionnels travaillant avec de grands ensembles de données qui
nécessitent des calculs intensifs, notamment en science des données, en apprentissage
automatique et en ingénierie1356.

Fonctionnalités Clés de NumPy :


 Tableaux multidimensionnels (ndarray) : Au cœur de NumPy se trouve l'objet
ndarray, un tableau N-dimensionnel. Contrairement aux listes Python, les tableaux
NumPy ont une taille fixe à la création, stockent des éléments de même type de
données (homogènes) et sont stockés dans des emplacements de mémoire contigus, ce
qui permet des calculs beaucoup plus rapides (jusqu'à 50 fois plus vite que les listes
Python) grâce à la "localité de référence"12356.
 Performances élevées : Les opérations sur les tableaux NumPy sont souvent
exécutées dans du code compilé (C ou C++), ce qui assure une grande efficacité et des
performances rapides pour le traitement de grandes quantités de données235.
 Vectorisation : NumPy permet d'appliquer des opérations directement sur des
tableaux entiers, éliminant ainsi le besoin de boucles Python explicites. Cela simplifie
le code et améliore les performances156.
 Broadcasting : Cette fonctionnalité permet d'effectuer des calculs élément par
élément entre des tableaux de formes différentes sans créer de nouvelles données, ce
qui simplifie les opérations sur des tableaux de diverses dimensions156.
 Fonctions mathématiques et statistiques : NumPy intègre un large éventail de
fonctions pour des opérations mathématiques (trigonométriques, logarithmiques),
statistiques (moyenne, écart-type) et d'algèbre linéaire (multiplication matricielle,
décomposition, déterminants)1256. Il inclut également un générateur de nombres
aléatoires robuste, utile pour les simulations56.
 Intégration : NumPy s'intègre parfaitement avec d'autres bibliothèques Python
populaires telles que SciPy, Pandas, Matplotlib et TensorFlow, augmentant ainsi ses
capacités pour l'analyse de données et l'apprentissage automatique6.

Installation et Utilisation :
Pour utiliser NumPy, il faut d'abord l'installer via pip : pip install numpy15. Ensuite, la
bibliothèque est généralement importée avec l'alias np : import numpy as np1.

En résumé, NumPy est la bibliothèque fondamentale pour le calcul scientifique en Python,


offrant des structures de données rapides et efficaces pour les tableaux multidimensionnels et
une multitude de fonctions pour les opérations numériques complexes. Elle constitue la base
de nombreuses autres bibliothèques et est largement utilisée dans la science des données, le
machine learning et les domaines nécessitant des calculs intensifs1245.

Qu’est-ce que NumPy ?


 NumPy signifie Numerical Python.
 C’est une bibliothèque open-source qui facilite la manipulation efficace de tableaux
multidimensionnels (appelés ndarray) et propose de nombreuses fonctions
mathématiques et statistiques optimisées268.

Pourquoi utiliser NumPy ?


 Les listes Python sont flexibles mais lentes pour les calculs numériques lourds.
 NumPy offre des tableaux homogènes (mêmes types d’éléments) stockés en mémoire
contiguë, ce qui accélère considérablement les opérations (jusqu’à 50 fois plus rapide
que les listes Python)6.
 Elle permet la vectorisation, c’est-à-dire appliquer des opérations sur des tableaux
entiers sans boucles explicites, rendant le code plus simple et plus performant6.

Fonctionnalités principales
 Création de tableaux : à partir de listes Python, ou via des fonctions spécialisées
([Link](), [Link](), [Link](), [Link](), [Link](), etc.)7.
 Manipulation des dimensions : NumPy gère les tableaux à 1D, 2D, 3D, etc., avec des
attributs comme .shape (forme) et .ndim (nombre de dimensions)47.
 Indexation et slicing : accès et modification facile des éléments, lignes, colonnes,
sous-tableaux7.
 Fonctions mathématiques et statistiques : opérations arithmétiques,
trigonométriques, algèbre linéaire, statistiques, génération de nombres aléatoires6.

Exemple simple en Python


python
import numpy as np

# Création d'un tableau NumPy à partir d'une liste Python


arr = [Link]([1, 2, 3, 4, 5])
print(arr) # Affiche : [1 2 3 4 5]
print(type(arr)) # Affiche : <class '[Link]'>

# Création d'un tableau 2D


mat = [Link]([[1, 2, 3], [4, 5, 6]])
print([Link]) # Affiche : (2, 3)

En résumé
NumPy est la base du calcul scientifique en Python. Elle fournit des structures de données
efficaces et des outils puissants pour manipuler des données numériques, ce qui en fait un
incontournable pour la science des données, l’ingénierie et le machine learning126.

Voici pourquoi utiliser NumPy est essentiel pour le calcul scientifique et la manipulation de
données en Python :

1. Performance exceptionnelle
Les opérations sur les tableaux NumPy sont exécutées à la vitesse du code compilé en C, ce
qui les rend beaucoup plus rapides que les opérations équivalentes sur des listes Python
classiques. Cette rapidité est cruciale pour traiter de grands ensembles de données ou effectuer
des calculs complexes efficacement1237.

2. Efficacité mémoire
Les tableaux NumPy utilisent des blocs de mémoire contigus et stockent des éléments
homogènes (du même type), ce qui réduit considérablement la surcharge mémoire comparée
aux listes Python qui peuvent contenir des types mixtes. Cette optimisation permet un accès et
une manipulation des données plus rapides et plus économes en mémoire124.

3. Richesse fonctionnelle
NumPy offre une vaste collection de fonctions mathématiques, statistiques, d’algèbre linéaire,
de transformations de Fourier, et de génération de nombres aléatoires. Ces outils facilitent les
calculs scientifiques complexes et la manipulation avancée des données1479.

4. Vectorisation et broadcasting
NumPy permet d’appliquer des opérations sur des tableaux entiers sans écrire de boucles
explicites, grâce à la vectorisation. Le broadcasting permet d’opérer sur des tableaux de
formes différentes sans copier les données, rendant le code plus simple et plus performant27.

5. Intégration avec l’écosystème scientifique Python


NumPy est la base de nombreuses autres bibliothèques comme SciPy (calcul scientifique
avancé), Pandas (analyse de données), Matplotlib (visualisation), et scikit-learn (machine
learning). Cette interopérabilité en fait un pilier incontournable pour la science des données et
l’ingénierie1267.

6. Cas d’usage variés


 Analyse et prétraitement de données
 Calculs scientifiques (physique, biologie, finance, ingénierie)
 Machine learning et intelligence artificielle
 Simulations numériques et modélisations complexes156

En résumé :
NumPy est indispensable pour manipuler efficacement des données numériques en Python. Sa
rapidité, son efficacité mémoire, sa richesse fonctionnelle et son intégration avec d’autres
outils en font la bibliothèque de référence pour la science des données, le calcul scientifique et
le machine learning.

Les tableaux NumPy (ndarray) sont la structure de données centrale de la bibliothèque


NumPy. Ils permettent de stocker et manipuler efficacement des données numériques dans des
tableaux multidimensionnels.
Caractéristiques principales des tableaux NumPy :
 Homogénéité des données : Tous les éléments d’un tableau NumPy doivent être du
même type (par exemple, tous des entiers ou tous des flottants). Cela garantit une
gestion mémoire optimisée et des calculs rapides.
 Multidimensionnalité : Un tableau NumPy peut être à une dimension (vecteur), deux
dimensions (matrice) ou plus (tenseurs). Par exemple, un tableau 2D peut représenter
une image ou une matrice mathématique.
 Attributs importants :
o .shape : donne la forme du tableau (nombre de lignes, colonnes, etc.)
o .dtype : indique le type des éléments stockés (int32, float64, etc.)
o .ndim : nombre de dimensions du tableau
o .size : nombre total d’éléments dans le tableau
 Création de tableaux :
On peut créer un tableau à partir d’une liste Python avec [Link](), ou utiliser des
fonctions spécifiques comme [Link](), [Link](), [Link](),
[Link]() pour générer des tableaux avec des valeurs initiales précises.
 Indexation et slicing :
Les tableaux NumPy supportent l’accès aux éléments par indices, ainsi que le slicing
(extraction de sous-tableaux) similaire aux listes Python, mais avec plus de puissance
pour les tableaux multidimensionnels.
 Opérations vectorisées :
Les opérations arithmétiques s’appliquent élément par élément sans boucle explicite,
ce qui rend le code plus simple et beaucoup plus rapide.

Exemple simple :
python
import numpy as np

# Création d'un tableau 1D


arr = [Link]([10, 20, 30, 40])
print([Link]) # (4,)
print([Link]) # int64 (selon la machine)

# Création d'un tableau 2D


mat = [Link]([[1, 2, 3], [4, 5, 6]])
print([Link]) # (2, 3)
print([Link]) # 2

# Opération vectorisée
print(arr * 2) # [20 40 60 80]

En résumé :
Les tableaux NumPy sont des structures puissantes, rapides et flexibles pour manipuler des
données numériques multidimensionnelles. Leur homogénéité et leurs fonctionnalités
avancées en font un outil incontournable pour le calcul scientifique et l’analyse de données en
Python.

Voici un développement clair sur la modification de la forme (reshaping), l’accès et la


modification des tableaux NumPy :
1. Reshaping (Changer la forme d’un tableau)
 La méthode reshape() permet de modifier la forme d’un tableau sans changer ses
données.
 Par exemple, transformer un tableau 1D en tableau 2D, ou changer le nombre de
lignes et colonnes.
 La nouvelle forme doit être compatible avec le nombre total d’éléments (produit des
dimensions identique).

Exemple :

python
import numpy as np

arr = [Link](12) # Crée un tableau 1D de 0 à 11


print([Link]) # (12,)

mat = [Link](3, 4) # Change en tableau 2D de 3 lignes et 4 colonnes


print(mat)
# Affiche :
# [[ 0 1 2 3]
# [ 4 5 6 7]
# [ 8 9 10 11]]

2. Accéder aux éléments


 NumPy permet d’accéder aux éléments par indices, comme avec les listes Python.
 Pour un tableau 2D, on utilise mat[i, j] pour accéder à l’élément à la ligne i et
colonne j.
 Le slicing fonctionne aussi : mat[0:2, 1:3] extrait un sous-tableau.

Exemple :

python
print(mat[1, 2]) # Affiche 6 (ligne 1, colonne 2)
print(mat[:, 1]) # Affiche la 2e colonne entière : [1 5 9]
print(mat[0:2, 1:3]) # Sous-matrice des 2 premières lignes, colonnes 1 et 2

3. Modifier les éléments


 On peut modifier des éléments individuellement ou par tranche.
 Par exemple, affecter une valeur à un élément ou à un sous-tableau.

Exemple :

python
mat[0, 0] = 100
print(mat[0, 0]) # Affiche 100

mat[:, 2] = 50 # Remplace toute la 3e colonne par 50


print(mat)
4. Autres opérations utiles
 flatten() ou ravel() pour aplatir un tableau multidimensionnel en 1D.
 resize() modifie la taille du tableau en place (attention aux pertes de données).
 transpose() pour permuter les axes (exemple : transformer lignes en colonnes).

En résumé :
Le reshaping permet de changer la forme des tableaux sans toucher aux données. L’accès et la
modification des éléments se font facilement avec la syntaxe d’indices et de slicing, ce qui
rend NumPy très flexible pour manipuler des données multidimensionnelles.

Le slicing (découpage) dans NumPy permet d’extraire une portion d’un tableau de manière
simple et efficace, en utilisant la syntaxe suivante :

array[start:stop:step]\texttt{array[start:stop:step]}array[start:stop:step]

 start : indice de début (inclusif, par défaut 0)


 stop : indice de fin (exclusif, par défaut la fin du tableau)
 step : pas entre chaque élément (par défaut 1)

Exemple simple de slicing sur un tableau 1D


python
import numpy as np

arr = [Link](10) # tableau [0 1 2 3 4 5 6 7 8 9]

sliced_arr = arr[1:6] # éléments d’indice 1 à 5 inclus


print(sliced_arr) # affiche [1 2 3 4 5]

Cas courants
 arr[:] : retourne tout le tableau
 arr[start:] : du début start jusqu’à la fin
 arr[:stop] : du début jusqu’à stop-1
 arr[start:stop:step] : avec un pas step pour sauter des éléments

Slicing sur tableaux multidimensionnels


Pour un tableau 2D, on précise la tranche pour chaque dimension séparée par une virgule :

python
mat = [Link]([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])

sub_mat = mat[0:2, 1:3] # lignes 0 et 1, colonnes 1 et 2


print(sub_mat)
# [[2 3]
# [5 6]]
Attention aux vues et copies
 Le slicing retourne une vue sur le tableau original, pas une copie.
 Modifier les éléments de la tranche modifie aussi le tableau d’origine.
 Pour créer une copie indépendante, utilise .copy() :

python
sub_arr = arr[1:6].copy()

En résumé
 Le slicing est un outil puissant pour extraire des sous-parties d’un tableau NumPy.
 Il utilise la syntaxe [start:stop:step] avec des règles simples.
 Fonctionne aussi bien sur tableaux 1D que multidimensionnels.
 Par défaut, le slicing crée une vue, pas une copie.

Voici un développement clair sur les opérations d’insertion, ajout (append) et suppression
dans les tableaux NumPy, qui sont des manipulations fréquentes lors du traitement de données
:

1. Insertion dans un tableau NumPy


 La fonction [Link]() permet d’insérer des éléments à une position donnée dans
un tableau.
 Syntaxe :

python
[Link](arr, index, values, axis=None)

o arr : tableau d’origine


o index : position où insérer (peut être un entier ou une liste d’indices)
o values : valeur(s) à insérer
o axis : dimension le long de laquelle insérer (None pour tableau aplati)

Exemple :

python
import numpy as np

arr = [Link]([1, 2, 3, 4])


new_arr = [Link](arr, 2, 99) # insère 99 à l’indice 2
print(new_arr) # [ 1 2 99 3 4]

2. Ajout d’éléments (Append)


 La fonction [Link]() ajoute des éléments à la fin d’un tableau.
 Syntaxe :

python
[Link](arr, values, axis=None)
o values peut être un seul élément ou un tableau.
o Si axis est None (par défaut), le tableau est aplati avant l’ajout.

Exemple :

python
arr = [Link]([1, 2, 3])
arr_appended = [Link](arr, [4, 5])
print(arr_appended) # [1 2 3 4 5]

3. Suppression d’éléments
 La fonction [Link]() supprime des éléments à des indices spécifiés.
 Syntaxe :

python
[Link](arr, obj, axis=None)

o obj peut être un entier, une liste d’indices ou une tranche (slice).
o axis indique la dimension le long de laquelle supprimer.

Exemple :

python
arr = [Link]([10, 20, 30, 40, 50])
arr_deleted = [Link](arr, [1, 3]) # supprime éléments aux indices 1 et 3
print(arr_deleted) # [10 30 50]

Remarques importantes
 Ces fonctions ne modifient pas le tableau original mais retournent un nouveau
tableau modifié.
 Pour modifier un tableau en place, il faudrait réaffecter la variable :

python
arr = [Link](arr, 6)

 Pour les tableaux multidimensionnels, il faut préciser l’axe pour insérer ou supprimer
correctement.

En résumé :
NumPy propose des fonctions pratiques pour insérer, ajouter ou supprimer des éléments dans
des tableaux, mais ces opérations créent toujours un nouveau tableau. Il est important de bien
gérer la réaffectation si tu souhaites conserver les modifications.

Voici une explication claire sur le indexage logique (ou booléen) des tableaux NumPy, une
technique puissante pour sélectionner des éléments selon des conditions :

Indexage logique avec NumPy


Qu’est-ce que c’est ?
 L’indexage logique consiste à utiliser un tableau de booléens ( True/False) pour
sélectionner des éléments d’un tableau NumPy.
 Ce tableau booléen a la même forme que le tableau original, et chaque True indique
que l’élément correspondant doit être sélectionné.

Comment ça marche ?
1. On applique une condition sur un tableau NumPy, ce qui retourne un tableau booléen.
2. On utilise ce tableau booléen pour extraire les éléments correspondants.

Exemple simple :
python
import numpy as np

arr = [Link]([10, 15, 20, 25, 30])

# Condition : sélectionner les éléments > 18


mask = arr > 18
print(mask)
# Affiche : [False False True True True]

# Utilisation du masque pour extraire les valeurs


filtered_arr = arr[mask]
print(filtered_arr)
# Affiche : [20 25 30]

Utilisation directe sans variable intermédiaire :


python
filtered_arr = arr[arr > 18]
print(filtered_arr) # [20 25 30]

Avantages
 Permet de filtrer facilement les données selon des critères complexes.
 Fonctionne aussi avec des tableaux multidimensionnels.

En résumé
L’indexage logique est une méthode simple et efficace pour extraire des éléments d’un
tableau NumPy en fonction de conditions. C’est un outil fondamental pour le traitement et
l’analyse des données.

Voici une explication détaillée et claire sur le concept de broadcasting en NumPy, une
fonctionnalité puissante qui facilite les opérations sur des tableaux de formes différentes.
Broadcasting en NumPy
Qu’est-ce que le broadcasting ?
Le broadcasting est un mécanisme qui permet à NumPy d’effectuer des opérations
arithmétiques entre des tableaux de formes différentes, en "étendant" automatiquement les
plus petits tableaux pour qu’ils correspondent à la forme des plus grands, sans copier
réellement les données.

Cela rend le code plus simple, plus lisible et plus efficace.

Règles principales du broadcasting


Pour que le broadcasting fonctionne, NumPy applique ces règles :

1. Comparer les dimensions des deux tableaux à partir de la fin (c’est-à-dire de la


dernière dimension vers la première).
2. Deux dimensions sont compatibles si :
o Elles sont égales, ou
o L’une des deux est égale à 1.
3. Si une dimension est égale à 1, NumPy "étire" cette dimension pour correspondre à
l’autre.

Si ces règles ne sont pas respectées, une erreur de diffusion ( ValueError) est levée.

Exemple simple
python
import numpy as np

# Tableau 1 : forme (3, 1)


a = [Link]([[1], [2], [3]])

# Tableau 2 : forme (1, 4)


b = [Link]([10, 20, 30, 40])

# Addition avec broadcasting


c=a+b

print(c)

Explication :

 a a la forme (3,1)
 b a la forme (1,4)
 NumPy étire a sur la deuxième dimension et b sur la première pour obtenir une forme
commune (3,4)
 Résultat :

text
[[11 21 31 41]
[12 22 32 42]
[13 23 33 43]]

Autres exemples courants


 Ajouter un scalaire à un tableau : le scalaire est broadcasté sur toute la forme du
tableau.
 Multiplier une matrice par un vecteur ligne ou colonne.
 Opérations entre tableaux 1D de tailles différentes, si compatibles.

Avantages du broadcasting
 Économie de mémoire : pas besoin de créer de grandes copies des données.
 Code plus concis : évite les boucles explicites.
 Performance : opérations optimisées en C sous-jacent.

En résumé
Le broadcasting permet à NumPy de gérer automatiquement les opérations entre tableaux de
formes différentes en étendant les dimensions compatibles. C’est une fonctionnalité clé pour
écrire du code efficace et élégant en calcul scientifique.

Voici un résumé clair et structuré de la leçon que tu as suivie dans ce module :

Résumé de la leçon
 Syntaxe Python : La syntaxe correspond aux règles précises d’utilisation de chaque
mot-clé en Python, ce qui garantit que le code est correct et compréhensible par
l’interpréteur.
 Visual Studio Code (VS Code) : C’est l’IDE recommandé pour travailler sur des
projets volumineux, notamment ceux qui impliquent plusieurs langages de
programmation, grâce à ses nombreuses extensions et fonctionnalités.
 Méthode append : En Python, la méthode append sert à ajouter de nouveaux
éléments à la fin d’une liste ou d’un tableau, permettant ainsi de concaténer des
données de façon dynamique.
 Bibliothèque NumPy :
o Contient un large éventail de fonctions mathématiques, algébriques et de
transformation.
o La structure de données principale est le tableau (array), qui permet de
stocker efficacement des collections d’éléments homogènes.
 NumPy en bref :
o C’est une bibliothèque gratuite pour Python, conçue pour effectuer des
opérations mathématiques complexes, particulièrement adaptée au traitement
et à l’analyse de données statistiques.
 Broadcasting : Ce concept décrit comment NumPy gère les opérations arithmétiques
entre des tableaux de formes différentes en étendant automatiquement les dimensions
compatibles, ce qui simplifie et accélère les calculs.
 Structure de données tableau : Un tableau est une collection d’éléments identifiés
par au moins un indice ou une clé, permettant un accès rapide et ordonné aux données.
 Copie des sous-tableaux : Il est recommandé d’utiliser la fonction copy() pour
travailler sur un sous-tableau sans modifier le tableau original, afin d’éviter des effets
de bord non désirés.

Après avoir terminé ce module, tu seras capable de :

 Présenter les nouvelles structures de données introduites par Pandas


Pandas apporte principalement deux structures clés :
o Series : un tableau unidimensionnel étiqueté, capable de contenir des données
de différents types.
o DataFrame : une structure bidimensionnelle, comme une table, composée de
plusieurs Series partageant un même index.
 Décrire les attributs de base d’une Series Pandas
Une Series possède des attributs essentiels tels que :
o index : les étiquettes des éléments, permettant un accès par label.
o values : les données sous-jacentes stockées dans la Series.
o dtype : le type de données contenu dans la Series.
 Définir la manipulation d’une Series Pandas
Cela inclut des opérations comme la sélection, le filtrage, la modification des valeurs,
l’application de fonctions, et le traitement des valeurs manquantes.
 Expliquer l’utilisation des labels pour accéder aux éléments
Contrairement aux listes Python, Pandas permet d’accéder aux éléments par des labels
personnalisés via l’index, grâce aux méthodes .loc[] (accès par label) et .iloc[]
(accès par position numérique).

Voici une introduction complète à Pandas, une bibliothèque Python essentielle pour l’analyse
de données :

Introduction à Pandas

Qu’est-ce que Pandas ?


 Pandas est une bibliothèque open-source Python conçue pour la manipulation et
l’analyse de données structurées.
 Elle facilite le travail avec des ensembles de données tabulaires, comme des tableaux
ou des bases de données, en offrant des structures de données performantes et
flexibles.
 Le nom "Pandas" vient de Panel Data et Python Data Analysis.
 Créée par Wes McKinney en 2008, elle est devenue un outil incontournable en data
science.

Pourquoi utiliser Pandas ?


 Permet d’analyser de grandes quantités de données rapidement et efficacement.
 Offre des fonctions pour nettoyer, explorer, manipuler et transformer les données.
 Facilite la gestion des données manquantes, la fusion, le regroupement, et le filtrage.
 Intègre des outils pour faire des calculs statistiques et tirer des conclusions basées sur
les données.
 Compatible avec d’autres bibliothèques Python comme NumPy, Matplotlib, et scikit-
learn.

Structures de données principales


 Series : un tableau unidimensionnel étiqueté, pouvant contenir des données de
n’importe quel type (numérique, chaîne, objet). Chaque élément a une étiquette
(index) qui facilite l’accès.
 DataFrame : une structure bidimensionnelle, similaire à une table ou une feuille de
calcul, composée de plusieurs Series alignées sur un même index. Elle permet de
stocker des données hétérogènes (différents types par colonne).

Fonctionnalités clés
 Chargement facile de données depuis des fichiers CSV, Excel, bases de données,
JSON, etc.
 Manipulation intuitive des données : sélection, filtrage, tri, regroupement, pivot.
 Gestion des valeurs manquantes et nettoyage des données.
 Calculs statistiques et agrégations.
 Exportation des données transformées vers différents formats.

Exemple simple
python
import pandas as pd

# Chargement d’un fichier CSV dans un DataFrame


df = pd.read_csv('[Link]')

# Afficher les 5 premières lignes


print([Link]())

# Statistiques descriptives rapides


print([Link]())

Où apprendre Pandas ?
 Tutoriels en ligne comme W3Schools, DataCamp, Tutorialspoint.
 Documentation officielle de Pandas.
 Vidéos et cours sur YouTube.
 Exercices pratiques et quiz pour tester tes connaissances.

En résumé, Pandas est un outil puissant et flexible qui simplifie grandement l’analyse de
données en Python, en offrant des structures adaptées et des fonctions avancées pour
manipuler efficacement des données tabulaires.

Une Pandas Series est une structure de données unidimensionnelle étiquetée capable de
contenir des données de n’importe quel type (entiers, flottants, chaînes, objets Python,
etc.)1235. Elle est comparable à une colonne dans une feuille de calcul Excel ou une table de
base de données.

Caractéristiques principales :
 Données et index : Une Series est composée de deux éléments essentiels :
o Les données : les valeurs stockées dans la Series.
o L’index : un ensemble d’étiquettes (labels) qui identifient chaque élément. Par
défaut, l’index est une séquence d’entiers commençant à 0, mais il peut être
personnalisé avec des labels explicites25.
 Types de données : Une Series peut contenir des données homogènes (comme un
tableau NumPy) ou hétérogènes, mais chaque Series a un seul type de données
principal.
 Création :
o À partir d’une liste ou d’un tableau NumPy :

python
import pandas as pd
data = [10, 20, 30, 40]
ser = [Link](data)

o À partir d’un dictionnaire, où les clés deviennent les labels d’index :

python
calories = {"day1": 420, "day2": 380, "day3": 390}
ser = [Link](calories)

o Avec un index personnalisé :

python
ser = [Link](data, index=["a", "b", "c", "d"])

 Accès aux éléments :


o Par position (index numérique) : similaire aux listes Python.
o Par label (index personnalisé) : via .loc[] ou directement avec les crochets.
Exemple :

python
print(ser[0]) # accès par position
print(ser["day1"]) # accès par label

 Fonctions intégrées : La Series offre de nombreuses méthodes pour manipuler, filtrer,


et analyser les données, comme le calcul de statistiques, le tri, la sélection
conditionnelle, etc.

En résumé
La Pandas Series est une structure puissante et flexible pour gérer des données
unidimensionnelles avec des étiquettes, facilitant l’accès et la manipulation des données dans
des contextes d’analyse et de traitement statistique. Elle constitue la base pour construire des
structures plus complexes comme les DataFrames.
Voici un développement complet en français sur la manipulation des Pandas Series, basé
sur les meilleures pratiques et exemples courants :

Manipulation des Pandas Series


Une Pandas Series est une structure de données unidimensionnelle étiquetée, très flexible
pour stocker et manipuler des données. La manipulation des Series permet de préparer,
transformer et analyser efficacement les données.

1. Création et accès aux données


 On crée une Series à partir d’une liste, d’un tableau NumPy ou d’un dictionnaire :

python
import pandas as pd

data = [10, 20, 30, 40]


ser = [Link](data)

calories = {"lundi": 420, "mardi": 380, "mercredi": 390}


ser2 = [Link](calories)

 On accède aux éléments par position ou par label :

python
ser[0] # accès par position
ser2["lundi"] # accès par label

2. Sélection et filtrage
 Utiliser le slicing pour extraire une partie de la Series :

python
ser[:3] # premiers éléments
ser[2:] # éléments à partir de l’indice 2

 Filtrer selon une condition :

python
ser[ser > 15] # éléments supérieurs à 15

3. Modification des données


 Modifier une valeur par index ou label :

python
ser[0] = 15
ser2["mardi"] = 400

 Appliquer des opérations arithmétiques sur toute la Series :


python
ser = ser * 2
ser = ser + 10

4. Gestion des types de données


 Pandas détecte automatiquement le type, mais on peut le préciser ou le convertir :

python
ser = [Link]([1, 2, 3], dtype='float')
ser = [Link]('int64')

5. Manipulations avancées
 Alignement automatique des index lors d’opérations entre Series (les indices sont
pris en compte pour aligner les valeurs).
 Utilisation de méthodes comme .unique(), .value_counts(), .sort_values()
pour analyser les données.
 Gestion des valeurs manquantes avec .isna(), .fillna(), .dropna().

6. Exemples pratiques
python
import pandas as pd

# Création d'une Series


ser = [Link]([10, 20, 30, 40, 50])

# Filtrer les valeurs > 25


filtered = ser[ser > 25]

# Modifier une valeur


ser[2] = 35

# Ajouter une constante à toutes les valeurs


ser = ser + 5

# Convertir le type en float


ser = [Link](float)

print(ser)
print(filtered)

7. Résumé
 Les Series sont des tableaux étiquetés, faciles à manipuler.
 On peut accéder, filtrer, modifier et appliquer des opérations vectorisées.
 La gestion des types et des valeurs manquantes est intégrée.
 Les opérations entre Series tiennent compte des index pour un alignement intelligent.

Voici une introduction détaillée au Pandas DataFrame, une structure de données centrale
pour l’analyse de données en Python :
Pandas DataFrame

Qu’est-ce qu’un DataFrame ?


 Un DataFrame est une structure de données bidimensionnelle, similaire à une table
ou une feuille de calcul, composée de lignes et de colonnes.
 Chaque colonne est une Series Pandas, ce qui signifie qu’elle possède un type de
données homogène et un index.
 Le DataFrame permet de stocker des données hétérogènes, c’est-à-dire que chaque
colonne peut contenir un type différent (nombres, chaînes, booléens, etc.).

Caractéristiques principales
 Index des lignes : Chaque ligne est identifiée par un index, qui peut être numérique ou
étiqueté (personnalisé).
 Colonnes nommées : Chaque colonne a un nom, ce qui facilite l’accès et la
manipulation des données.
 Taille flexible : Le DataFrame peut contenir un grand nombre de lignes et de
colonnes, et sa taille peut être modifiée dynamiquement.

Création d’un DataFrame


 À partir d’un dictionnaire de listes ou de Series :

python
import pandas as pd

data = {
"Nom": ["Alice", "Bob", "Charlie"],
"Âge": [25, 30, 35],
"Ville": ["Paris", "Lyon", "Marseille"]
}
df = [Link](data)

 À partir d’une liste de dictionnaires :

python
data = [
{"Nom": "Alice", "Âge": 25, "Ville": "Paris"},
{"Nom": "Bob", "Âge": 30, "Ville": "Lyon"},
{"Nom": "Charlie", "Âge": 35, "Ville": "Marseille"}
]
df = [Link](data)

 À partir d’un fichier CSV ou Excel :

python
df = pd.read_csv("[Link]")

Accès aux données


 Par nom de colonne :

python
df["Nom"]

 Par ligne avec .loc[] (accès par label) ou .iloc[] (accès par position) :

python
[Link][0] # première ligne
[Link][1] # deuxième ligne

 Sélection de sous-ensembles :

python
[Link][0:1, ["Nom", "Ville"]] # lignes 0 et 1, colonnes Nom et Ville

Manipulation des DataFrames


 Ajout ou suppression de colonnes :

python
df["Salaire"] = [3000, 3500, 4000]
[Link]("Ville", axis=1, inplace=True)

 Filtrage des lignes selon une condition :

python
df_filtered = df[df["Âge"] > 28]

 Tri des données :

python
df_sorted = df.sort_values(by="Âge")

 Gestion des valeurs manquantes, fusion, regroupement, pivot, etc.

Exemple simple complet


python
import pandas as pd

data = {
"Nom": ["Alice", "Bob", "Charlie"],
"Âge": [25, 30, 35],
"Ville": ["Paris", "Lyon", "Marseille"]
}
df = [Link](data)

print([Link]()) # Affiche les premières lignes


print(df["Nom"]) # Affiche la colonne Nom
print([Link][1]) # Affiche la deuxième ligne
print(df[df["Âge"] > 28]) # Filtre les lignes où l’âge > 28
En résumé
Le DataFrame est une structure puissante et flexible pour manipuler des données tabulaires en
Python. Il permet un accès facile aux données, une manipulation intuitive, et s’intègre
parfaitement avec d’autres outils de l’écosystème Python.

Voici un aperçu détaillé des principales opérations de manipulation de DataFrame avec


Pandas, basé sur les meilleures pratiques et exemples courants :

Manipulation des DataFrames avec Pandas

1. Ajouter des colonnes et des lignes


 Ajouter une colonne :
Il suffit d’assigner une liste, une Series ou une valeur à une nouvelle colonne.

python
import pandas as pd

data = {'Name': ['John', 'Emma', 'Michael', 'Sophia'],


'Height': [5.5, 6.0, 5.8, 5.3],
'Qualification': ['BSc', 'BBA', 'MBA', 'BSc']}
df = [Link](data)

df['Address'] = ['New York', 'London', 'Sydney', 'Toronto']

 Ajouter une ligne :


Utiliser [Link]() ou [Link][] pour ajouter une nouvelle ligne. Par exemple :

python
new_row = {'Name': 'Alice', 'Height': 5.7, 'Qualification': 'PhD', 'Address': 'Berlin'}
df = [Link]([df, [Link]([new_row])], ignore_index=True)

2. Supprimer des colonnes et des lignes


 Supprimer une colonne :

python
[Link]('Address', axis=1, inplace=True)

 Supprimer une ligne (par index) :

python
[Link](2, axis=0, inplace=True) # supprime la 3e ligne (index 2)

3. Renommer des colonnes ou des index


 Renommer les colonnes :

python
[Link](columns={'Height': 'Height_ft'}, inplace=True)
 Renommer les index :

python
[Link](index={0: 'row1', 1: 'row2'}, inplace=True)

4. Sélection et filtrage
 Sélectionner des colonnes :

python
df['Name']
df[['Name', 'Qualification']]

 Filtrer les lignes selon une condition :

python
df_filtered = df[df['Height'] > 5.5]

 Sélection par position ou label :

python
[Link][0, 'Name'] # accès par label
[Link][1, 2] # accès par position

5. Trier les données


 Trier par une ou plusieurs colonnes :

python
df_sorted = df.sort_values(by='Height', ascending=False)

6. Gestion des valeurs manquantes


 Supprimer les lignes ou colonnes avec des valeurs manquantes :

python
[Link](axis=0, inplace=True) # lignes
[Link](axis=1, inplace=True) # colonnes

 Remplacer les valeurs manquantes :

python
[Link](value=0, inplace=True)

7. Fusion et concaténation
 Fusionner deux DataFrames sur une clé commune :

python
df_merged = [Link](df1, df2, on='key')
 Concaténer plusieurs DataFrames verticalement ou horizontalement :

python
df_concat = [Link]([df1, df2], axis=0) # vertical
df_concat = [Link]([df1, df2], axis=1) # horizontal

Exemple complet
python
import pandas as pd

data = {'Name': ['John', 'Emma', 'Michael', 'Sophia'],


'Height': [5.5, 6.0, 5.8, 5.3],
'Qualification': ['BSc', 'BBA', 'MBA', 'BSc']}
df = [Link](data)

# Ajouter une colonne


df['Address'] = ['New York', 'London', 'Sydney', 'Toronto']

# Filtrer les personnes mesurant plus de 5.5


tall_people = df[df['Height'] > 5.5]

# Supprimer une colonne


[Link]('Address', axis=1, inplace=True)

# Renommer une colonne


[Link](columns={'Height': 'Height_ft'}, inplace=True)

print(df)
print(tall_people)

En résumé :
La manipulation des DataFrames avec Pandas inclut l’ajout, la suppression, le renommage, la
sélection, le filtrage, le tri, la gestion des valeurs manquantes, ainsi que la fusion et
concaténation de données. Ces opérations permettent de transformer et préparer efficacement
les données pour l’analyse.

Voici un guide complet en français sur la gestion des valeurs manquantes (missing values)
dans les DataFrames Pandas, un aspect crucial pour garantir la qualité des analyses de
données.

Gestion des valeurs manquantes avec Pandas

1. Identifier les valeurs manquantes


 Les valeurs manquantes sont souvent représentées par NaN (Not a Number) dans
Pandas.
 Pour détecter les valeurs manquantes dans un DataFrame :

python
import pandas as pd

[Link]() # Retourne un DataFrame booléen indiquant True pour les valeurs manquantes
[Link]() # Equivalent à isna()
[Link]().sum() # Nombre de valeurs manquantes par colonne
2. Supprimer les valeurs manquantes
 Supprimer les lignes contenant au moins une valeur manquante :

python
df_clean = [Link](axis=0)

 Supprimer les colonnes contenant au moins une valeur manquante :

python
df_clean = [Link](axis=1)

 Supprimer les lignes où toutes les valeurs sont manquantes :

python
df_clean = [Link](how='all')

 Supprimer les lignes avec un nombre minimum de valeurs non manquantes :

python
df_clean = [Link](thresh=3) # Garder les lignes avec au moins 3 valeurs non-nulles

3. Remplacer les valeurs manquantes (imputation)


 Remplacer par une constante :

python
df_filled = [Link](0)

 Remplacer par la moyenne, médiane ou mode d’une colonne :

python
mean_val = df['colonne'].mean()
df['colonne'].fillna(mean_val, inplace=True)

 Remplacer par la valeur précédente ou suivante (forward/backward fill) :

python
[Link](method='ffill', inplace=True) # Remplace par la valeur précédente
[Link](method='bfill', inplace=True) # Remplace par la valeur suivante

4. Remplissage conditionnel
 On peut remplir les valeurs manquantes uniquement dans certaines colonnes :

python
df['colonne1'].fillna(0, inplace=True)
df['colonne2'].fillna(method='ffill', inplace=True)

5. Vérification après traitement


 Toujours vérifier que les valeurs manquantes ont bien été traitées :

python
print([Link]().sum())

Exemple complet
python
import pandas as pd
import numpy as np

data = {
'Nom': ['Alice', 'Bob', 'Charlie', 'David'],
'Âge': [25, [Link], 30, 22],
'Salaire': [50000, 60000, [Link], 45000]
}

df = [Link](data)

print("Valeurs manquantes par colonne :")


print([Link]().sum())

# Remplacer les âges manquants par la moyenne


df['Âge'].fillna(df['Âge'].mean(), inplace=True)

# Supprimer les lignes où le salaire est manquant


[Link](subset=['Salaire'], inplace=True)

print("\nDataFrame après traitement :")


print(df)

En résumé
 Identifier les valeurs manquantes est la première étape essentielle.
 On peut choisir de supprimer ou d’imputer ces valeurs selon le contexte et la quantité
de données manquantes.
 Pandas offre des méthodes simples et efficaces pour gérer ces cas.
 Un bon traitement des valeurs manquantes améliore la qualité et la fiabilité des
analyses.

Voici un résumé clair et structuré du module que tu as suivi :

Résumé de la leçon
 DataFrame :
La structure de données DataFrame est idéale pour manipuler des données tabulaires,
offrant une organisation en lignes et colonnes facile à gérer.
 Pandas :
C’est un outil open-source rapide, puissant, flexible et simple d’utilisation pour
l’analyse et la manipulation de données.
 Fonctionnalités de Pandas :
Pandas propose des dizaines de fonctions pour le nettoyage, la manipulation et
l’analyse des données.
 Interopérabilité :
Pandas facilite l’interfaçage avec différents formats de fichiers et bases de données,
comme les fichiers texte, Excel, SQL, et HDF5.
 Indexation :
Les labels d’index sont utilisés pour accéder aux éléments dans les structures Pandas,
permettant un accès précis et intuitif.
 Pandas Series :
Une Series peut contenir n’importe quel type de données, avec un index assigné à
chaque élément pour un accès facilité.
C’est une structure unidimensionnelle.
 DataFrame :
C’est une structure bidimensionnelle composée de lignes et de colonnes, où les labels
permettent d’accéder aux éléments, lignes et colonnes.
 Insertion de colonnes :
La méthode insert permet d’ajouter facilement des colonnes dans un DataFrame.
 Valeurs manquantes :
Les valeurs manquantes dans Pandas sont représentées par NaN (Not a Number).
 Résumé des structures :
o La Series représente des objets unidimensionnels.
o Le DataFrame est une structure à deux dimensions.

Ce module t’a permis d’acquérir les bases essentielles pour manipuler efficacement des
données avec Pandas, en comprenant ses structures fondamentales et ses principales
fonctionnalités.

Après avoir terminé ce module, tu seras capable de :

 Comparer la programmation fonctionnelle et la programmation orientée objet


(POO)
Comprendre les différences fondamentales entre ces deux paradigmes :
o La programmation fonctionnelle se concentre sur l’utilisation de fonctions
pures et l’évitement des états modifiables.
o La programmation orientée objet organise le code autour d’objets qui
encapsulent données et comportements.
 Définir les termes clés de la programmation orientée objet
Maîtriser les concepts essentiels tels que :
o Classe : modèle définissant un type d’objet.
o Objet : instance d’une classe.
o Attribut : variable appartenant à un objet ou une classe.
o Méthode : fonction définie dans une classe.
o Encapsulation, héritage, polymorphisme.
 Expliquer le processus de modification des attributs
Savoir comment accéder, modifier ou protéger les attributs d’une classe, notamment
via des méthodes getter/setter ou des propriétés.
 Décrire des exemples de décorateurs intégrés utilisables dans les classes Python
Connaître les décorateurs comme :
o @property pour créer des propriétés calculées.
o @staticmethod pour définir des méthodes statiques.
o @classmethod pour définir des méthodes de classe.
Ces décorateurs facilitent la gestion des attributs et du comportement des
classes.

Voici une comparaison claire et synthétique entre la programmation fonctionnelle (FP) et la


programmation orientée objet (OOP), basée sur les informations issues des sources
récentes :

Aspect Programmation Fonctionnelle (FP) Programmation Orientée Objet


(OOP)
Concept clé Basée sur l’évaluation de fonctions Basée sur des objets encapsulant
pures, sans effets de bord. données et comportements.
Données Données immuables (non Données mutables, l’état des
modifiables). objets peut changer.
Modèle de Déclaratif : décrit ce qu’il faut faire. Impératif : décrit comment faire via
programmation des objets et méthodes.
Gestion de l’état Évite les changements d’état, favorise Encapsulation de l’état dans les
la transparence référentielle. objets, accessible via interfaces.
Composition Favorise la composition de fonctions Utilise l’héritage et la composition
(fonctions d’ordre supérieur). d’objets.
Exécution Les instructions peuvent être Ordre d’exécution strict,
exécutées dans n’importe quel ordre dépendant de l’état des objets.
(parallélisme facilité).
Itération Utilise la récursion. Utilise les boucles classiques (for,
while).
Unités de Fonction. Objet (instance de classe).
manipulation
Effets de bord Minimisés ou évités. Présents, les méthodes peuvent
modifier l’état interne.
Sécurité et Pas de mécanismes natifs pour cacher Supporte l’encapsulation et la
encapsulation les données. protection des données (public,
privé, protégé).
Lisibilité et Code souvent plus concis et déclaratif. Code parfois plus verbeux, mais
concision intuitif pour modéliser des entités
réelles.
Langages typiques Haskell, Lisp, Scheme, Scala Java, C++, Python (orienté objet).
(fonctionnel).

En résumé
 FP privilégie la transformation des données par des fonctions pures, sans modifier
l’état, ce qui rend le code plus prévisible, testable et souvent plus facile à paralléliser.
 OOP organise le code autour d’objets qui combinent données et comportements,
facilitant la modélisation du monde réel et la gestion de la complexité via
l’encapsulation et l’héritage.

Le choix entre FP et OOP dépend du problème à résoudre, des préférences de conception, et


parfois du langage utilisé.
Voici les définitions clés de la programmation orientée objet (OOP) basées sur les sources
récentes :

1. Objet (Object)
Un objet est une instance d’une classe qui combine des attributs (données, état) et des
méthodes (comportements, fonctions). Par exemple, une voiture spécifique avec une couleur
et un modèle est un objet. Chaque objet possède ses propres valeurs pour ses attributs1267.

2. Classe (Class)
Une classe est un modèle ou un plan qui définit les attributs et les méthodes communs à tous
les objets créés à partir de ce modèle. Elle agit comme un blueprint pour créer des objets. Par
exemple, la classe Car définit les caractéristiques générales d’une voiture, tandis que chaque
voiture créée est un objet de cette classe1246.

3. Attribut (Attribute)
Les attributs sont les caractéristiques ou propriétés d’un objet qui décrivent son état. Par
exemple, pour une classe Person, les attributs peuvent être le nom, l’âge, la couleur des
cheveux. Chaque objet a ses propres valeurs pour ces attributs126.

4. Méthode (Method)
Une méthode est une fonction définie dans une classe qui décrit un comportement ou une
action que l’objet peut effectuer. Par exemple, une méthode start_engine() dans une classe
Car démarre le moteur126.

5. Constructeur (Constructor)
Le constructeur est une méthode spéciale utilisée pour initialiser un nouvel objet lors de sa
création, souvent nommée __init__ en Python. Il définit les valeurs initiales des attributs1.

6. Encapsulation
L’encapsulation consiste à protéger les données internes d’un objet en limitant l’accès direct
à ses attributs, souvent via des méthodes getter/setter, pour préserver l’intégrité des
données17.

7. Abstraction
L’abstraction est le processus de cacher les détails complexes et de ne montrer que les
fonctionnalités essentielles d’un objet1.

8. Héritage (Inheritance)
L’héritage permet de créer une nouvelle classe basée sur une classe existante, héritant ainsi
de ses attributs et méthodes, favorisant la réutilisation du code17.

9. Polymorphisme (Polymorphism)
Le polymorphisme permet à différentes classes d’être traitées via une interface commune, où
une même méthode peut avoir des comportements différents selon l’objet qui l’appelle17.

En résumé, la programmation orientée objet organise le code autour d’objets qui combinent
état (attributs) et comportement (méthodes), avec des concepts clés comme la classe,
l’encapsulation, l’héritage et le polymorphisme pour structurer et réutiliser le code
efficacement.

Voici un guide clair pour créer ta première classe en Python, étape par étape :

1. Définir une classe


En Python, on utilise le mot-clé class suivi du nom de la classe avec une majuscule par
convention.

python
class Person:
pass # Le mot-clé pass signifie que la classe est vide pour l'instant

2. Ajouter un constructeur (__init__)


Le constructeur initialise les attributs de l’objet lors de sa création.

python
class Person:
def __init__(self, name, age):
[Link] = name # Attribut name
[Link] = age # Attribut age

 self fait référence à l’instance courante de la classe.


 name et age sont des paramètres passés lors de la création de l’objet.

3. Ajouter des méthodes


Les méthodes définissent les comportements de l’objet.

python
class Person:
def __init__(self, name, age):
[Link] = name
[Link] = age

def greet(self):
print(f"Bonjour, je m'appelle {[Link]} et j'ai {[Link]} ans.")
4. Créer une instance (objet) de la classe
python
person1 = Person("Alice", 30)
[Link]() # Affiche : Bonjour, je m'appelle Alice et j'ai 30 ans.

5. Exemple complet
python
class Person:
def __init__(self, name, age):
[Link] = name
[Link] = age

def greet(self):
print(f"Bonjour, je m'appelle {[Link]} et j'ai {[Link]} ans.")

# Création d’un objet


person1 = Person("Alice", 30)
[Link]()

Résumé
 Une classe est un modèle pour créer des objets.
 Le constructeur initialise les attributs.
 Les méthodes définissent les comportements.
 On crée des instances en appelant la classe avec les paramètres requis.

Voici comment créer et utiliser des objets en Python à partir d’une classe, résumé et
expliqué simplement :

1. Définition d’une classe (blueprint)


Une classe est un modèle qui définit des attributs (données) et des méthodes (fonctions)
communes à tous les objets créés à partir de cette classe.

python
class Dog:
def __init__(self, name, age):
[Link] = name # attribut d’instance
[Link] = age

def bark(self):
print(f"{[Link]} dit : Ouaf !")

 La méthode spéciale __init__() est le constructeur qui initialise les attributs lors de
la création d’un objet.
 self représente l’instance courante.

2. Création d’objets (instanciation)


Pour créer un objet, on appelle la classe comme une fonction, en passant les arguments requis
par __init__().

python
dog1 = Dog("Rex", 5)
dog2 = Dog("Bella", 3)

Chaque objet est une instance distincte avec ses propres valeurs d’attributs.

3. Utilisation des objets


On accède aux attributs et méthodes via la notation pointée (.) :

python
print([Link]) # Affiche: Rex
[Link]() # Affiche: Bella dit : Ouaf !

4. Exemple complet
python
class Dog:
def __init__(self, name, age):
[Link] = name
[Link] = age

def bark(self):
print(f"{[Link]} dit : Ouaf !")

# Création d’objets
dog1 = Dog("Rex", 5)
dog2 = Dog("Bella", 3)

# Utilisation
print([Link]) # Rex
[Link]() # Bella dit : Ouaf !

Points clés
 Instanciation : création d’un objet à partir d’une classe.
 Chaque objet a ses propres attributs.
 Les méthodes définissent le comportement des objets.
 __init__() initialise les objets à la création.

Voici un guide complet sur comment modifier les attributs d’un objet en Python, avec
différentes méthodes et bonnes pratiques :

Modifier les attributs d’un objet en Python


1. Modification directe via la notation pointée
2. Utiliser la fonction setattr()
setattr(objet, nom_attribut, valeur) permet de modifier dynamiquement un attribut,
notamment quand le nom de l’attribut est stocké dans une variable.

python
setattr(p1, "age", 50)
print([Link]) # 50

3. Modifier un attribut via une méthode de classe


On peut définir une méthode dans la classe pour modifier ses propres attributs, ce qui est utile
pour contrôler ou valider les modifications.

python
class Person:
def __init__(self, name, age):
[Link] = name
[Link] = age

def set_age(self, new_age):


if new_age > 0:
[Link] = new_age
else:
print("Âge invalide")

p2 = Person("Bob", 25)
p2.set_age(35)
print([Link]) # 35

4. Modifier un attribut avec property (gestion avancée)


Le décorateur @property permet de créer des getters et setters pour gérer l’accès aux
attributs, par exemple pour valider ou calculer des valeurs.

python
class Person:
def __init__(self, name, age):
[Link] = name
self._age = age # attribut privé par convention

@property
def age(self):
return self._age

@[Link]
def age(self, value):
if value > 0:
self._age = value
else:
raise ValueError("Âge doit être positif")

p3 = Person("Charlie", 20)
[Link] = 30 # Utilise le setter
print([Link]) # 30
# [Link] = -5 # Provoque une erreur ValueError

5. Modifier un attribut dans une fonction externe


Pour modifier un attribut d’un objet dans une fonction, il suffit de passer l’objet et de modifier
son attribut directement.

python
def change_age(person, new_age):
[Link] = new_age

change_age(p1, 60)
print([Link]) # 60

6. Attention aux modifications sur des copies


Passer un attribut par valeur dans une méthode ne modifie pas l’attribut original. Il faut
modifier l’attribut via l’objet lui-même.

python
class Test:
def __init__(self, val):
[Link] = val

def change_val(self, val):


val = val + 1 # modifie seulement la variable locale, pas [Link]

t = Test(10)
t.change_val([Link])
print([Link]) # 10 (inchangé)

# Correct : modifier [Link] directement


class Test2:
def __init__(self, val):
[Link] = val

def change_val(self, val):


[Link] = val + 1

t2 = Test2(10)
t2.change_val([Link])
print([Link]) # 11

En résumé
Méthode Usage principal
Accès direct ([Link] = val) Modification simple et directe
setattr(obj, attr, val) Modification dynamique avec nom d’attribut string
Méthode de classe Contrôle et validation lors de la modification
@property et setter Gestion avancée avec validation et encapsulation
Fonction externe Modifier un attribut en passant l’objet

Voici une explication complète et claire sur les décorateurs en Python, leur utilité,
fonctionnement et exemples d’utilisation, en particulier dans le contexte des classes.
Les Décorateurs en Python

Qu’est-ce qu’un décorateur ?


Un décorateur est une fonction qui prend une autre fonction ou méthode en entrée, la modifie
ou l’enrichit, puis retourne une nouvelle fonction.
En pratique, les décorateurs permettent d’ajouter du comportement à une fonction ou méthode
sans modifier son code source.

Syntaxe de base
python
@decorateur
def fonction():
pass

C’est équivalent à :

python
def fonction():
pass

fonction = decorateur(fonction)

Décorateurs intégrés courants en Python (notamment pour les


classes)

1. @property
 Permet de transformer une méthode en attribut calculé, accessible comme un attribut
classique, mais en exécutant du code à chaque accès.
 Utile pour contrôler l’accès à un attribut ou calculer sa valeur à la volée.

python
class Person:
def __init__(self, age):
self._age = age

@property
def age(self):
return self._age

@[Link]
def age(self, value):
if value < 0:
raise ValueError("L'âge ne peut pas être négatif")
self._age = value

p = Person(30)
print([Link]) # Accès via la propriété
[Link] = 35 # Utilise le setter
2. @staticmethod
 Définit une méthode statique qui n’a pas accès à l’instance ( self) ni à la classe (cls).
 Utile pour regrouper des fonctions liées à la classe mais qui ne manipulent pas les
données de l’objet.

python
class MathUtils:
@staticmethod
def add(x, y):
return x + y

print([Link](5, 3)) # 8

3. @classmethod
 Définit une méthode de classe qui reçoit la classe (cls) comme premier argument au
lieu de l’instance.
 Utile pour créer des méthodes qui affectent la classe entière ou pour des constructeurs
alternatifs.

python
class Person:
population = 0

def __init__(self, name):


[Link] = name
[Link] += 1

@classmethod
def get_population(cls):
return [Link]

p1 = Person("Alice")
p2 = Person("Bob")
print(Person.get_population()) # 2

Exemple complet avec les trois décorateurs


python
class Temperature:
def __init__(self, celsius):
self._celsius = celsius

@property
def celsius(self):
return self._celsius

@[Link]
def celsius(self, value):
if value < -273.15:
raise ValueError("Température en dessous du zéro absolu !")
self._celsius = value

@staticmethod
def to_fahrenheit(c):
return c * 9/5 + 32

@classmethod
def from_fahrenheit(cls, f):
c = (f - 32) * 5/9
return cls(c)

temp = Temperature(25)
print([Link]) # 25
[Link] = 30
print(Temperature.to_fahrenheit(30)) # 86.0
temp2 = Temperature.from_fahrenheit(86)
print([Link]) # 30.0

Pourquoi utiliser les décorateurs ?


 Encapsulation : cacher la complexité derrière une interface simple.
 Réutilisabilité : appliquer un même comportement à plusieurs fonctions ou méthodes.
 Lisibilité : rendre le code plus clair et plus expressif.
 Contrôle d’accès : valider ou modifier les valeurs avant de les affecter.

En résumé
Décorateur Usage principal
@property Créer des attributs calculés avec getter/setter
@staticmethod Méthode liée à la classe sans accès à l’instance
@classmethod Méthode liée à la classe avec accès à la classe

Exercices Pratiques sur les Décorateurs Python


Voici une série d’exercices pratiques pour maîtriser l’utilisation des décorateurs en Python,
spécialement dans le contexte des classes. Chaque exercice est accompagné d’une explication
et d’un exemple de code.

1. Utiliser @property pour contrôler l’accès aux attributs


Objectif : Créer une classe qui utilise un attribut privé et le rend accessible via une propriété,
avec validation.

python
class CompteBancaire:
def __init__(self, solde):
self._solde = solde

@property
def solde(self):
return self._solde

@[Link]
def solde(self, valeur):
if valeur < 0:
raise ValueError("Le solde ne peut pas être négatif.")
self._solde = valeur
# Utilisation
compte = CompteBancaire(100)
print([Link]) # 100
[Link] = 200
# [Link] = -50 # Provoque une erreur

2. Créer une méthode statique avec @staticmethod


Objectif : Ajouter une méthode utilitaire à une classe sans accès à l’instance ni à la classe.

python
class MathUtils:
@staticmethod
def carre(x):
return x * x

print([Link](5)) # 25

3. Créer une méthode de classe avec @classmethod


Objectif : Fournir un constructeur alternatif pour une classe.

python
class Personne:
def __init__(self, nom, age):
[Link] = nom
[Link] = age

@classmethod
def depuis_chaine(cls, chaine):
nom, age = [Link](',')
return cls([Link](), int([Link]()))

p = Personne.depuis_chaine("Alice, 30")
print([Link], [Link]) # Alice 30

4. Créer un décorateur personnalisé pour mesurer le


temps d’exécution
Objectif : Écrire un décorateur qui affiche la durée d’exécution d’une fonction.

python
import time

def timer(func):
def wrapper(*args, **kwargs):
debut = [Link]()
resultat = func(*args, **kwargs)
fin = [Link]()
print(f"Temps d'exécution : {fin - debut:.4f} secondes")
return resultat
return wrapper

@timer
def somme_nombres(n):
return sum(range(n))

somme_nombres(1000000)

5. Utiliser plusieurs décorateurs sur une même méthode


Objectif : Appliquer plusieurs décorateurs pour combiner des comportements.

python
def decorateur1(func):
def wrapper(*args, **kwargs):
print("Début decorateur1")
return func(*args, **kwargs)
return wrapper

def decorateur2(func):
def wrapper(*args, **kwargs):
print("Début decorateur2")
return func(*args, **kwargs)
return wrapper

@decorateur1
@decorateur2
def dire_bonjour():
print("Bonjour !")

dire_bonjour()
# Affiche :
# Début decorateur1
# Début decorateur2
# Bonjour !

6. Décorateurs intégrés dans les classes Python


Décorateur Usage principal Exemple d’utilisation
@property Créer des attributs calculés avec Contrôler l’accès à un attribut privé
getter/setter
@staticmethod Méthode utilitaire sans accès à Calculs indépendants des données
l’instance/classe de l’objet
@classmethod Méthode liée à la classe (ex : Créer des objets à partir de formats
constructeur) variés

7. À toi de jouer !
 Crée une classe Rectangle avec des propriétés largeur et hauteur, et une propriété
calculée surface.
 Ajoute une méthode statique pour vérifier si deux rectangles ont la même surface.
 Ajoute un constructeur alternatif via @classmethod qui crée un rectangle à partir
d’une chaîne de type "10x5".

Astuce : Les décorateurs rendent ton code plus lisible, plus sûr et plus facile à maintenir.
Pratique-les sur tes propres classes pour bien les maîtriser !
Le décorateur @property en Python est une manière pythonique de définir des attributs
dans une classe qui sont en réalité gérés par des méthodes, permettant ainsi de contrôler
l’accès, la modification et la suppression des attributs tout en utilisant une syntaxe simple
d’accès aux attributs.

Qu’est-ce que le décorateur @property ?


 Il transforme une méthode en attribut calculé accessible comme un attribut classique.
 Permet d’implémenter des getters, setters et deleters sans changer la syntaxe d’accès
aux attributs.
 Facilite l’encapsulation et la validation des données dans les classes.

Syntaxe et fonctionnement
Exemple simple avec getter
python
class Circle:
def __init__(self, radius):
self._radius = radius # attribut privé par convention

@property
def radius(self):
print("Accès au radius")
return self._radius

 Ici, radius est une méthode décorée avec @property qui agit comme un getter.
 On accède à radius comme à un attribut : [Link] au lieu de [Link]().

Ajouter un setter
python
@[Link]
def radius(self, value):
print("Modification du radius")
if value < 0:
raise ValueError("Le rayon doit être positif")
self._radius = value

 Le setter permet de valider ou modifier la valeur avant de l’affecter.


 On modifie avec [Link] = 10.

Ajouter un deleter
python
@[Link]
def radius(self):
print("Suppression du radius")
del self._radius
 Le deleter permet de définir ce qui se passe lors d’une suppression d’attribut ( del
[Link]).

Avantages du décorateur @property


 Interface propre : l’utilisateur de la classe utilise des attributs simples, sans appeler
explicitement des méthodes.
 Encapsulation : contrôle total sur la lecture, écriture et suppression des attributs.
 Validation : possibilité d’ajouter des contrôles lors de la modification des valeurs.
 Compatibilité : facilite la maintenance en permettant de changer l’implémentation
interne sans modifier l’interface publique.

Exemple complet
python
class Person:
def __init__(self, age):
self._age = age

@property
def age(self):
print("Getter appelé")
return self._age

@[Link]
def age(self, value):
print("Setter appelé")
if value < 0:
raise ValueError("L'âge ne peut pas être négatif")
self._age = value

@[Link]
def age(self):
print("Deleter appelé")
del self._age

p = Person(25)
print([Link]) # Getter appelé, affiche 25
[Link] = 30 # Setter appelé
del [Link] # Deleter appelé

En résumé
Méthode Décorateur Rôle
def attr(self) @property Getter : accéder à l’attribut
def attr(self, val) @[Link] Setter : modifier l’attribut
def attr(self) @[Link] Deleter : supprimer l’attribut

Le décorateur @classmethod en Python est un outil puissant pour définir des méthodes liées
à la classe plutôt qu’à une instance spécifique. Voici une explication claire et concise :

Qu’est-ce qu’une méthode de classe (@classmethod) ?


 Une méthode décorée avec @classmethod reçoit la classe elle-même comme premier
argument, généralement nommé cls, au lieu de l’instance (self).
 Elle peut accéder ou modifier des attributs de classe, partager des informations entre
toutes les instances, ou fournir des constructeurs alternatifs.

Syntaxe
python
class MaClasse:
@classmethod
def ma_methode_de_classe(cls, args):
# code utilisant cls
pass

Exemple simple
python
class Personne:
population = 0 # attribut de classe

def __init__(self, nom):


[Link] = nom
[Link] += 1

@classmethod
def afficher_population(cls):
print(f"Population actuelle : {[Link]}")

# Utilisation
p1 = Personne("Alice")
p2 = Personne("Bob")

Personne.afficher_population() # Affiche : Population actuelle : 2

Constructeur alternatif avec @classmethod


On peut définir plusieurs façons de créer une instance, par exemple à partir d’une chaîne de
caractères.

python
class Personne:
def __init__(self, nom, age):
[Link] = nom
[Link] = age

@classmethod
def depuis_chaine(cls, chaine):
nom, age = [Link](',')
return cls([Link](), int([Link]()))

p = Personne.depuis_chaine("Alice, 30")
print([Link], [Link]) # Alice 30

Points clés
 @classmethod agit sur la classe, pas sur une instance.
 Le premier paramètre est toujours cls.
 Utile pour accéder/modifier des variables de classe ou créer des constructeurs
alternatifs.
 Peut être appelé sur la classe ou sur une instance.

Voici une explication complète et claire sur les méthodes statiques en Python, leur utilité,
fonctionnement et exemples pratiques.

Méthodes statiques en Python (@staticmethod)

Qu’est-ce qu’une méthode statique ?


 Une méthode statique est une fonction définie dans une classe, mais qui ne dépend ni
de l’instance (self) ni de la classe (cls).
 Elle ne peut pas accéder aux attributs ou méthodes d’instance ou de classe.
 Elle est liée à la classe pour des raisons d’organisation, regroupant des fonctions
utilitaires qui ont un lien logique avec la classe.

Syntaxe
python
class MaClasse:
@staticmethod
def ma_methode_statique(param1, param2):
# code sans accès à self ou cls
return param1 + param2

Pourquoi utiliser une méthode statique ?


 Pour regrouper des fonctions utilitaires liées à la classe, sans avoir besoin d’une
instance.
 Pour éviter de polluer l’espace global avec des fonctions indépendantes.
 Pour clarifier que la méthode ne modifie pas l’état de la classe ou de ses instances.

Exemple simple
python
class MathUtils:
@staticmethod
def additionner(a, b):
return a + b

# Appel sans créer d’instance


resultat = [Link](5, 3)
print(resultat) # 8

Comparaison avec méthode de classe et méthode


d’instance
Type de Premier Accès aux attributs/méthodes Appel possible Appel possible
méthode argument de la classe sur instance sur classe

Méthode Oui (attributs d’instance et de


self Oui Non
d’instance classe)

Méthode de
cls Oui (attributs de classe) Oui Oui
classe

Méthode
Aucun Non Oui Oui
statique

Exemple complet avec les trois types


python
class Exemple:
compteur = 0

def __init__(self):
[Link] += 1

def instance_method(self):
print(f"Instance method appelée. Compteur = {[Link]}")

@classmethod
def class_method(cls):
print(f"Class method appelée. Compteur = {[Link]}")

@staticmethod
def static_method(x, y):
print(f"Static method appelée avec {x} et {y}")
return x + y

e = Exemple()
e.instance_method() # Accès à self
Exemple.class_method() # Accès à cls
print(Exemple.static_method(4, 5)) # Fonction utilitaire

Points importants
 Les méthodes statiques ne peuvent pas modifier l’état de la classe ou de ses instances.
 Elles sont souvent utilisées pour des fonctions utilitaires ou des opérations
indépendantes liées à la classe.
 Peuvent être appelées depuis une instance ou directement depuis la classe.

Voici un guide complet sur l’héritage en Python, couvrant les notions essentielles de A à Z :

Héritage en Python : De A à Z

Qu’est-ce que l’héritage ?


L’héritage est un concept fondamental de la programmation orientée objet (POO) qui permet
à une classe (appelée classe enfant ou classe dérivée) d’hériter des attributs et méthodes
d’une autre classe (appelée classe parente ou classe de base).
Cela favorise la réutilisation du code, la modularité et la hiérarchisation des classes.

1. Classe parente (Parent/Base Class)


C’est la classe qui définit des attributs et méthodes communs. Par exemple :

python
class Person:
def __init__(self, fname, lname):
[Link] = fname
[Link] = lname

def printname(self):
print([Link], [Link])

2. Classe enfant (Child/Derived Class)


Une classe enfant hérite de la classe parente en la passant entre parenthèses lors de sa
définition :

python
class Student(Person):
pass # Hérite tout tel quel de Person

On peut alors créer un objet de la classe enfant et utiliser les méthodes héritées :

python
x = Student("Mike", "Olsen")
[Link]() # Affiche : Mike Olsen

3. Ajout ou modification dans la classe enfant


On peut ajouter des attributs ou méthodes spécifiques à la classe enfant, ou redéfinir
(override) des méthodes héritées.

python
class Student(Person):
def __init__(self, fname, lname, graduationyear):
super().__init__(fname, lname) # Appelle le constructeur parent
[Link] = graduationyear

def welcome(self):
print(f"Bienvenue {[Link]} {[Link]} à la promotion {[Link]}!")

4. Utilisation de super()
 super() permet d’appeler des méthodes de la classe parente, notamment le
constructeur, pour éviter de réécrire du code.
python
student = Student("Anna", "Smith", 2025)
[Link]() # Méthode héritée
[Link]() # Méthode spécifique

5. Types d’héritage en Python


 Héritage simple : une classe enfant hérite d’une seule classe parente.
 Héritage multiple : une classe enfant hérite de plusieurs classes parentes.
 Héritage multilevel : une classe enfant hérite d’une classe qui hérite elle-même d’une
autre.
 Héritage hiérarchique : plusieurs classes enfants héritent d’une même classe parente.
 Héritage hybride : combinaison des types ci-dessus.

6. Exemple concret
python
class Animal:
def __init__(self, name):
[Link] = name

def speak(self):
print(f"{[Link]} fait un bruit.")

class Dog(Animal):
def speak(self):
print(f"{[Link]} aboie.")

class Cat(Animal):
def speak(self):
print(f"{[Link]} miaule.")

dog = Dog("Rex")
cat = Cat("Whiskers")

[Link]() # Rex aboie.


[Link]() # Whiskers miaule.

7. Avantages de l’héritage
 Réutilisation du code : évite la duplication.
 Extensibilité : on peut étendre ou modifier le comportement sans toucher à la classe
parente.
 Organisation : structure hiérarchique claire des classes.
 Polymorphisme : les objets de différentes classes enfants peuvent être traités de
manière uniforme.

8. Résumé rapide
Terme Description
Classe parente Classe dont on hérite (base class)
Classe enfant Classe qui hérite (derived class)
super() Permet d’appeler les méthodes de la classe parente
Redéfinition Modifier une méthode héritée dans la classe enfant
Héritage multiple Héritage de plusieurs classes parentes

Voici un exercice pratique complet sur l’héritage en Python, illustrant les concepts clés avec
un exemple de classes en chaîne (héritage multilevel) et l’utilisation de super() pour
réutiliser le code :

python
# Classe parente
class Person:
def __init__(self, name, id):
[Link] = name
[Link] = id

def get_details(self):
return f"Name: {[Link]}, ID: {[Link]}"

# Classe enfant héritant de Person


class Student(Person):
def __init__(self, name, id, grade):
super().__init__(name, id) # Appel du constructeur parent
[Link] = grade

def get_details(self):
return f"Name: {[Link]}, ID: {[Link]}, Grade: {[Link]}"

# Classe petite-fille héritant de Student


class GraduateStudent(Student):
def __init__(self, name, id, grade, thesis_title):
super().__init__(name, id, grade) # Appel du constructeur parent
self.thesis_title = thesis_title

def get_details(self):
return f"Name: {[Link]}, ID: {[Link]}, Grade: {[Link]}, Thesis: {self.thesis_title}"

# Création d’une instance de GraduateStudent


grad_student = GraduateStudent("Charlie", 91011, "A", "AI in Healthcare")

# Affichage des détails


print(grad_student.get_details())

Sortie attendue :

text
Name: Charlie, ID: 91011, Grade: A, Thesis: AI in Healthcare

Explications clés :
 GraduateStudent hérite de Student, qui hérite de Person (héritage multilevel).
 Chaque classe ajoute ses propres attributs et redéfinit la méthode get_details() pour
enrichir l’affichage.
 super().__init__() permet d’appeler le constructeur de la classe parente pour
éviter la duplication du code d’initialisation.
 L’objet grad_student possède tous les attributs des trois classes et peut utiliser leurs
méthodes.

Pour aller plus loin :


 Tu peux créer des classes avec héritage multiple (hériter de plusieurs classes).
 Tester la redéfinition de méthodes et l’appel aux méthodes parentes via super().
 Expérimenter avec des classes abstraites et le polymorphisme.

Voici un résumé clair et structuré du module que tu as suivi sur la programmation orientée
objet (POO) en Python :

Résumé de la leçon : Programmation Orientée Objet (POO)


 Classes :
Les classes sont des plans ou modèles (blueprints) qui définissent la structure et le
comportement des objets.
 Objets :
Les objets sont les instances concrètes des classes avec lesquelles on interagit dans la
programmation orientée objet.
 Attributs :
Les attributs représentent les caractéristiques ou propriétés d’un objet.
 Méthodes :
Les méthodes sont les actions ou fonctions que les objets peuvent effectuer.
 Attributs de classe :
Ce sont des attributs partagés par toutes les instances d’une classe, définis en dehors
de la méthode __init__.
 Méthode __init__ :
Cette méthode spéciale initialise les valeurs des attributs propres à chaque instance
lors de sa création.
 Décorateurs :
Les décorateurs permettent d’étendre le comportement d’une fonction ou méthode
sans modifier son code source.
 Méthodes statiques :
Elles manipulent les données liées à la classe mais ne dépendent ni de l’instance ni de
la classe elle-même.
 Redéfinition de méthodes (Overriding) :
Elle permet de modifier le comportement des méthodes héritées dans une classe
dérivée.
 Getters et Setters :
Méthodes utilisées pour protéger les attributs privés, en contrôlant leur accès et
modification.

Ce module t’a permis de comprendre les fondements de la POO, notamment la création et


l’utilisation des classes et objets, la gestion des attributs et méthodes, ainsi que les concepts
avancés comme les décorateurs, les méthodes statiques et la redéfinition.

Après avoir terminé ce module, tu seras capable de :


 Expliquer les objectifs clés du freelancing
Comprendre les motivations principales pour devenir freelance, comme l’autonomie,
la flexibilité, la diversification des projets, et le développement de compétences.
 Lister les avantages d’avoir une présence en ligne en tant que développeur
Savoir pourquoi il est important d’être visible sur le web via un portfolio, un blog, les
réseaux sociaux professionnels (LinkedIn, GitHub), pour attirer des clients, renforcer
sa crédibilité et élargir son réseau.
 Définir le concept de branding
Comprendre ce qu’est la marque personnelle (personal branding) : l’image, les
valeurs, la réputation que l’on construit pour se différencier et être reconnu dans son
domaine.
 Identifier la meilleure façon d’aborder une opportunité de networking
Apprendre à préparer, engager et entretenir des relations professionnelles efficaces, en
valorisant l’écoute, la qualité des échanges, et le suivi.

Voici un aperçu complet de la carrière Python en 2025, ses principales voies, compétences
requises et perspectives d’évolution :

Principaux parcours de carrière avec Python


1. Développeur Back-End
o Travaille sur la partie serveur des applications web.
o Maîtrise des frameworks comme Django ou Flask, gestion des bases de
données, APIs, architecture serveur.
o Assure la performance et la fiabilité des systèmes côté serveur12.
2. Ingénieur en Machine Learning / Intelligence Artificielle
o Conçoit et optimise des modèles d’apprentissage automatique et d’IA.
o Compétences en Python, statistiques, bibliothèques ML (scikit-learn,
TensorFlow, PyTorch).
o Travaille sur le traitement du langage naturel, vision par ordinateur, etc.13.
3. Analyste / Scientifique des données
o Manipule, analyse et visualise des données avec Pandas, NumPy, Matplotlib.
o Utilise Python pour extraire des insights et construire des modèles prédictifs25.
4. Spécialiste en cybersécurité
o Protège les réseaux et systèmes contre les attaques.
o Utilise Python pour automatiser les tâches, analyser les menaces, développer
des outils de sécurité1.
5. Ingénieur DevOps / Automatisation
o Automatise les déploiements, la gestion des infrastructures (IaC).
o Utilise Python pour scripting, orchestration et intégration continue25.

Compétences clés à développer


 Fondamentaux Python : syntaxe, structures de données, programmation orientée
objet.
 Frameworks et bibliothèques : Django, Flask, Pandas, NumPy, scikit-learn,
TensorFlow.
 Bases de données : SQL, ORM.
 API RESTful et architecture logicielle.
 Gestion de versions (Git) et bonnes pratiques de développement.
 Compétences en résolution de problèmes et algorithmes.
 Cloud computing et déploiement (AWS, Azure, GCP).

Progression de carrière typique


Niveau Description
Junior Python Developer Apprentissage des bases, petits projets supervisés.
Développeur Python Projets complexes, collaboration en équipe.
Senior Python Developer Leadership technique, optimisation et mentorat.
Lead / Architecte Conception d’architectures, gestion d’équipe.
Spécialiste / Expert Expertise dans un domaine précis (ML, sécurité).
CTO / Fondateur Direction stratégique et innovation technologique.

Pourquoi choisir Python en 2025 ?


 Langage le plus populaire selon plusieurs indices (TIOBE, Stack Overflow).
 Facile à apprendre, polyvalent dans de nombreux domaines (web, data, IA,
automatisation).
 Forte demande sur le marché du travail, avec des entreprises majeures (Google,
Amazon, Meta) qui recrutent activement.
 Large écosystème de bibliothèques et outils open-source.

Ressources recommandées
 Plateformes pour pratiquer : GitHub, Kaggle (data science).
 Tutoriels et documentation : Django, Flask, TensorFlow.
 Cours en ligne et certifications (Coursera, Simplilearn).
 Participer à des projets open-source et construire un portfolio solide.

Pour bien démarrer en tant que freelance Python developer en 2025, voici les étapes clés et
conseils pratiques issus des sources récentes :

1. Définir ta voie professionnelle


Avant tout, choisis un domaine précis dans le développement Python (web, data science,
automatisation, machine learning, etc.) selon tes intérêts et la demande du marché1. Cela
t’aidera à cibler les compétences à acquérir.

2. Acquérir les compétences essentielles


 Maîtrise des bases de Python : syntaxe, structures de données, programmation orientée
objet.
 Apprendre les outils et bibliothèques liés à ta spécialité : par exemple Django/Flask
pour le web, Pandas/NumPy pour la data, TensorFlow/PyTorch pour le machine
learning.
 Connaissance de SQL et gestion de bases de données, souvent requises.
 Savoir utiliser Git/GitHub pour le contrôle de version12.

3. Pratiquer avec des projets réels


Construis un portfolio avec des projets concrets qui démontrent tes compétences. Cela peut
être des mini-applications, des scripts d’automatisation, ou des analyses de données. Publie-
les sur GitHub pour montrer ton travail36.

4. Créer une présence en ligne


 Crée un profil professionnel sur LinkedIn, GitHub, et éventuellement un site web
personnel.
 Partage régulièrement tes projets, articles ou tutoriels pour te faire connaître et attirer
des clients potentiels1.

5. Trouver des clients et opportunités


 Inscris-toi sur des plateformes freelance comme Upwork, Freelancer, ou Fiverr.
 Réponds aux offres en personnalisant tes propositions selon les besoins du client.
 Réseau : participe à des groupes, forums, événements tech pour élargir ton réseau14.

6. Gérer ta carrière freelance


 Fixe des tarifs justes en fonction de ton expérience et du marché.
 Sois professionnel dans la communication, la gestion des délais et la facturation.
 Continue à apprendre et à t’adapter aux nouvelles technologies pour rester
compétitif10.

En résumé
Étape Description
Choisir une spécialité Web, data, IA, automatisation, etc.
Apprendre les compétences Python, bibliothèques, SQL, Git
Construire un portfolio Projets concrets sur GitHub
Créer une présence en ligne LinkedIn, site web, réseaux sociaux
Trouver des clients Plateformes freelance, réseautage
Gérer sa carrière Tarification, communication, formation

Voici un guide complet et structuré pour construire une marque personnelle forte en 2025,
basé sur les meilleures pratiques actuelles :

Construire sa marque personnelle en 2025

Pourquoi le personal branding est-il crucial ?


 Se démarquer dans un marché compétitif
 Construire la confiance avec clients, employeurs et communauté
 Attirer des opportunités professionnelles et commerciales
 Développer son réseau et son influence
 Créer de nouvelles sources de revenus (formations, sponsoring, freelancing)

Étape 1 : Définir ta marque personnelle


 Qui es-tu ? (compétences, passions, expériences uniques)
 Que veux-tu que l’on retienne de toi ?
 Quel est ton public cible ?

Astuce : rédige une phrase claire qui résume ta marque.


Exemple :
"J’aide les développeurs débutants à maîtriser React grâce à des tutoriels pratiques et du
mentorat."

Étape 2 : Optimiser ta présence en ligne


 Photo professionnelle cohérente sur tous les réseaux
 Bio claire et orientée valeur (LinkedIn, GitHub, site web)
 Créer un site portfolio personnalisé (ex : [Link])
 Être actif sur les plateformes clés : LinkedIn, GitHub, Twitter, YouTube, Medium

Étape 3 : Construire une identité visuelle cohérente


 Choisir des couleurs, polices et styles graphiques uniformes
 Appliquer cette identité sur tous tes supports (site, réseaux, emails)
 La cohérence visuelle renforce la reconnaissance et la confiance

Étape 4 : Raconter ton histoire avec authenticité


 Partage ton parcours, tes valeurs et ce qui te motive
 Utilise le storytelling pour rendre ta marque humaine et mémorable
 Sois authentique, évite la sur-performance ou le « paraître » forcé

Étape 5 : Créer et partager du contenu à valeur ajoutée


 Publie régulièrement des articles, tutoriels, vidéos ou posts qui intéressent ton
audience
 Varie les formats (texte, vidéo, podcasts, infographies) pour toucher plus de monde
 Sois généreux : offre des conseils utiles avant de demander quelque chose

Étape 6 : Entretenir ta marque et ton réseau


 Interagis avec ta communauté (réponses, échanges, collaborations)
 Reste cohérent dans ta communication (ton, fréquence, messages)
 Analyse régulièrement ton empreinte digitale et ajuste ta stratégie
Traits d’une marque personnelle forte
 Authenticité : être soi-même, transparent
 Cohérence : uniformité dans le message et l’apparence
 Expertise : démontrer ses compétences et sa valeur
 Fiabilité : respecter ses engagements, être professionnel
 Créativité : savoir se différencier par des idées originales
 Empathie : comprendre et connecter avec son audience

En résumé
Étape clé Action concrète
Définir ta marque Rédiger ta proposition de valeur claire
Optimiser ta présence Soigner profils, portfolio, photo, bio
Construire ton identité Choisir et appliquer une charte graphique cohérente
Raconter ton histoire Partager ton parcours et tes valeurs authentiquement
Créer du contenu Publier régulièrement du contenu utile et varié
Entretenir ta marque Interagir, rester cohérent, analyser et ajuster

Voici un résumé clair sur le personal branding (marque personnelle) en tant que développeur
ou professionnel, tel qu’abordé dans le module :

Personal Branding : Construire et valoriser sa marque


personnelle
 Définition : Le personal branding consiste à créer et gérer son image professionnelle,
ses valeurs, ses compétences et sa réputation pour se différencier dans son domaine.
 Objectifs :
o Se faire reconnaître comme expert ou spécialiste.
o Attirer des opportunités professionnelles (emploi, missions freelance,
collaborations).
o Construire une relation de confiance avec son audience ou ses clients.
 Éléments clés d’une marque personnelle réussie :
o Authenticité : être vrai et cohérent avec ses valeurs.
o Visibilité : présence régulière sur les réseaux professionnels (LinkedIn,
GitHub, Twitter, blogs).
o Contenu de valeur : partager des connaissances, tutoriels, projets, retours
d’expérience.
o Interaction : échanger avec la communauté, répondre aux questions, participer
à des événements.
o Cohérence : uniformité dans le message, le ton et l’image visuelle.
 Avantages pour un développeur :
o Meilleure reconnaissance sur le marché.
o Plus de confiance des clients et recruteurs.
o Accès à un réseau professionnel élargi.
o Possibilité de développer des activités complémentaires (formations,
consulting).
Avoir un site web ou un blog en tant que développeur ou professionnel en 2025 est devenu
essentiel pour plusieurs raisons clés :

 Renforcer sa crédibilité et sa visibilité : Un site personnel avec un portfolio ou un


blog permet de présenter clairement ses compétences, projets et réalisations, ce qui
inspire confiance aux clients, employeurs ou partenaires potentiels17.
 Attirer des opportunités professionnelles : Être présent en ligne facilite la
découverte par des recruteurs, clients ou collaborateurs. Un blog permet aussi de
partager des connaissances, démontrant ainsi son expertise et attirant un public
ciblé12.
 Construire une marque personnelle cohérente : Le site web est un espace contrôlé
où tu peux exprimer ton identité, tes valeurs et ton style, renforçant ainsi ta marque
personnelle de façon authentique et professionnelle156.
 Améliorer le référencement et le networking : Publier régulièrement du contenu
pertinent améliore ta visibilité sur les moteurs de recherche (SEO) et favorise les
échanges avec la communauté tech via commentaires, partages et collaborations27.
 S’adapter à l’économie digitale et au travail à distance : Dans un contexte où le
travail freelance et à distance se développe, un site web devient ta vitrine accessible
partout, à tout moment, pour convaincre même sans rencontre physique5.

En résumé, un site web ou un blog est un outil stratégique incontournable pour bâtir ta
réputation, élargir ton réseau et multiplier les opportunités dans un marché compétitif et
digitalisé.

Voici un résumé des meilleures pratiques et stratégies pour réussir son networking
professionnel en 2025 :

1. Utiliser efficacement les plateformes digitales


2. Développer des compétences relationnelles pour le
networking en personne
 Maîtrise l’art de la conversation : écoute active, questions ouvertes, intérêt sincère.
 Privilégie la qualité des relations plutôt que la quantité de contacts.
 Entretiens les relations en suivant régulièrement les échanges.

3. Construire sa marque personnelle via la création de


contenu
 Lance un blog, une chaîne vidéo ou publie des articles pour partager ton expertise.
 Sois régulier et authentique pour attirer et fidéliser une audience professionnelle.
 Participe aux discussions en ligne pour renforcer ta visibilité.

4. Approche stratégique et personnalisée


 Fixe des objectifs clairs pour ton networking (ex : trouver un mentor, un client, un
emploi).
 Personnalise tes messages d’approche en mentionnant un point spécifique lié à la
personne ou son travail.
 Offre de la valeur avant de demander quelque chose (partage de connaissances, mise
en relation).

5. Participer activement aux communautés et événements


 Ne sois pas un simple spectateur : commente, pose des questions, partage des
ressources.
 Participe à des meetups locaux ou virtuels, conférences, ateliers.
 Suis et contacte les personnes rencontrées pour entretenir la relation.

6. Maintenir un comportement professionnel et


respectueux
 Sois authentique, poli et professionnel dans toutes tes interactions.
 Évite l’auto-promotion excessive qui peut nuire à ta réputation.
 Traite les autres avec respect, comme tu aimerais être traité.

En résumé
Stratégie clé Action concrète
Plateformes digitales Optimiser LinkedIn, participer aux forums
Compétences relationnelles Écoute active, questions ouvertes
Création de contenu Blog, vidéos, articles réguliers
Approche personnalisée Messages ciblés, offrir de la valeur
Participation active Meetups, conférences, échanges en ligne
Comportement professionnel Authenticité, respect, professionnalisme

Voici un classement des meilleures plateformes freelance pour développeurs en 2025, basé
sur plusieurs sources récentes :

Plateforme Points forts principaux Pour qui ?


[Link] Rapidité (matching en 24h), tarifs Développeurs cherchant des missions
raisonnables, qualité rapidement
Upwork Plus grande plateforme, large choix de Freelances débutants à expérimentés
projets, flexible
Fiverr Idéal pour petits projets et tâches Freelances cherchant des missions
spécifiques courtes
Toptal Sélection rigoureuse, clients haut de Développeurs expérimentés cherchant
gamme (Fortune 500) qualité et long terme
[Link] Large variété de projets, système Freelances aimant la compétition et
d’enchères volume
[Link] Talents triés sur le volet (top 2,3%), Freelances hautement qualifiés, projets
intégrations modernes sérieux
Guru Paiements sécurisés, outils de gestion Freelances cherchant stabilité et outils
de projet intégrés pro
Codeable Spécialisé WordPress, développeurs Développeurs WordPress premium
experts
Contra Plateforme sans commission, favorise Freelances voulant garder 100% de
relation directe leurs revenus

Conseils pour choisir la bonne plateforme :


 Débutants : Upwork et Fiverr offrent beaucoup d’opportunités pour bâtir un portfolio.
 Freelances expérimentés : Toptal, [Link], [Link] pour des projets mieux
rémunérés et clients sérieux.
 Spécialistes : Codeable pour WordPress, ou plateformes de niche selon ta spécialité.
 Préférence pour relation directe : Contra élimine les commissions, favorise le
contact direct.

Autres plateformes à considérer :


 PeoplePerHour (bon pour tâches simples, mais parfois coûteux)
 [Link] (qualité mais plus cher)
 Hired (recrutement rapide, focus IT)
 Working Nomads et Stack Overflow Jobs pour opportunités de télétravail.

Pour créer un CV efficace de développeur Python en 2025, voici les étapes clés et conseils
adaptés à ta formation et expérience :

1. Informations personnelles et contact


 Nom complet
 Adresse e-mail professionnelle
 Numéro de téléphone
 Lien vers ton portfolio en ligne ou GitHub
 Profil LinkedIn (si disponible)

2. Titre et résumé professionnel


 Titre clair : Développeur Python ou Développeur Python orienté objet
 Résumé bref (2-3 lignes) mettant en avant tes compétences clés, ta spécialisation (ex :
web, data, automatisation) et ta motivation.

Exemple :
« Développeur Python passionné avec une solide maîtrise de la programmation orientée objet,
des décorateurs et des fonctions avancées. Expérience pratique avec les environnements
VSCode et Jupyter Notebook. Motivé par la résolution de problèmes complexes et la création
de solutions efficaces. »

3. Compétences techniques
 Langages : Python (programmation orientée objet, décorateurs, fonctions avancées)
 Outils et environnements : VSCode, Jupyter Notebook
 Concepts maîtrisés : structures de contrôle, boucles, opérateurs bitwise,
compréhension de listes, itérateurs
 Autres : Git, gestion de versions (si applicable)
 Frameworks ou bibliothèques (si tu en as appris) : mentionne-les (ex : Flask, Django,
Pandas)

4. Expérience professionnelle ou projets


 Si tu as des expériences professionnelles, liste-les avec :
o Nom de l’entreprise ou projet
o Dates
o Description des tâches et technologies utilisées
o Résultats obtenus ou réalisations
 Si tu es débutant, mets en avant des projets personnels ou académiques :
o Description du projet
o Technologies utilisées
o Objectifs et résultats

5. Formation
 Mentionne tes cours ou certifications liés à Python et la programmation orientée objet.
 Exemple : « Formation en programmation Python, incluant les concepts avancés
comme les décorateurs et la programmation fonctionnelle. »

6. Sections supplémentaires (facultatives)


 Langues parlées
 Participation à des communautés ou contributions open-source
 Certifications complémentaires

Conseils pratiques
 Sois clair et concis (1 à 2 pages maximum).
 Utilise des verbes d’action (développé, conçu, automatisé, optimisé).
 Adapte ton CV à chaque offre d’emploi en mettant en avant les compétences
demandées.
 Vérifie l’orthographe et la mise en forme.

Voici un résumé clair et structuré du module que tu as suivi :

Résumé de la leçon : Freelancing, Branding et Networking


 Objectif du freelancing :
Acquérir de l’expérience et des témoignages pour renforcer ton profil professionnel.
 Candidature aux missions freelance :
Personnalise chaque candidature en fonction du projet spécifique pour maximiser tes
chances.
 Message central d’une marque :
Le message est au cœur de la construction d’une marque personnelle.
 Présence en ligne :
Elle permet au monde extérieur de percevoir directement tes compétences, ta
personnalité et ton expérience.
 Importance d’un site web :
Un site personnel ajoute de la crédibilité à ta marque personnelle.
 Approche du networking :
Cherche d’abord à apporter de la valeur à ton interlocuteur plutôt que de privilégier tes
propres intérêts.
 Avantages d’Upwork pour freelances :
Contrats fixes ou horaires, protection des contrats horaires, processus de sélection
rigoureux.
 Rédaction d’un CV Python convaincant :
Mets l’accent sur tes réalisations concrètes plutôt que sur une simple liste de
compétences.

Ce module t’a ainsi permis de comprendre comment te positionner efficacement en tant que
freelance, construire ta marque personnelle et développer ton réseau professionnel.

Vous aimerez peut-être aussi