Python
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é.
Exemple simple :
python
print("Bonjour, Python !")
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.
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).
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.
Tendances du marché :
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.
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 :
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.
Exemple simple :
python
print("Bonjour, Python !")
Cette instruction affiche un message à l’écran et constitue souvent le premier programme écrit
par un débutant.
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.
python
print("Bonjour, Python !")
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.
Alternatives d’installation
Installer Jupyter Notebook seul via pip :
bash
pip install notebook
jupyter notebook
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.
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)
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")
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
python
total = (1 + 2 + 3 +
4 + 5 + 6)
python
x = 10 # Ceci est un commentaire
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
1. Affichage simple
Complétez la ligne de code suivante pour afficher la somme de 5 et 3.
python
print(5 + 3)
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
python
if x > 0:
print("x est positif")
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.
python
# Ceci est un commentaire
x = 10 # Affectation de la valeur 10 à x
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.
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.
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.
Exemples :
python
total = (1 + 2 + 3 +
4 + 5 + 6)
print(total)
python
nombres = [1, 2, 3,
4, 5, 6]
print(nombres)
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.
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.
Syntaxe
python
instruction1; instruction2; instruction3
Exemple simple
python
x = 5; y = 10; print(x + y)
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.
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.
python
if 5 > 2:
print("Cinq est plus grand que deux") # Erreur : indentation attendue
python
def test():
print("Ligne indentée avec 4 espaces")
print("Ligne indentée avec une tabulation") # Erreur : mélange d’espaces et tab
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é.
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.
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
python
x=y=z=0
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.
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
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
python
x = 10
y = float(x) # 10.0
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)
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
5. Exemple pratique
python
# Calcul de la moyenne de deux notes
note1 = 15
note2 = 13.5
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.
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)
python
mot = "Python"
print(mot[1:4]) # 'yth'
python
prenom = "Alice"
nom = "Dupont"
nom_complet = prenom + " " + nom
print(nom_complet) # 'Alice Dupont'
python
echo = "Ha! " * 3
print(echo) # 'Ha! Ha! Ha! '
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))
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.
python
texte = "Python"
print(texte[0]) # 'P'
print(texte[-1]) # 'n' (dernier caractère)
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)
python
print("Python".lower()) # 'python'
print("python".upper()) # 'PYTHON'
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'
python
mots = "un,deux,trois".split(",")
print(mots) # ['un', 'deux', 'trois']
python
liste = ['un', 'deux', 'trois']
print(", ".join(liste)) # 'un, deux, trois'
python
print("Bonjour".find("jour")) # 3
print("Bonjour".find("soir")) # -1
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()
La manipulation des chaînes est essentielle pour traiter du texte, analyser des données ou
préparer des sorties dans vos programmes Python.
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"
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
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.
Syntaxe générale
python
chaine[start:stop:step]
Exemples pratiques
Considérons la chaîne :
python
texte = "Python est génial"
python
print(texte[0:6]) # 'Python'
python
print(texte[7:]) # 'est génial'
python
print(texte[:6]) # 'Python'
python
print(texte[::2]) # 'Pto stgna'
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.
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.
Syntaxe générale
python
chaine[start:stop]
Exemples simples
Considérons la chaîne suivante :
python
texte = "Python"
python
print(texte[0:3]) # 'Pyt'
python
print(texte[3:]) # 'hon'
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.
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
python
print("Hello", "how are you?")
Affiche :
text
Hello how are you?
python
print("Hello", "how are you?", sep="---")
Affiche :
text
Hello---how are you?
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
python
print()
Affiche une ligne blanche (utile pour espacer la sortie).
python
x = ("apple", "banana", "cherry")
print(x)
Affiche :
text
('apple', 'banana', 'cherry')
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
Affiche :
text
Name: | John | Age: | 25
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.
É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.
# 2. Prétraitement
phrase = [Link]()
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.
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.
3. Opérateurs de comparaison
Ils comparent deux valeurs et retournent un booléen (True ou False).
4. Opérateurs logiques
Utilisés pour combiner des expressions booléennes.
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.
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.
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
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.
Exemples concrets
python
a=5
b = 10
c=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 :
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
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
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
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.
Exemple concret
python
a = [1, 2, 3]
b=a
c = [1, 2, 3]
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).
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
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.
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.
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)
python
print(a ^ b) # 13 (binaire 1101)
python
print(~a) # -11
python
print(a << 2) # 40 (1010 devient 101000)
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.
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 :
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}
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'}
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.
python
fruits = ["pomme", "banane", "cerise"]
nombres = [1, 2, 3, 4, 5]
mixte = [1, "deux", 3.0, True]
Liste vide :
python
vide = []
python
print(fruits[0]) # 'pomme'
print(fruits[-1]) # 'cerise' (dernier élément)
python
fruits[1] = "orange"
print(fruits) # ['pomme', 'orange', 'cerise']
python
[Link]("kiwi")
python
[Link](1, "mangue")
python
[Link]("pomme")
python
dernier = [Link]()
python
[Link]()
python
[Link]()
Longueur d’une liste
Avec la fonction len() :
python
print(len(fruits)) # nombre d’éléments dans la liste
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']
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.
Exemple :
python
fruits = ["pomme", "banane", "cerise", "orange"]
print(fruits[0]) # 'pomme'
print(fruits[2]) # 'cerise'
print(fruits[-1]) # 'orange'
print(fruits[-3]) # 'banane'
Syntaxe générale :
python
liste[start:stop:step]
Exemples :
python
fruits = ["pomme", "banane", "cerise", "orange", "kiwi", "mangue"]
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]
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.
python
mon_tuple = (1, 2, 3)
couleurs = ("rouge", "vert", "bleu")
mixte = (1, "deux", 3.0, True)
python
tuple_un_element = (5,)
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.
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.
Exemples pratiques
python
A = {1, 2, 3, 4}
B = {3, 4, 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.
python
personne = {
"nom": "Alice",
"âge": 30,
"ville": "Paris"
}
Dictionnaire vide :
python
vide = {}
python
d = dict(nom="Bob", âge=25)
Accès aux valeurs
Par la clé entre crochets [] :
python
print(personne["nom"]) # 'Alice'
python
print([Link]("profession", "Inconnu")) # 'Inconnu'
python
personne["âge"] = 31
python
personne["profession"] = "Ingénieur"
Suppression d’éléments
Avec del :
python
del personne["ville"]
python
age = [Link]("âge")
python
[Link]()
Parcourir un dictionnaire
Parcourir les clés :
python
for cle in personne:
print(cle)
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"
}
# 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.
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.
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.
# 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}
Maîtriser ces structures est fondamental pour écrire des programmes dynamiques, flexibles et
robustes.
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"
python
for i in range(5):
print(i)
python
count = 0
while count < 5:
print(count)
count += 1
python
try:
x = int(input("Entrez un nombre: "))
except ValueError:
print("Ce n’est pas un nombre valide.")
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.
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")
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")
Exemple :
python
x=8
y = 12
if x > 5:
if y > 10:
print("x est supérieur à 5 et y est supérieur à 10")
Exemples :
python
if x > 5 and y > 10:
print("Les deux conditions sont vraies")
if not x > 5:
print("x n’est pas supérieur à 5")
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"
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.
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")
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é.
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")
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.
2. Syntaxe de base
python
for variable in sequence:
# bloc de code à exécuter
3. Exemples simples
Itérer sur une liste :
python
fruits = ["pomme", "banane", "cerise"]
for fruit in fruits:
print(fruit)
Sortie :
text
pomme
banane
cerise
python
for lettre in "Python":
print(lettre)
python
for i in range(5):
print(i)
Sortie :
text
0
1
2
3
4
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)
python
etudiants = [("Alice", 90), ("Bob", 85), ("Charlie", 92)]
for nom, note in etudiants:
print(f"{nom} a obtenu {note}")
python
noms = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
python
for i in range(10):
if i == 5:
break
print(i)
python
for i in range(10):
if i % 2 == 0:
continue
print(i)
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 :
2. Syntaxe de base
python
while condition:
# bloc de code à exécuter tant que la condition est vraie
3. Exemple simple
python
compteur = 0
while compteur < 5:
print(compteur)
compteur += 1
Sortie :
text
0
1
2
3
4
python
while True:
entree = input("Tapez 'exit' pour quitter : ")
if entree == "exit":
break
python
i=0
while i < 10:
i += 1
if i % 2 == 0:
continue
print(i)
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).
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.
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.
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.
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.
python
count = 0
while True:
print(count)
count += 1
if count == 5:
break
Sortie :
text
0
1
2
3
4
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
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.
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.
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.
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.
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.
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, ...)
3. Exemple simple
python
noms = ["Alice", "Bob", "Charlie"]
notes = [85, 90, 78]
Sortie :
text
[('Alice', 85), ('Bob', 90), ('Charlie', 78)]
python
a = ("John", "Charles", "Mike")
b = ("Jenny", "Christy", "Monica", "Vicky")
Sortie :
text
[('John', 'Jenny'), ('Charles', 'Christy'), ('Mike', 'Monica')]
5. Utilisations courantes
Itération parallèle sur plusieurs listes :
python
for nom, note in zip(noms, notes):
print(f"{nom} a obtenu {note}")
python
cles = ["nom", "âge", "ville"]
valeurs = ["Alice", 30, "Paris"]
d = dict(zip(cles, valeurs))
print(d)
Sortie :
text
{'nom': 'Alice', 'âge': 30, 'ville': 'Paris'}
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"]
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.
2. Syntaxe
python
enumerate(iterable, start=0)
3. Exemple simple
python
fruits = ["pomme", "banane", "cerise"]
Sortie :
text
0 pomme
1 banane
2 cerise
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"
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.
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]
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]
python
carrés_pairs = [x**2 for x in range(10) if x % 2 == 0]
print(carrés_pairs) # [0, 4, 16, 36, 64]
python
carrés_pairs = []
for x in range(10):
if x % 2 == 0:
carrés_pairs.append(x**2)
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.
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.
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 :
Exemple :
python
def saluer():
print("Bonjour !")
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).
python
def saluer(nom="Invité"):
print(f"Bonjour, {nom} !")
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.
Exemple :
python
def saluer():
print("Bonjour depuis une fonction")
python
saluer()
Cela affichera :
text
Bonjour depuis une fonction
python
def saluer(nom):
print(f"Bonjour, {nom} !")
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.
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)
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)
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))
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.
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 !")
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")
python
def saluer(nom="Invité"):
print(f"Bonjour, {nom} !")
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)
python
def addition(a, b):
return a + b
resultat = addition(5, 7)
print(resultat) # 12
python
x = 10
def modifier():
global x
x=5
modifier()
print(x) # 5
python
def saluer(nom):
"""Affiche un message de salutation personnalisé."""
print(f"Bonjour, {nom} !")
python
def factorielle(n):
if n == 0:
return 1
else:
return n * factorielle(n - 1)
print(factorielle(5)) # 120
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.
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
python
x=5
def modifier():
global x
x = 10
modifier()
print(x) # affiche 10
python
def externe():
x=5
def interne():
nonlocal x
x = 10
interne()
print(x)
externe() # affiche 10
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.
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.
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().
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} !")
4. Accéder à la docstring
Vous pouvez afficher la docstring d’une fonction avec :
python
print(saluer.__doc__)
python
help(saluer)
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.
Exemple :
python
nom = input("Entrez votre nom : ")
print(f"Bonjour, {nom} !")
python
age = int(input("Entrez votre âge : "))
prix = float(input("Entrez le prix : "))
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.
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 !")
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.
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 + " !")
python
age = int(input("Entrez votre âge : "))
print(f"Vous avez {age} ans.")
python
prix = float(input("Entrez le prix : "))
print(f"Le prix est {prix} euros.")
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}")
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.
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.
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
python
whle True: # faute de frappe sur while
pass
python
if x > 0 # deux-points manquants
print(x)
python
texte = "Bonjour
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.
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.")
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.")
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)
python
class MonErreur(Exception):
pass
try:
raise MonErreur("Erreur personnalisée.")
except MonErreur as e:
print(e)
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.
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.")
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é.")
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.
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.
python
try:
x = int(input("Entrez un nombre : "))
resultat = 10 / x
except (ValueError, ZeroDivisionError) as e:
print(f"Erreur détectée : {e}")
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).
Exemple :
python
def afficher_info(*args, **kwargs):
print("Arguments positionnels :", args)
print("Arguments nommés :", kwargs)
python
def fonction(a, b, *, c):
print(a, b, c)
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()
python
def addition(a, b, c):
return a + b + c
args = [1, 2, 3]
print(addition(*args)) # 6
Exemple :
python
def saluer():
print("Salut !")
def executer_fonction(f):
f()
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
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.
2. Syntaxe
python
lambda arguments: expression
python
x = lambda a: a + 10
print(x(5)) # Affiche 15
python
x = lambda a, b: a * b
print(x(5, 6)) # Affiche 30
python
x = lambda a, b, c: a + b + c
print(x(5, 6, 2)) # Affiche 13
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.
python
nombres = [1, 2, 3, 4]
doubles = list(map(lambda x: x * 2, nombres))
print(doubles) # [2, 4, 6, 8]
python
nombres = [1, 2, 3, 4, 5, 6]
pairs = list(filter(lambda x: x % 2 == 0, nombres))
print(pairs) # [2, 4, 6]
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.
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
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}")
Sortie :
text
rue : 123 Rue Fausse
ville : Paris
code_postal : 75000
python
def fonction(a, b, *args, **kwargs):
pass
Exemple :
python
def fonction_exemple(a, b, *args, **kwargs):
print("a =", a)
print("b =", b)
print("args =", args)
print("kwargs =", kwargs)
Sortie :
text
a=1
b=2
args = (3, 4)
kwargs = {'x': 5, 'y': 6}
python
def addition(a, b, c):
return a + b + c
args = [1, 2, 3]
print(addition(*args)) # 6
python
class Livre:
def __init__(self, *args):
[Link], [Link], [Link] = args
python
class Livre:
def __init__(self, **kwargs):
[Link] = [Link]('titre')
[Link] = [Link]('auteur')
[Link] = [Link]('annee')
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.
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.
python
for élément in ma_liste:
print(élément)
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
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
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.
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.
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.
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.
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.
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, ...)
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]
python
nombres = [1, 2, 3, 4]
resultat = map(lambda x: x * 2, nombres)
print(list(resultat)) # [2, 4, 6, 8]
python
a = [1, 2, 3]
b = [4, 5, 6]
resultat = map(lambda x, y: x + y, a, b)
print(list(resultat)) # [5, 7, 9]
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
python
nombres = [-1, -2, 3, 4]
valeurs_absolues = map(abs, nombres)
print(list(valeurs_absolues)) # [1, 2, 3, 4]
python
nombres = [1, 2, 3, 4]
resultat = [x * 2 for x in nombres]
print(resultat) # [2, 4, 6, 8]
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.
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.
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]
python
nombres = [1, 2, 3, 4, 5, 6]
pairs = filter(lambda x: x % 2 == 0, nombres)
print(list(pairs)) # [2, 4, 6]
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.
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']
python
personnes = [
{'nom': 'Alice', 'age': 25},
{'nom': 'Bob', 'age': 17},
{'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().
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 :
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.
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.
python
import math
print([Link](16)) # 4.0
text
pip install numpy
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 !")
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.
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.
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.
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 :
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 :
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 :
python
import mon_module
python
from mon_module import ma_fonction
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.
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.
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
bash
pip install --user nom_du_package
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.
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.
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.
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.
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.
Exemple simple :
python
import numpy as np
# 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.
Exemple :
python
import numpy as np
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
Exemple :
python
mat[0, 0] = 100
print(mat[0, 0]) # Affiche 100
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]
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
python
mat = [Link]([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
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
:
python
[Link](arr, index, values, axis=None)
Exemple :
python
import numpy as np
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 :
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
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.
Si ces règles ne sont pas respectées, une erreur de diffusion ( ValueError) est levée.
Exemple simple
python
import numpy as np
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]]
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.
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.
Voici une introduction complète à Pandas, une bibliothèque Python essentielle pour l’analyse
de données :
Introduction à Pandas
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
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)
python
calories = {"day1": 420, "day2": 380, "day3": 390}
ser = [Link](calories)
python
ser = [Link](data, index=["a", "b", "c", "d"])
python
print(ser[0]) # accès par position
print(ser["day1"]) # accès par label
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 :
python
import pandas as pd
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
python
ser[ser > 15] # éléments supérieurs à 15
python
ser[0] = 15
ser2["mardi"] = 400
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
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
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.
python
import pandas as pd
data = {
"Nom": ["Alice", "Bob", "Charlie"],
"Âge": [25, 30, 35],
"Ville": ["Paris", "Lyon", "Marseille"]
}
df = [Link](data)
python
data = [
{"Nom": "Alice", "Âge": 25, "Ville": "Paris"},
{"Nom": "Bob", "Âge": 30, "Ville": "Lyon"},
{"Nom": "Charlie", "Âge": 35, "Ville": "Marseille"}
]
df = [Link](data)
python
df = pd.read_csv("[Link]")
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
python
df["Salaire"] = [3000, 3500, 4000]
[Link]("Ville", axis=1, inplace=True)
python
df_filtered = df[df["Âge"] > 28]
python
df_sorted = df.sort_values(by="Âge")
data = {
"Nom": ["Alice", "Bob", "Charlie"],
"Âge": [25, 30, 35],
"Ville": ["Paris", "Lyon", "Marseille"]
}
df = [Link](data)
python
import pandas as pd
python
new_row = {'Name': 'Alice', 'Height': 5.7, 'Qualification': 'PhD', 'Address': 'Berlin'}
df = [Link]([df, [Link]([new_row])], ignore_index=True)
python
[Link]('Address', axis=1, inplace=True)
python
[Link](2, axis=0, inplace=True) # supprime la 3e ligne (index 2)
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']]
python
df_filtered = df[df['Height'] > 5.5]
python
[Link][0, 'Name'] # accès par label
[Link][1, 2] # accès par position
python
df_sorted = df.sort_values(by='Height', ascending=False)
python
[Link](axis=0, inplace=True) # lignes
[Link](axis=1, inplace=True) # colonnes
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
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.
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)
python
df_clean = [Link](axis=1)
python
df_clean = [Link](how='all')
python
df_clean = [Link](thresh=3) # Garder les lignes avec au moins 3 valeurs non-nulles
python
df_filled = [Link](0)
python
mean_val = df['colonne'].mean()
df['colonne'].fillna(mean_val, inplace=True)
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)
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)
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.
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.
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.
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 :
python
class Person:
pass # Le mot-clé pass signifie que la classe est vide pour l'instant
python
class Person:
def __init__(self, name, age):
[Link] = name # Attribut name
[Link] = age # Attribut age
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.")
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 :
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.
python
dog1 = Dog("Rex", 5)
dog2 = Dog("Bella", 3)
Chaque objet est une instance distincte avec ses propres valeurs d’attributs.
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 :
python
setattr(p1, "age", 50)
print([Link]) # 50
python
class Person:
def __init__(self, name, age):
[Link] = name
[Link] = age
p2 = Person("Bob", 25)
p2.set_age(35)
print([Link]) # 35
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
python
def change_age(person, new_age):
[Link] = new_age
change_age(p1, 60)
print([Link]) # 60
python
class Test:
def __init__(self, val):
[Link] = val
t = Test(10)
t.change_val([Link])
print([Link]) # 10 (inchangé)
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
Syntaxe de base
python
@decorateur
def fonction():
pass
C’est équivalent à :
python
def fonction():
pass
fonction = decorateur(fonction)
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
@classmethod
def get_population(cls):
return [Link]
p1 = Person("Alice")
p2 = Person("Bob")
print(Person.get_population()) # 2
@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
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
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
python
class MathUtils:
@staticmethod
def carre(x):
return x * x
print([Link](5)) # 25
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
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)
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 !
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.
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
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]).
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 :
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
@classmethod
def afficher_population(cls):
print(f"Population actuelle : {[Link]}")
# Utilisation
p1 = Personne("Alice")
p2 = Personne("Bob")
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.
Syntaxe
python
class MaClasse:
@staticmethod
def ma_methode_statique(param1, param2):
# code sans accès à self ou cls
return param1 + param2
Exemple simple
python
class MathUtils:
@staticmethod
def additionner(a, b):
return a + b
Méthode de
cls Oui (attributs de classe) Oui Oui
classe
Méthode
Aucun Non Oui Oui
statique
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
python
class Person:
def __init__(self, fname, lname):
[Link] = fname
[Link] = lname
def printname(self):
print([Link], [Link])
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
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
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")
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]}"
def get_details(self):
return f"Name: {[Link]}, ID: {[Link]}, Grade: {[Link]}"
def get_details(self):
return f"Name: {[Link]}, ID: {[Link]}, Grade: {[Link]}, Thesis: {self.thesis_title}"
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.
Voici un résumé clair et structuré du module que tu as suivi sur la programmation orientée
objet (POO) en Python :
Voici un aperçu complet de la carrière Python en 2025, ses principales voies, compétences
requises et perspectives d’évolution :
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 :
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 :
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 :
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 :
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 :
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 :
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)
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. »
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.
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.