0% ont trouvé ce document utile (0 vote)
1 vues62 pages

Cours Python Introduction

Transféré par

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

Cours Python Introduction

Transféré par

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

1

PYTHON: PROCEDDURALE ET L’ORIENTEE OBJET


Ecrit par Joël Pero/Développeur web et Enseignant d’Université /+243 82 151 1441

SCRIPT COURS PYTHON – LES BASES #1 : INTRODUCTION

INTRODUCTION DU COURS

Bonjour et bienvenue dans ce premier cours d’Introduction à Python.

Aujourd’hui, nous allons découvrir ce qu’est Python, à quoi il sert, et pourquoi il est
devenu l’un des langages les plus utilisés au monde.

1. Python, c’est quoi ?

Python est un langage qui permet de parler à l’ordinateur. On écrit des instructions
simples comme print("Bonjour").

2. Pourquoi Python est-il populaire ?

- Facile à apprendre

- Utilisé partout : sites web, IA, data, cybersécurité, automatisation

- Fonctionne sur Windows, Linux, Mac

3. Exemples à Kolwezi

- Inventaire d’un dépôt

- Calcul des salaires

- Analyse minière
2

- Automatisation WhatsApp

4. Installer Python

Étapes 1 : télécharger → installer → tester avec python –version

Etapes 2 si vous utiliser un éditeur de code tel que VS CODE, vous aller installer
l’extension de python sur l’éditeur :

5. Premier programme

print("Bonjour le monde")

6. Variables

nom = "Hakili"

age = 23

ville = "Kolwezi"

7. Types de données

str, int, float, bool, listes.


3

8. Commentaires

# Ceci est un commentaire

9 Operateurs

Liste

La liste est composée d’une suite des valeurs ou d’éléments.

Pour utliser une liste on met des pairs de cochers

Exemple :

ventes = [12000, 5000, 8000, 15000, 7000, 0, 9000]

jours = ["Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"]

# 1) total

total = sum(ventes)
4

# 2) moyenne journalière (arrondie)

moyenne = round(total / len(ventes))

# 3) jour(s) avec la meilleure vente

meilleure = max(ventes)

jours_meilleurs = [jours[i] for i, v in enumerate(ventes) if v == meilleure]

print("Total semaine :", total, "FC")

print("Moyenne journalière :", moyenne, "FC")

print("Meilleure vente :", meilleure, "FC, jour(s) :", ", ".join(jours_meilleurs))

les tuples

les tuples sont pareils au liste , sauf que les tuples peuvent contenir plusieurs types
de valeur,

Dictionnaire

Un dictionnaire est une structure de données qui permet de stocker des informations
sous forme :

clé : valeur

On l’utilise quand on veut stocker des informations organisées, un peu comme une fiche
d’information.

Exemple simple :

personne = {
5

"nom": "Hakili",

"age": 22,

"ville": "Kolwezi"

10. Exemple pratique

Calcul du gain par jour, conversion USD → FC

FIN DU COURS

Les structures conditionnelles

1. C’est quoi une structure conditionnelle ? (Explication simple)

Imagine que ton cerveau est comme un ordinateur :


tu prends des décisions en fonction de ce que tu vois.

Par exemple :

 S’il pleut, je prends un parapluie.


 Sinon, je sors sans parapluie.

C’est exactement ce que fait une structure conditionnelle en Python :


6

👉 Elle permet au programme de choisir quoi faire selon une condition.

✔️ 2. Les mots magiques en Python

Python utilise trois mots importants :

🔹 if → “si …”

On teste une condition.


Ex : if age >= 18: signifie “si l’âge est supérieur ou égal à 18”.

🔹 elif → “sinon si …”

Ce que Python va vérifier si la première condition n’est pas vraie.

🔹 else → “sinon …”

Ce que Python fait quand aucune des conditions précédentes n’est vraie.

🏗️ 3. Comment ça se présente ?

Voici la forme générale :

if condition1:

# action 1

elif condition2:

# action 2

else:
7

# action 3

🔍 4. Expliquer avec un exemple très simple

age = 16

if age >= 18:

print("Tu es majeur.")

else:

print("Tu es mineur.")

Ici :

 On teste si age >= 18


 Si oui → Python affiche "Tu es majeur"
 Sinon → "Tu es mineur"

Python lit toujours du haut vers le bas, et il s’arrête dès qu’une condition est vraie.

📌 5. Les opérateurs de comparaison

Pour faire des conditions, on utilise :

Opérateur Signification Exemple


== égal à a == 5
!= différent de a != 3
> supérieur à a > 10
< inférieur à a<2
>= supérieur ou égal à age >= 18
8

Opérateur Signification Exemple


<= inférieur ou égal à taux <= 16

🌍 6. Exercice Résolu 1 (Adapté à la réalité de Kolwezi)

➡ Déterminer le prix d’un ticket de transport en fonction de l’âge

Règles :

 Moins de 12 ans → ticket = 500 FC


 Entre 12 et 20 ans → ticket = 800 FC
 Plus de 20 ans → ticket = 1 000 FC

✔️ Solution Python

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

if age < 12:

prix = 500

elif age <= 20:

prix = 800

else:

prix = 1000

print("Le prix du ticket de transport est :", prix, "FC")


9

✔️ Explication

 Python teste d’abord age < 12


 Si ce n’est pas vrai, il teste age <= 20
 Si ce n’est pas vrai, il va au else
 On affiche le prix correspondant

🌍 7. Exercice Résolu 2 (Adapté à une boutique à Kolwezi)

➡ Calculer la réduction sur un produit

Règles :

 Si le montant est < 10 000 FC → pas de réduction


 Si le montant est entre 10 000 et 50 000 FC → réduction 5%
 Si le montant est > 50 000 FC → réduction 10%

✔️ Solution Python
montant = int(input("Entrez le montant de votre achat (en FC) : "))

if montant < 10000:

reduction = 0

elif montant <= 50000:

reduction = montant * 0.05

else:

reduction = montant * 0.10


10

prix_final = montant - reduction

print("Réduction :", reduction, "FC")

print("Montant final à payer :", prix_final, "FC")

✔️ Explication

 Python regarde dans quelle tranche se trouve le montant


 Il applique le bon pourcentage
 Il calcule le prix final
 Les libellés sont clairs pour l'utilisateur

🎯 Résumé

 Les conditions, c’est comme prendre une décision :


“Si ceci arrive, alors je fais ça.”
 Python utilise : if – elif – else
 Tu peux faire des tests avec ==, <, >=, etc.
 Ça te permet d’automatiser des règles comme dans la vraie vie :
prix, âge, réduction, transport, facturation…

Mini Projet sur les structures conditionnelles

Mini-projet Python : "Système de Facturation Intelligent d’une Boutique"

Ce mini-projet inclut :

✔️ des conditions (if / elif / else)


✔️ des calculs de réduction

✔️ la gestion des clients fidèles


11

✔️ la gestion de la TVA
✔️ un ticket final de facture

✔️ un code clair et commenté


✔️ adapté au contexte de Kolwezi

🚀 OBJECTIF DU MINI-PROJET

Créer un programme qui :

1. Demande le montant de l’achat d’un client


2. Demande si le client a une carte "Fidélité"
3. Applique des réductions selon le montant
4. Ajoute la TVA
5. Affiche un ticket final parfaitement lisible

🏗️ Règles du système

🎯 1. Réductions selon montant acheté

Montant (FC) Réduction


< 10 000 0%
10 000 – 50 000 5%
> 50 000 10%

🎯 2. Avantages clients fidèles

Si le client est fidèle : + 2 % de réduction supplémentaire

🎯 3. TVA

On applique une TVA de 16 % (RDC).

📦 Code Complet du Mini-projet


12

# Mini-Projet : Système de Facturation Intelligent

print("=== SYSTEME DE FACTURATION BOUTIQUE KOLWEZI ===\n")

# 1. Lecture du montant de l'achat

montant = int(input("Entrez le montant total de l'achat (en FC) : "))

# 2. Vérifier si le client possède une carte fidélité

carte = input("Le client possède-t-il une carte fidélité ? (oui / non) : ").lower()

# ----------------------------

# CALCUL DES REDUCTIONS

# ----------------------------

# Réduction de base selon montant

if montant < 10000:

reduction = 0

elif montant <= 50000:

reduction = montant * 0.05 # 5%

else:

reduction = montant * 0.10 # 10%

# Bonus fidélité

bonus_fidelite = 0

if carte == "oui":
13

bonus_fidelite = montant * 0.02

# Réduction totale

reduction_totale = reduction + bonus_fidelite

# ----------------------------

# CALCUL TVA

# ----------------------------

tva = (montant - reduction_totale) * 0.16

# ----------------------------

# PRIX FINAL

# ----------------------------

prix_final = montant - reduction_totale + tva

# ----------------------------

# AFFICHE LE TICKET

# ----------------------------

print("\n========== TICKET DE FACTURATION ==========")

print("Montant initial :", montant, "FC")

print("Réduction de base :", reduction, "FC")

if carte == "oui":

print("Bonus fidélité (+2%) :", bonus_fidelite, "FC")


14

else:

print("Bonus fidélité : 0 FC")

print("Réduction totale :", reduction_totale, "FC")

print("TVA (16%) :", tva, "FC")

print("------------------------------------------")

print("=> TOTAL À PAYER :", prix_final, "FC")

print("==========================================")

📝 EXPLICATION DU MINI-PROJET

🔸 1. Conditions sur les montants

On vérifie le montant pour appliquer les bonnes réductions.

🔸 2. Condition sur la carte fidélité

Si carte == "oui", on ajoute 2% de réduction.

🔸 3. TVA

TVA appliquée uniquement après réduction (comme en RDC).

🔸 4. Ticket final

Tout est affiché comme dans une vraie boutique ou supermarché.

Les boucles

1. Les boucles : c’est quoi ?


15

Imagine que tu dois faire une action plusieurs fois.

Exemples simples :

 ramasser 10 cailloux
 dire bonjour à 5 personnes
 compter de 1 à 20

Plutôt que de répéter la même chose 20 fois, Python dit :

👉 “Ne me fais pas écrire 20 lignes, je tourne en boucle pour toi !”

C’est ça une boucle.

2. La boucle for (Le robot qui compte pour toi)

La boucle for sert quand tu sais combien de fois tu veux répéter une action.

Exemple :

for i in range(5):
print("Bonjour !")

Cela affiche 5 fois “Bonjour !”.

Imagine ça :

Tu dis à un robot :

 “Compter jusqu’à 5”
 Et à chaque nombre, tu dis “Bonjour”

Et le robot obéit.
16

3. La fonction range() (La règle qui donne des chiffres)

range() crée une séquence de nombres.

 range(5) → 0, 1, 2, 3, 4
 range(1, 6) → 1, 2, 3, 4, 5
 range(2, 10, 2) → 2, 4, 6, 8

Donc c’est comme une règle graduée que Python utilise pour compter.

4. La boucle while (Le robot qui continue tant que…)

La boucle while continue tant que une condition est vraie.

Exemple :

i=1
while i <= 5:
print(i)
i=i+1

Cela compte de 1 à 5.

Exemple simple :

“Tant que tu n’es pas à la maison, continue de marcher.”

C’est la logique de while.

5. L’instruction break (Stop ! Arrête tout !)

break sert à dire :

👉 “Arrête la boucle immédiatement.”


17

Exemple :

for i in range(1, 11):


if i == 5:
break
print(i)
La boucle s’arrête quand i = 5.

6. L’instruction continue (Ignore et saute)

continue sert à dire :

👉 “Passe cette étape et continue avec la suivante.”

Exemple :

for i in range(1, 6):


if i == 3:
continue
print(i)
Le chiffre 3 est sauté !

RÉSUMÉ

Mot clé Ce que ça fait


for Répète un nombre précis de fois

range Donne une liste de nombres


while Répète tant qu’une condition est vraie

break Stoppe toute la boucle

continue Ignore une étape et continue


18

📝 EXERCICE RÉSOLU 1

Compter les sacs de ciment jusqu’à trouver un sac déchiré

Une boutique reçoit 10 sacs de ciment.


Le sac n°4 est déchiré.
Arrêter la vérification quand on arrive au sac déchiré.

✔️ Solution :

print("Vérification des sacs de ciment :")

for sac in range(1, 11):

print("Sac numéro :", sac)

if sac == 4:

print("⚠ Sac déchiré trouvé ! On arrête la vérification.")

break

Explication :

 On compte les sacs 1 par 1


 Quand on arrive au sac numéro 4
 On s’arrête immédiatement avec break
19

📝 EXERCICE RÉSOLU 2

Calculer combien de clients ont payé (en sautant ceux qui n'ont pas d'argent)

Un agent M-Pesa sert 6 clients, mais certains n'ont pas d'argent.


Si un client n’a pas d’argent (montant = 0), on saute ce client.

Montants :
[5000, 0, 2000, 0, 10000, 1500]

✔️ Solution :

montants = [5000, 0, 2000, 0, 10000, 1500]

print("Montants traités :")

for m in montants:

if m == 0:

print("Client sans argent → ignoré")

continue # on saute ce client

print("Client a payé :", m, "FC")

✔️ Explication :

 Quand le montant = 0 → on saute avec continue


 Sinon → on affiche le paiement
20

Mini-projet : "Gestion Ventes & Relances — Boutique Kolwezi"

1) Objectif

Aider un petit commerçant à :

 enregistrer des ventes (produit, quantité, client, montant),


 mettre à jour le stock,
 détecter les ruptures et erreurs (quantité négative),
 lister les clients ayant des paiements en attente,
 générer un rapport journalier (total ventes, meilleures ventes),
 relancer automatiquement (simulé) les clients n’ayant pas payé.

Tout cela via un menu simple en console. Le programme utilise boucles et contrôles
(break, continue) pour la robustesse.

2) Règles / Hypothèses

 On a une petite base initiale (produits + stock).


 Les ventes sont enregistrées et stock mises à jour.
 Si quantité saisie est None ou vide → on saute l’enregistrement (continue).
 Si quantité saisie est négative → erreur → stop (break) pour corriger.
 Les ventes non-payées sont marquées et listées pour relance.

3) Code complet (fichier suggéré : gestion_ventes.py)


# gestion_ventes.py

# Mini-projet : Gestion Ventes & Relances - Boutique Kolwezi

# Utilise : for, while, range, break, continue


21

import csv

from datetime import date

# Données initiales (exemple)

produits = {

"Ciment": 50,

"Savon": 30,

"Huile": 20,

"Sucre": 40

# Liste pour stocker ventes (en mémoire) ; chaque vente = dict

ventes = []

# Exemple : [Link]({"client": "Eric", "produit":"Ciment", "qte":2,


"montant":29000, "payé":False, "date":"2025-11-23"})

def afficher_stock():

print("\n--- STOCK ACTUEL ---")

for i, (nom, qte) in enumerate([Link](), start=1):

print(f"{i}. {nom} : {qte} unités")


22

print("--------------------\n")

def enregistrer_vente():

print("\n--- ENREGISTRER UNE VENTE ---")

afficher_stock()

produit = input("Nom du produit (exact) : ").strip()

if produit not in produits:

print("Produit non trouvé. Retour au menu.")

return

# Lecture quantité, gestion d'erreurs et de sauts

qte_str = input("Quantité vendue (laisser vide pour annuler) : ").strip()

if qte_str == "":

print("Saisie vide → annulation.")

return

try:

qte = int(qte_str)

except ValueError:

print("Quantité invalide. Annulation.")

return
23

# Si quantité négative => erreur grave : on stoppe l'opération

if qte < 0:

print("ERREUR : Quantité négative détectée ! Interruption pour correction.")

return # on n'utilise pas break ici (dans une ft), mais l'idée est d'arrêter
l'opération

# Vérifier stock

if qte > produits[produit]:

print(f"Attention : stock insuffisant (stock = {produits[produit]}). Vente annulée.")

return

prix_unitaire = float(input("Prix unitaire (FC) : "))

montant = prix_unitaire * qte

client = input("Nom du client : ").strip()

payé = input("Le client paie maintenant ? (oui/non) : ").strip().lower()

payé_bool = True if payé == "oui" else False

# Enregistrer la vente

vente = {

"client": client,
24

"produit": produit,

"qte": qte,

"montant": montant,

"payé": payé_bool,

"date": str([Link]())

[Link](vente)

# Mettre à jour le stock

produits[produit] -= qte

print(f"Vente enregistrée : {qte} x {produit} pour {montant} FC. Paiement : {'oui' if


payé_bool else 'non'}.\n")

def rapport_journalier():

if not ventes:

print("\nAucune vente enregistrée aujourd'hui.\n")

return

print("\n--- RAPPORT JOURNALIER ---")

total = 0

tot_non_payes = 0
25

ventes_par_produit = {}

for v in ventes:

total += v["montant"]

if not v["payé"]:

tot_non_payes += v["montant"]

ventes_par_produit[v["produit"]] = ventes_par_produit.get(v["produit"], 0) +
v["qte"]

print(f"Nombre de ventes : {len(ventes)}")

print(f"Chiffre d'affaire (TTC approximatif) : {total} FC")

print(f"Montant non payé : {tot_non_payes} FC")

# Top produit(s)

max_qte = max(ventes_par_produit.values())

top = [p for p,q in ventes_par_produit.items() if q == max_qte]

print("Meilleure(s) vente(s) :", ", ".join(top), f"avec {max_qte} unités vendues")

print("--------------------------\n")

def lister_clients_non_payes():

print("\n--- CLIENTS AVEC PAIEMENT EN ATTENTE ---")

trouvés = False
26

for v in ventes:

if not v["payé"]:

trouvés = True

print(f"Client: {v['client']} | Produit: {v['produit']} | Montant: {v['montant']} FC |


Date: {v['date']}")

if not trouvés:

print("Aucun client en attente.")

print("-----------------------------------------\n")

def sauvegarder_csv(nom_fichier="ventes_journalieres.csv"):

# Sauvegarde simple de toutes les ventes en CSV

champs = ["client","produit","qte","montant","payé","date"]

with open(nom_fichier, mode="w", newline='', encoding="utf-8") as f:

writer = [Link](f, fieldnames=champs)

[Link]()

for v in ventes:

[Link](v)

print(f"Ventes sauvegardées dans {nom_fichier}\n")

def menu():

while True:
27

print("=== MENU PRINCIPAL ===")

print("1. Afficher le stock")

print("2. Enregistrer une vente")

print("3. Rapport journalier")

print("4. Lister clients non payés (relance)")

print("5. Sauvegarder ventes (CSV)")

print("6. Quitter")

choix = input("Choix (1-6) : ").strip()

if choix == "1":

afficher_stock()

elif choix == "2":

enregistrer_vente()

elif choix == "3":

rapport_journalier()

elif choix == "4":

lister_clients_non_payes()

elif choix == "5":

sauvegarder_csv()

elif choix == "6":

print("Au revoir !")


28

break # on quitte la boucle while principale

else:

print("Choix invalide, réessaie.\n")

# Lancer le programme

if __name__ == "__main__":

menu()

4) Explication pas-à-pas (pour un débutant / comme à un enfant)

 Menu (while True) : on affiche les options et on attend que l’utilisateur


choisisse. La boucle recommence jusqu’à ce que l’utilisateur choisisse “Quitter”
(on utilise break pour sortir).
 for et enumerate dans afficher_stock() : on parcourt chaque produit et
on affiche son numéro et sa quantité.
 continue logique : si l’utilisateur laisse la quantité vide (annulation), on saute
l’enregistrement de la vente (on retourne au menu).
 Contrôle d’erreur : si la quantité est négative, on abandonne l’action (prévenir et
ne pas déduire du stock). Ici on ne break pas la boucle globale directement, on
annule l’opération ; mais si tu veux arrêter tout le programme sur erreur grave tu
peux utiliser break.
 Mise à jour du stock : après une vente, on enlève la quantité vendue du stock.
 Rapport journalier : on parcourt ventes (boucle for) pour calculer le total et
déterminer le produit le plus vendu.
 Relance : on parcourt ventes et on affiche les entrées non payées (on pourrait
ensuite envoyer un SMS — ici on simule par prints).
 Sauvegarde CSV : on écrit toutes les ventes dans un fichier pour garder un
historique.
29

5) Exemple d’usage (session simulée)

 Lancement → menu.
 Choix 2 → enregistrer une vente : Ciment, qte 2, prix unitaire 15000, client
Eric, payé non.
 Choix 2 → enregistrer une vente : Savon, qte 1, prix 500, client Amina, payé
oui.
 Choix 3 → rapport : montre chiffre d’affaire, meilleur produit.
 Choix 4 → lister non payés : montre Eric.
 Choix 5 → sauvegarde CSV.
 Choix 6 → quitter.

6) Extensions proposées (tu choisis)

 Ajouter validation stricte (reprompt si entrée invalide).


 Permettre ajout / suppression de produits (menu).
 Implémenter la relance automatique : génération d’un message pour chaque
client non payé (fichier log ou simulation d’envoi SMS).
 Interface simple avec Tkinter.
 Stock persistant : lire/écrire produits et ventes depuis/vers des fichiers
JSON/CSV au démarrage/arrêt.
 Rapport avancé : moyenne journalière, top-3 produits (utilise sorted() et
range() pour top N).

Les fonctions en Python — expliquées très simplement

Imagine que tu fais la même tâche encore et encore — par exemple : préparer une tasse
de thé. Une fonction en Python, c’est comme une recette ou une boîte à outils : tu écris
la recette une fois, puis tu peux la réutiliser quand tu veux sans tout réécrire.
30

Tu donnes les ingrédients (paramètres), la recette fait son travail, et tu peux obtenir un
résultat (valeur renvoyée).

1. Pourquoi utiliser des fonctions ?

 Éviter de répéter le même code (DRY = Don’t Repeat Yourself).


 Rendre ton code plus clair et plus facile à comprendre.
 Tester chaque petite partie séparément.
 Partager des recettes utiles dans d’autres programmes.

2. Comment on crée une fonction ? (la base)

def dire_bonjour():

print("Bonjour !")

 def : mot magique qui dit "je définis une fonction".


 dire_bonjour : nom de la fonction.
 () : endroit pour mettre les paramètres (les ingrédients).
 : puis indent => le corps (les instructions).

Pour l’appeler

dire_bonjour()

# affiche "Bonjour !"

3. Paramètres — donner des ingrédients à la fonction

def dire_bonjour_a(nom):

print("Bonjour", nom, "!")


31

Appel :

dire_bonjour_a("Eric")

# affiche: Bonjour Eric !

Tu peux donner plusieurs ingrédients :

def addition(a, b):

print(a + b)

4. return — rendre quelque chose (la fonction donne un résultat)

Différence : print() affiche quelque chose maintenant ; return renvoie une valeur
que tu peux réutiliser.

def addition(a, b):

return a + b

somme = addition(3, 4) # somme = 7

print(somme) # affiche 7

5. Valeurs par défaut — paramètre optionnel

def saluer(nom="ami"):

print("Bonjour", nom)

saluer() # Bonjour ami

saluer("Amina") # Bonjour Amina

6. Arguments nommés (keyword args) — plus clair


32

def creer_client(nom, ville):

print(nom, "de", ville)

creer_client(ville="Kolwezi", nom="Eric")

7. *args et **kwargs — pour plusieurs ingrédients flexibles

 *args : reçoit plusieurs valeurs positionnelles (comme une liste).


 **kwargs : reçoit plusieurs valeurs nommées (comme un dict).

def somme_multiple(*args):

total = 0

for v in args:

total += v

return total

somme_multiple(1,2,3)

# renvoie 6

def afficher_infos(**kwargs):

for cle, val in [Link]():

print(cle, ":", val)

afficher_infos(nom="Amina", age=25)

8. Portée (scope) — où les variables vivent

 Variables locales : créées dans la fonction — disparaissent quand la fonction finit.


 Variables globales : définies en dehors — accessibles partout (mais attention,
mieux vaut limiter leur usage).
33

x = 10 # global

def f():

y = 5 # local

print(x + y)

f() # OK

# print(y) -> erreur, y n'existe pas ici

9. Fonction anonyme : lambda (petite recette sans nom)

carre = lambda x: x * x

print(carre(4)) # 16

Utile pour de petites fonctions rapides (souvent utilisées avec map, filter, sorted).

10. Fonctions qui appellent d'autres fonctions / réutilisables

Les fonctions peuvent s'appeler entre elles — c'est la composition.

def TVA(montant, taux=16):

return montant * taux / 100

def prix_ttc(montant_ht, taux=16):

return montant_ht + TVA(montant_ht, taux)

Exercice 1 — (résolu) : Calculer le prix total TTC

Contexte réel : Ton magasin vend un article. On lit prix HT, quantité, taux TVA. Écris
une fonction qui calcule le prix total TTC.

Code :
def calcul_prix_ttc(prix_ht, quantite, taux_tva=16):
34

"""

Calcule le prix total TTC pour une quantité donnée.

prix_ht : prix unitaire hors taxe (float)

quantite : nombre d'articles (int)

taux_tva : taux en pourcentage (float), défaut 16%

"""

montant_ht = prix_ht * quantite

montant_tva = montant_ht * (taux_tva / 100)

montant_ttc = montant_ht + montant_tva

return montant_ttc

# Exemple d'utilisation

prix_unitaire = 10000.0

qte = 2

total = calcul_prix_ttc(prix_unitaire, qte, 16)

print(f"Prix total TTC pour {qte} articles : {total} FC")

Explication :

1. La fonction reçoit prix_ht, quantite, taux_tva.


2. Elle calcule montant_ht = prix_ht * quantite.
3. Puis montant_tva = montant_ht * taux_tva/100.
4. Retourne la somme (TTC).
5. On peut réutiliser la fonction pour n’importe quel produit.
35

Exercice 2 — (résolu) : Fiche d’apprenant + moyenne

Contexte réel : On veut une fonction qui crée une fiche pour un apprenant et calcule sa
moyenne et son statut (Admis si moyenne ≥ 12).

Code :
def creer_fiche(eleve_nom, notes):

"""

notes : liste de nombres (ex : [15, 12, 18])

Renvoie un dict avec nom, notes, moyenne, statut

"""

if not notes:

moyenne = 0

else:

moyenne = sum(notes) / len(notes)

statut = "Admis" if moyenne >= 12 else "Ajourné"

return {

"nom": eleve_nom,

"notes": notes,

"moyenne": round(moyenne, 2),

"statut": statut

}
36

# Exemple d'utilisation

fiche = creer_fiche("Eric", [15, 13, 18, 10])

print(fiche)

# -> {'nom': 'Eric', 'notes': [15, 13, 18, 10], 'moyenne': 14.0, 'statut': 'Admis'}

Explication :

 creer_fiche prend le nom et une liste de notes.


 Calcule la moyenne, arrondit, détermine le statut via une condition ternaire.
 Renvoie un dictionnaire (structure pratique).

Mini-projet (adapté à la réalité) : "Kit de Fonctions — Gestion Simple d’une Boutique"

Objectif

Créer un petit module de fonctions réutilisables pour une boutique (Kolwezi) qui permet
de :

 calculer prix TTC (par article et pour toute une vente)


 appliquer réduction selon montant et fidélité
 créer et afficher un reçu (ticket) propre
 sauvegarder le reçu dans un fichier texte

Ce mini-projet montre comment composer des fonctions propres et réutilisables.

Code complet — boutique_fonctions.py

# boutique_fonctions.py

from datetime import datetime

def calcul_prix_ttc(prix_ht, quantite, taux_tva=16):

montant_ht = prix_ht * quantite

montant_tva = montant_ht * (taux_tva / 100)


37

return round(montant_ht + montant_tva, 2)

def reduction_par_montant(montant_ht):

"""

Applique une réduction selon le montant HT :

<10000 -> 0%

10000-50000 -> 5%

>50000 -> 10%

"""

if montant_ht < 10000:

return 0

elif montant_ht <= 50000:

return montant_ht * 0.05

else:

return montant_ht * 0.10

def reduction_fidelite(montant_ht, est_fidele=False):

"""Si client fidèle, 2% de réduction sur le montant HT"""

if est_fidele:

return montant_ht * 0.02

return 0

def calcul_total_vente(lignes_vente, taux_tva=16, est_fidele=False):


38

"""

lignes_vente : liste de dicts : [{"produit":"Ciment", "prix_ht":10000, "qte":2}, ...]

Retourne un dict récapitulatif avec montant_ht, reductions, tva, total_ttc

"""

montant_ht_total = 0

for ligne in lignes_vente:

montant_ht_total += ligne["prix_ht"] * ligne["qte"]

red_base = reduction_par_montant(montant_ht_total)

red_fid = reduction_fidelite(montant_ht_total, est_fidele)

red_tot = red_base + red_fid

ht_apres_reduc = montant_ht_total - red_tot

tva = ht_apres_reduc * (taux_tva / 100)

total_ttc = ht_apres_reduc + tva

return {

"montant_ht": round(montant_ht_total, 2),

"reduction": round(red_tot, 2),

"ht_apres_reduc": round(ht_apres_reduc, 2),

"tva": round(tva, 2),

"total_ttc": round(total_ttc, 2)
39

def generer_recu(client, lignes_vente, recap):

"""

client: nom du client

lignes_vente: liste de dicts

recap: dict retourné par calcul_total_vente

"""

now = [Link]().strftime("%Y-%m-%d %H:%M")

lines = []

[Link]("=== RECU BOUTIQUE KOLWEZI ===")

[Link](f"Client : {client}")

[Link](f"Date : {now}")

[Link]("----------------------------------")

[Link]("Produits :")

for l in lignes_vente:

[Link](f"- {l['produit']} x{l['qte']} @ {l['prix_ht']} FC = {l['prix_ht']*l['qte']} FC")

[Link]("----------------------------------")

[Link](f"Montant HT : {recap['montant_ht']} FC")

[Link](f"Réduction : {recap['reduction']} FC")

[Link](f"HT après réduction : {recap['ht_apres_reduc']} FC")


40

[Link](f"TVA : {recap['tva']} FC")

[Link](f"TOTAL TTC : {recap['total_ttc']} FC")

[Link]("==================================")

return "\n".join(lines)

def sauvegarder_recu(fichier_nom, texte):

with open(fichier_nom, "w", encoding="utf-8") as f:

[Link](texte)

# Exemple d'exécution (si on exécute ce fichier directement)

if __name__ == "__main__":

lignes = [

{"produit":"Ciment", "prix_ht":15000, "qte":2},

{"produit":"Savon", "prix_ht":500, "qte":3},

recap = calcul_total_vente(lignes, taux_tva=16, est_fidele=True)

recu = generer_recu("Eric", lignes, recap)

print(recu)

sauvegarder_recu("recu_exemple.txt", recu)

print("\nReçu sauvegardé dans 'recu_exemple.txt'")


41

Explication du mini-projet (simple)

1. calcul_prix_ttc : petite fonction utile pour un article.


2. reduction_par_montant et reduction_fidelite : fonctions séparées pour la
logique des réductions (séparation des responsabilités).
3. calcul_total_vente : combine les lignes (articles) et applique les réductions
puis la TVA. Renvoie un dictionnaire récapitulatif.
4. generer_recu : crée un texte joli pour le ticket.
5. sauvegarder_recu : écrit le reçu dans un fichier texte pour archives.

RETURN / Factoriel / Récursivité / Variables locales & globales

Qu’est-ce que return ? 🔁

 Imagine une boîte magique (la fonction). Tu donnes des ingrédients, la boîte les
transforme et te donne quelque chose en sortie.
 En Python, pour que la boîte rende quelque chose, on utilise return.

Exemple simple :

def double(x):

return x * 2

res = double(5) # res vaut 10

print(res) # affiche 10

 Sans return, la fonction fait le travail mais ne renvoie rien (elle renvoie None par
défaut).

 return termine aussi immédiatement l’exécution de la fonction — tout code après


return dans la fonction n’est pas exécuté.

Le factoriel — définition simple 🧮

Pour un entier n ≥ 0, le factoriel n! est :

 0! = 1 (par convention)
 1! = 1
 2! = 2 × 1 = 2
 3! = 3 × 2 × 1 = 6
42

 4! = 4 × 3 × 2 × 1 = 24
 etc.

Le factoriel sert pour compter des arrangements (combien d’ordres possibles pour n
objets).

Récursivité — c’est quoi ? ♻️

 Récursivité : une fonction qui s’appelle elle-même pour résoudre un petit


morceau du problème.
 Très naturelle pour le factoriel : n! = n × (n-1)! — la fonction factorielle
calcule n × factoriel(n-1) jusqu’à atteindre le cas de base 0 ou 1.

Important : toujours définir un cas de base (arrêt), sinon la fonction s’appellera sans fin
→ erreur (dépassement de profondeur).

Exemple : factoriel récursif et itératif

def factoriel_rec(n):

if n < 0:

raise ValueError("n doit être >= 0")

if n == 0 or n == 1:

return 1 # cas de base

return n * factoriel_rec(n - 1)

Itératif (boucle) :

def factoriel_iter(n):

if n < 0:

raise ValueError("n doit être >= 0")

resultat = 1

for i in range(2, n + 1):

resultat *= i

return resultat
43

Les deux donnent le même résultat. La version itérative utilise une boucle for; la récursive
utilise des appels de fonctions empilés.

Variables locales & globales — où vivent les variables ? 🌍 / 🏠

 Variable locale : déclarée dans la fonction. Elle n’existe que pendant l’exécution
de cette fonction.

def f():

a = 5 # a est locale

Après f() → a n’est plus accessible.

 Variable globale : déclarée en dehors de toutes les fonctions. Accessible de partout


(mais attention !).

x = 10 # globale

def g():

print(x) # peut lire x

Modifier une globale depuis une fonction : on doit utiliser global (à éviter si possible).

compteur = 0

def inc():

global compteur

compteur += 1

Mieux vaut retourner une valeur et l’assigner à l’extérieur :

def inc_local(c):

return c + 1

compteur = inc_local(compteur)

Pourquoi éviter global ? parce que ça rend le code fragile et difficile à comprendre
quand de nombreuses fonctions modifient les mêmes variables.
44

Cas pratique : compter les appels récursifs (expliquer la portée)

Exemple (mauvaise idée avec global) :

calls = 0

def fact_bad(n):

global calls

calls += 1

if n <= 1:

return 1

return n * fact_bad(n - 1)

print(fact_bad(5)) # calcule 120

print(calls) # affiche combien d'appels (ici 6)

Précautions sur la récursivité

 Python limite la profondeur d’appel (par défaut ~1000). Pour de très grands n,
récursion récursive simple peut échouer.
 Pour gros calculs, on préfère des solutions itératives ou des techniques comme la
mémoïsation (cacher les résultats précédents) ou utiliser [Link]().

Exercice 1 — (Résolu) Factoriel en contexte réel (arrangements de caisses)

Énoncé (réalité) :
Un commerçant veut savoir de combien de façons il peut placer sur une étagère n caisses
différentes (chaque disposition différente compte). Écris une fonction récursive
arrangements(n) qui rend n!. Explique et donne un exemple pour n = 5.

Solution — code + explication


# solution récursive simple
def arrangements(n):
"""
Retourne n! (nombre de permutations de n caisses)
"""
45

if n < 0:
raise ValueError("n doit être >= 0")
if n == 0 or n == 1:
return 1
return n * arrangements(n - 1)

# Exemple
n = 5
print(f"Nombre d'arrangements pour {n} caisses :", arrangements(n))

Étapes / explication pour un enfant :

 Si tu as 5 caisses, pour choisir la place de la première caisses tu as 5 choix, pour la


deuxième 4, puis 3, 2, 1.
 Donc total = 5 × 4 × 3 × 2 × 1 = 120.
 La fonction fait la même chose : elle se réduit à n × (n-1)! jusqu’à 1! qui vaut 1
(cas de base).

Sortie attendue :

Nombre d'arrangements pour 5 caisses : 120

Exercice 2 — (Résolu) Récursivité et portée : calculer la somme des prix en


récursion sans global

Énoncé (réalité) :
Tu as une liste de montants reçus dans la journée (en FC) : ventes = [5000, 12000,
0, 8000]. Écris une fonction récursive somme_ventes(ventes, idx) qui calcule la
somme des ventes depuis l’indice idx jusqu’à la fin. Fais la version récursive qui
retourne le total (sans utiliser de variable globale). Donne l’exécution pour cette liste.

Solution — code + explication


def somme_ventes(ventes, idx=0):
"""
Retourne la somme des éléments de la liste ventes
à partir de l'indice idx jusqu'à la fin (récursif).
"""
# cas de base : si idx dépasse la liste, somme = 0
if idx >= len(ventes):
return 0
# sinon : valeur courante + somme du reste
return ventes[idx] + somme_ventes(ventes, idx + 1)

# Exemple réel
ventes = [5000, 12000, 0, 8000]
total = somme_ventes(ventes)
print("Total des ventes :", total, "FC")
46

Explication simple :

 On prend la première vente, on ajoute la somme des ventes suivantes (celle-ci


calculée par l’appel récursif).
 Quand on atteint la fin de la liste (indice trop grand), on renvoie 0 — c’est le cas
de base.
 Pas besoin de variable globale : chaque appel renvoie sa partie de la somme, et les
résultats sont additionnés en remontant.

Sortie attendue :

Total des ventes : 25000 FC

Bonus pédagogique : mesurer le nombre d’appels récursifs proprement


(sans global)

On peut renvoyer (résultat, count) comme tuple :

def fact_with_count(n):
"""
Retourne (factoriel_de_n, nombre_d'appels_effectues)
"""
if n <= 1:
return 1, 1
sub_fact, sub_calls = fact_with_count(n - 1)
return n * sub_fact, sub_calls + 1

f, calls = fact_with_count(5)
print("5! =", f, " — appels récursifs :", calls)

Sortie :

5! = 120 — appels récursifs : 6

Récapitulatif simple

 return → la fonction te donne quelque chose en sortie.


 Factoriel (n!) → produit de tous les entiers de 1 à n.
 Récursivité → la fonction se répète elle-même sur un petit problème (toujours
avec un cas de base !).
 Local vs global → mieux garder les variables locales et retourner les résultats
plutôt que d’utiliser global.

47

Les Fonctions Natives & les Paramètres Avancés (*args, kwargs) en Python

1. Les fonctions natives (built-in functions)

Python possède déjà plusieurs fonctions “prêtes à l’emploi”, comme des outils dans une
boîte.
Tu n’as pas besoin de les créer toi-même : elles sont déjà là.

🎒 Exemple simple

 print() → affiche quelque chose


 len() → compte la longueur d’une liste, chaîne…
 sum() → additionne tous les éléments d’une liste
 max() → donne le plus grand élément
 min() → donne le plus petit
 type() → donne le type (int, str, float…)
 range() → sert à créer des séquences de nombres
 input() → permet à l’utilisateur d’écrire

Imagine :

Python, c’est comme une école.


Dans cette école, il y a des professeurs déjà présents (fonctions natives).
Tu peux les appeler quand tu veux.

Exemples concrets

👉 Exemple 1 : len()

nom = "Hakili"

print(len(nom)) # Résultat : 6

👉 Exemple 2 : sum()
notes = [12, 15, 17]
print(sum(notes)) # Résultat : 44

👉 Exemple 3 : max()
temperatures = [29, 31, 33, 30]
print(max(temperatures)) # Résultat : 33
48

2. **Les paramètres avancés : *args et kwargs

Ces deux mots sont très puissants et très simples à comprendre si on les imagine bien.

A. *Comprendre args (les arguments multiples)

Imagine que tu es vendeur de beignets à Kolwezi.


Une personne vient et dit :

“Donne-moi 3 beignets”
→ Tu mets 3 beignets.

Mais *args c’est différent :


C’est comme si quelqu’un arrivait avec 1, 3, ou 10 commandes, et toi tu dois accepter
tout.

⛳ Idée :
*args = une liste de valeurs qu’on reçoit, même si on ne connaît pas leur nombre.

👉 Exemple
def addition(*args):
return sum(args)

print(addition(2, 4))
print(addition(1, 2, 3, 4, 5))

Python accepte tous les nombres que tu envoies.

B. **Comprendre kwargs (arguments nommés)

Imagine maintenant qu’un client commande dans ta boutique :

 riz=5 kg
 sucre=2 kg
 huile=1 litre

Chaque chose a un nom et une valeur.

C’est exactement ce que fait **kwargs.


49

⛳ Idée :
**kwargs = un dictionnaire de valeurs nommées.

👉 Exemple
def afficher_infos(**kwargs):
for cle, valeur in [Link]():
print(cle, ":", valeur)

afficher_infos(nom="Hakili", ville="Kolwezi", age=23)

Comparaison simple
Syntaxe Signifie Métaphore

*args Plusieurs valeurs un sac de beignets

**kwargs Plusieurs valeurs avec noms une facture détaillée

3. Exercices résolus (adaptés à la réalité)

*Exercice 1 (Résolu) — Utiliser args

🎯 Énoncé

Créer une fonction qui calcule le montant total dépensé par un client dans une journée
(il peut faire 1, 3 ou 10 achats).

✅ Solution
def total_depenses(*args):
return sum(args)

print("Total du client :", total_depenses(500, 2000, 1500, 800), "FC")

Explication

 *args accepte n’importe combien de montants.


 sum() additionne tout.
50

**Exercice 2 (Résolu) — Utiliser kwargs

Énoncé

Créer une fonction qui affiche proprement les informations d’un étudiant inscrit dans un
centre de formation.

Exemple d’appel :
infos_etudiant(nom="Daniel", age=22, filiere="Informatique",
ville="Kolwezi")

✅ Solution
def infos_etudiant(**kwargs):
print("=== FICHE ÉTUDIANT ===")
for cle, valeur in [Link]():
print(f"{[Link]()} : {valeur}")

infos_etudiant(nom="Daniel", age=22, filiere="Informatique",


ville="Kolwezi")

**Mini-Projet : Système de Facturation Flexible (Avec *args et kwargs)

🎯 Objectif

Créer un programme qui :

1. calcule le total d’achats du client (*args)


2. affiche les informations du client (**kwargs)
3. donne automatiquement la facture finale

Code complet et commenté


def total_achats(*args):
"""Calcule le total de tous les montants envoyés."""
return sum(args)

def infos_client(**kwargs):
"""Affiche les informations du client de manière propre."""
print("=== INFORMATIONS CLIENT ===")
for cle, valeur in [Link]():
print(f"{[Link]()} : {valeur}")
print()

def facture(**kwargs):
51

"""Crée une facture simple."""


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

# ---- Programme principal ----

# 1. Informations du client
infos_client(nom="Kande", ville="Kolwezi", telephone="0971234567")

# 2. Total des achats du jour


montant = total_achats(1500, 3000, 2500, 700)
print("Montant total :", montant, "FC\n")

# 3. Génération de la facture
facture(client="Kande", total=str(montant) + " FC", statut="Payé")

Résultat attendu
=== INFORMATIONS CLIENT ===
Nom : Kande
Ville : Kolwezi
Telephone : 0971234567

Montant total : 7700 FC

=== FACTURE ===


Client : Kande
Total : 7700 FC
Statut : Payé
52

POO #1 — Introduction à la Programmation Orientée Objet


(Python)

1. C’est quoi la POO ?

Imagine le monde réel :

 Une voiture
 Un chien
 Un téléphone
 Un élève

Tous ces objets existent, ont des caractéristiques et peuvent faire des actions.

👉 La Programmation Orientée Objet (POO) consiste à apprendre à Python à créer ce


genre d’objets, comme s’il construisait un mini-monde.

Exemple simple

Imagine que tu veux créer un chien dans Python.

Un chien :

 a un nom (Rex)
 a un âge (4 ans)
 peut aboyer

Donc en POO, Python peut créer ce chien sous forme d’objet.

2. Les 2 mots magiques : Classe & Objet

1) Classe

Une classe, c’est comme le plan d’une maison.

On ne peut pas y habiter.


C’est juste un plan, un modèle, une recette.

👉 Exemple :
Une classe Chien explique :
53

 comment un chien devrait être,


 quelles caractéristiques il doit avoir,
 quelles actions il peut effectuer.

2) Objet

L’objet, c’est la maison construite à partir du plan.


C’est l’exemple réel.

 Le plan = classe
 La maison construite = objet

👉 La classe "Chien" → permet de créer des chiens (objets) :

 Rex
 Samba
 Milou

3. Pourquoi utiliser la POO ? (Explication très simple)

La POO permet :

✔️ De mieux organiser le code

Comme ranger des vêtements dans différents tiroirs.

✔️ D’éviter de répéter le code

On fait un plan (classe) → on l’utilise plusieurs fois.

✔️ De créer des programmes plus grands

Plus les projets sont complexes, plus la POO devient utile.

4. Première classe Python

Voici une classe simple :

class Chien:
pass

pass = rien dedans pour l’instant.


54

C’est juste le plan vide d’un chien.

🐕 5. Ajouter des attributs (caractéristiques)

Un chien a des caractéristiques :

 Nom
 Âge

On les met dans la fonction spéciale __init__().

class Chien:
def __init__(self, nom, age):
[Link] = nom
[Link] = age

👉 Explication comme à un enfant :

 __init__ = le constructeur (il construit l’objet)


 self = "moi-même" (le chien lui-même)
 nom et age → les valeurs envoyées

🐾 6. Créer un objet

Maintenant, créons un chien :

mon_chien = Chien("Rex", 4)

👉 Ici :

 mon_chien est l'objet


 "Rex" → nom
 4 → âge

📣 7. Ajouter des méthodes (actions)

Un chien peut aboyer.


55

class Chien:
def __init__(self, nom, age):
[Link] = nom
[Link] = age

def aboyer(self):
print(f"{[Link]} aboie : Waouh ! Waouh !")

👉 Explication simple :

Une méthode, c’est une fonction spéciale qui appartient à l’objet.

🐶 Utilisation :
mon_chien = Chien("Rex", 4)
mon_chien.aboyer()

➡ Affiche :
Rex aboie : Waouh ! Waouh !

Concept Explication
Classe Le plan / modèle
Objet Le résultat réel créé à partir du plan
Attribut La caractéristique (nom, âge…)
Méthode L’action (aboyer, courir…)
init Le constructeur (il crée l’objet)
self L’objet lui-même

Exercice 1 (résolu) – Adapté à la réalité

🎯 Énoncé

Créer une classe Etudiant, avec :

 nom
 filière
 une méthode presentation() qui affiche :

“Je m’appelle … et j’étudie … à Kolwezi”


56

Solution :

class Etudiant:

def __init__(self, nom, filiere):

[Link] = nom

[Link] = filiere

def presentation(self):

print(f"Je m'appelle {[Link]} et j'étudie {[Link]} à Kolwezi.")

etu1 = Etudiant("Linda", "Informatique")

[Link]()

📝 Exercice 2 (résolu) – Adapté à la réalité

🎯 Énoncé

Créer une classe Produit pour un magasin à Kolwezi, avec :

 nom
 prix
 une méthode afficher()
qui montre : “Produit : … – Prix : … FC”

Solution :
class Produit:
def __init__(self, nom, prix):
[Link] = nom
[Link] = prix

def afficher(self):
print(f"Produit : {[Link]} – Prix : {[Link]} FC")

p1 = Produit("Riz 25kg", 45000)


[Link]()
57

Mini-Projet POO (Introduction)

🏪 Système simple de gestion de clients (Kolwezi Shop)

🎯 Objectif

Créer un programme qui :

 crée des clients


 stocke leur nom et leur numéro
 permet de les saluer
 affiche leurs informations

💻 Code complet
class Client:
def __init__(self, nom, telephone):
[Link] = nom
[Link] = telephone

def saluer(self):
print(f"Bonjour {[Link]}, merci d'être passé à notre boutique
!")

def infos(self):
print(f"Client : {[Link]} | Téléphone : {[Link]}")

# ---- Programme principal ----

c1 = Client("Patrick", "0970001234")
c2 = Client("Miriam", "099459876")

[Link]()
[Link]()

print()

[Link]()
[Link]()

🎉 Résultat
Bonjour Patrick, merci d'être passé à notre boutique !
Client : Patrick | Téléphone : 0970001234

Bonjour Miriam, merci d'être passé à notre boutique !


Client : Miriam | Téléphone : 099459876
58

Le Constructeur en Python ( init )

🎯 1. C’est quoi un constructeur ?

Imagine que tu veux construire une maison.


Avant d’y habiter, tu dois :

 choisir la couleur
 mettre des portes
 installer des fenêtres
 poser un toit

Le constructeur, dans Python, c’est une fonction spéciale qui construit l’objet au
moment où il naît.

👉 En POO, quand tu dis :

maison = Maison()

Python demande :

“Que dois-je mettre dans cette maison ?”

La réponse se trouve dans :

python

def __init__(self, ...):

🐣 2. Le constructeur __init__

 __init__ → signifie “initialiser”, “préparer”, “construire”.


 Il est appelé automatiquement à la création d’un objet.
 Il sert à donner les caractéristiques de départ d’un objet.

💡 Tu n’as pas besoin d’appeler __init__ toi-même.


Python le fait tout seul !

Exemple simple

Voici une classe Chien avec un constructeur :


59

class Chien:
def __init__(self, nom, age):
[Link] = nom
[Link] = age

Quand tu fais :

c = Chien("Rex", 3)

Python exécute automatiquement :

[Link] = "Rex"
[Link] = 3

Donc c devient un objet chien avec :

 nom = Rex
 âge = 3

🛠 3. Pourquoi utiliser un constructeur ?

✔️ pour définir les informations obligatoires d’un objet


✔️ pour éviter de répéter du code
✔️ pour s’assurer que chaque objet est créé proprement
✔️ pour donner une “identité” à chaque objet dès sa naissance

🧮 4. Le rôle de self

self est très simple :

👉 self = moi-même

Si l’objet s’appelle “Rex”, alors :

 [Link] = le nom de Rex


 [Link] = l’âge de Rex

Chaque objet a son propre espace.


60

📦 5. Exemple 1 — Adapté à la réalité : Un étudiant

🎯 Énoncé

Créer une classe Etudiant avec nom + filière.

✅ Code
class Etudiant:
def __init__(self, nom, filiere):
[Link] = nom
[Link] = filiere

etu = Etudiant("Junior", "Informatique")


print([Link])
print([Link])

➡ Résultat

Junior
Informatique

📱 Exemple 2 — Un téléphone

🎯 Énoncé

Créer une classe Téléphone avec marque + modèle.

✔️ Code
class Telephone:
def __init__(self, marque, modele):
[Link] = marque
[Link] = modele

t1 = Telephone("Samsung", "A52")
t2 = Telephone("Tecno", "Spark 8")

print([Link], [Link])
print([Link], [Link])

🚀 6. Mini Projet — Gestion de Produits dans un Magasin de Kolwezi

🎯 Objectif du mini-projet

Créer un programme qui gère des produits avec :


61

 nom
 prix
 quantité
 une méthode pour afficher les infos
 une méthode pour calculer la valeur totale du stock

Tout repose sur le constructeur.

🏪 Code complet
class Produit:
def __init__(self, nom, prix, quantite):
[Link] = nom
[Link] = prix
[Link] = quantite

def afficher(self):
print(f"Produit : {[Link]}")
print(f"Prix : {[Link]} FC")
print(f"Quantité : {[Link]}")
print("-----------------------------")

def valeur_stock(self):
return [Link] * [Link]

# --- Programme principal ---

p1 = Produit("Riz 25kg", 45000, 12)


p2 = Produit("Huile 5L", 12000, 20)
p3 = Produit("Sucre 5kg", 9000, 15)

[Link]()
[Link]()
[Link]()

print("Valeur totale du stock :")


total = p1.valeur_stock() + p2.valeur_stock() + p3.valeur_stock()

print(total, "FC")

🧮 Résultat attendu
Produit : Riz 25kg
Prix : 45000 FC
Quantité : 12
-----------------------------
Produit : Huile 5L
Prix : 12000 FC
62

Quantité : 20
-----------------------------
Produit : Sucre 5kg
Prix : 9000 FC
Quantité : 15
-----------------------------
Valeur totale du stock :
873000 FC

Vous aimerez peut-être aussi