Résumé de Cours : Langage Python
Spécialité : Modélisation et Algorithmique
Préparation à l’Examen – Session 2026
1. Syntaxe de Base et Opérateurs
1.1. Commentaires et Indentation
— Commentaires simples : On utilise le signe # pour une seule ligne.
— Commentaires multilignes : On utilise les triples guillemets ’’’ commentaire ’’’
ou """ commentaire """ [7].
— Indentation (faragh d l-space) : L’indentation en Python (généralement 4 es-
paces) est obligatoire pour définir les blocs de code (bhal f if ou for). Une mauvaise
indentation provoque une erreur de syntaxe [26].
1.2. Opérateurs Arithmétiques Speciaux
— // Division entière (9issma m3sora/sahiha) : Donne le quotient entier sans
virgule (ex : 10 // 4 donne 2) [10].
— % Modulo (baqi d l-9issma) : Donne le reste de la division entière (ex : 10 % 4
donne 2) [10].
— ** Exposant (l-os) : Calcule la puissance (ex : 3 ** 2 donne 9) [10].
—
2. Structures de Données (List, Tuple, Dict)
Cette section est le cœur classique des questions de cours d’examen :
2.1. Tableau Comparatif des Structures
Structure Syntaxe Caractéristiques Majeures
List (la-jora) [1, 2, 3] Ordonnée, modifiable (mbedla/mutable),
hétérogène (types mkhaltin) [3].
Tuple (jorzat constants) (1, 2, 3) Ordonné, non modifiable (la yomkin
ta3dilouh/immutable). Très rapide en mémoire
[2].
Dictionnaire (dict) {cle: valeur} Non ordonné (accès par clé unique), modifiable,
stockage par paires clé-valeur [3].
1
2.2. Affectation vs Copie de Liste
— Affectation directe (y = x) : Les deux variables pointent vers le même objet en
mémoire. Si on modifie y, x sera également modifié [12].
— Copie indépendante (y = [Link]()) : Crée un nouvel objet indépendant en mémoire.
La modification de y n’impacte pas x [12].
3. Fonctions, Arguments et Fichiers
3.1. Arguments Variables (*args et **kwargs)
— *args (arguments variables) : Permet de passer un nombre indéterminé d’argu-
ments positionnels sous forme de tuple [16].
— **kwargs (keyword arguments) : Permet de passer un nombre indéterminé d’ar-
guments nommés sous forme de dictionnaire [17].
3.2. Fonction Lambda (Dala anonyme)
Une fonction lambda est une fonction anonyme (dala majhoula) écrite en une seule ligne
avec la syntaxe : lambda arguments: expression (ex : double = lambda x: x * 2) [15].
3.3. Gestion de Fichiers (Modes d’ouverture)
— Mode ’r’ (lecture/9raya) : Ouvre le fichier pour lire son contenu. Erreur si le
fichier n’existe pas [8].
— Mode ’w’ (écriture/ktaba) : Ouvre en écriture. Écrase (m7i) tout le contenu exis-
tant ou crée le fichier s’il n’existe pas [8].
— Mode ’a’ (ajout/zyada) : Ouvre pour ajouter du texte à la fin du fichier sans
effacer l’existant [8, 10].
—
4. Calcul Scientifique (NumPy & Matplotlib)
0.1 4.1. Différence Majeure : List vs NumPy Array
— List classique : Hétérogène (types différents admis), taille dynamique (modifiable
facilement) [3].
— NumPy Array (ndarray) : Strictement homogène (tous les éléments ont le même
type), taille fixe à la création, optimisé mathématiquement pour le calcul rapide (al-
7issabat al-masfoufya) [7].
4.2. Matplotlib – Représentation Graphique
— [Link](nrows, ncols) : Permet de créer une grille de sous-graphiques (axes)
dans une seule figure [19].
— Échelles de tracé : [Link]() (linéaire), semilogy() (axe Y logarithmique), semilogx()
(axe X logarithmique), loglog() (les deux axes logarithmiques) [21, 22].
2
1. Bases de la POO (Kayanat)
La POO (Programmation Orientée Objet / Mowajjah l l-Kayanat) est un paradigme qui
regroupe les données et les fonctions dans des entités appelées objets [11].
— Classe (class) : Le modèle ou plan de construction (t-tsmim / l-gabarit) qui définit
les attributs et les méthodes [12].
— Objet / Instance (Instance) : Une représentation concrète (nmoudaj l-waqi3i)
créée à partir d’une classe [15].
— Constructeur ( init ) : Méthode spéciale appelée automatiquement lors de la
création d’un objet pour initialiser ses attributs [22].
— self : Mot-clé représentant l’instance actuelle de l’objet (l-mochira l l-objet l-7ali)
[20, 21].
—
2. Concepts Avancés : Héritage et Polymorphisme
2.1. Héritage (l-irt / l-heritage)
L’héritage permet de créer une classe fille (classe dérivée) à partir d’une classe mère (classe
de base) pour réutiliser et spécialiser le code [5] :
— super() : Fonction spéciale pour appeler le constructeur ou les méthodes de la classe
mère sans citer son nom [8].
— Héritage Multiple (Heritage ta3addoudi) : Une classe fille qui hérite de plusieurs
classes mères en même temps (ex : class Enfant(Mere1, Mere2)) [15].
— MRO (Method Resolution Order) : L’ordre exact que Python utilise pour cher-
cher les méthodes héritées lors d’un appel [16, 19].
0.2 2.2. Polymorphisme (ta3addod al-achkal)
Le polymorphisme permet à des classes différentes d’avoir une méthode portant le même
nom mais avec des comportements différents (ex : [Link]() fait ”Waf” et [Link]()
fait ”Miaou”) [2, 4].
3. Encapsulation (ta3lib / taghlif ) et Abstraction
3.1. Les 3 Niveaux d’Accès aux Attributs
Niveau d’Accès Syntaxe Description (Visibilité f l-code)
Public [Link] Accessible partout à l’extérieur de la classe [9].
Protégé (Protected) self. nom Un seul underscore. Réservé par convention à la classe et
ses sous-classes [10].
Privé (Private) self. nom Double underscore. Invisible à l’extérieur (mécanisme de
Name Mangling) [11].
3
3.2. Accesseurs (Getters), Mutateurs (Setters) et @property
— Accesseur / Getter (l-9ari) : Méthode pour lire la valeur d’un attribut privé [13,
14].
— Mutateur / Setter (l-mbedel) : Méthode pour modifier de manière contrôlée la
valeur d’un attribut privé (avec vérification) [13, 15].
— Décorateur @property : Permet d’utiliser les méthodes Getters et Setters de manière
naturelle comme s’il s’agissait d’attributs publics [16].
3.3. Abstraction (al-tajrid)
Une classe abstraite est une classe incomplète (la yomkin instanciation dyalha direct)
qui sert de cadre obligatoire pour ses classes filles. Elle nécessite l’importation du module
abc [9, 11] :
from abc import ABC, abstractmethod
4. Variable Spéciale et Importation de Modules
4.1. Le bloc if name == " main ":
— name : Variable spéciale de Python [12].
— " main " : Si le fichier est exécuté directement, name prend la valeur " main ".
S’il est importé, il prend le nom du fichier [12].
— Utilité du bloc : Permet de lancer des tests ou des démonstrations uniquement si le
script est exécuté directement, sans les lancer s’il est importé ailleurs [12].
4.2. Importation de Module (t-khlat d les fichiers .py)
— import mon module : Importation classique [16].
— from mon module import somme : Importer uniquement un élément [16].
— import mon module as md : Renommer avec un alias (raccourci) [17].
4
Fiche de Traduction : Algorithme / Python → MATLAB Spécialité : Modélisation
et Calcul Scientifique Préparation à l’Examen – Session 2026
1. Règles d’Or de Traduction (9awa3id l-asasiya)
— L-Index (mouftah l-blassa) : F Python, l-indexation kat-bda b 0 [21]. F MATLAB,
kat-bda b 1 (Erreur classique f l-exam !) [19, 21].
— Fin d bloc (nihayat l-bloc) : F Python, on utilise l’indentation (space f l-bdaya)
[26]. F MATLAB, chaque bloc (if, for, while, function) doit obligatoirement se
terminer par end [10, 27].
— L-Affichage (ktaba f l-ecran) : F Python, on utilise print() [25]. F MATLAB, on
utilise disp() ou simplement on enlève le point-virgule ; à la fin de la ligne [6, 16].
—
2. Structures de Contrôle (If, Loops)
Algorithme (Pseudo-code) Syntaxe Python Syntaxe MATLAB
Si cond Alors if cond: if cond
... ... ...
SinonSi cond2 Alors elif cond2: elseif cond2
... ... ...
Sinon else: else
... ... ...
FinSi end [27]
Tant que cond Faire while cond: while cond
... ... ...
FinTantQue end [28]
Pour i de start à end Faire for i in range(start, for i = start:end
... end+1): ...
FinPour ... end [30]
5
3. Vecteurs et Matrices (Mawa9i3 l-A3dad)
Opération En Python (NumPy) En MATLAB
Vecteur ligne (sater) v = [Link]([1, 2, 3]) v = [1, 2, 3] (ou v = [1
2 3]) [17]
Vecteur colonne (7asout) v = [Link]([[1], [2], v = [1; 2; 3] (point-
[3]]) virgule) [17]
Génération de suite [Link](start, end+1, start:step:end (step au mi-
step) lieu !) [18]
Intervalle régulier [Link](start, end, linspace(start, end,
num) num) [19]
Taille d’un vecteur len(v) length(v) (ou numel(v))
[20, 27]
Dimensions d’une matrice [Link] size(A) [24]
Sous-matrice / Tranche A[0:2, 1:3] A(1:2, 2:3) (1-indexed !)
[23]
Transposée (m9loob) A.T A’ (ou transpose(A)) [18]
Inverse de matrice [Link](A) inv(A) [22]
Multiplication de matrices A @ B A * B [22]
Élément par élément (.*) A * B A .* B (très important !) [26]
Puissance élément par élém. A ** 2 A .^ 2 (point avant l’expo-
sant) [26]
Matrice unitaire [Link](3) eye(3) [25]
Matrice de zéros [Link]((m, n)) zeros(m, n) [25]
4. Déclaration des Fonctions ([Link])
F MATLAB, la fonction doit obligatoirement être enregistrée dans un fichier portant
exactement le même nom avec l’extension .m [10] :
Exemple : Fonction de calcul Somme et Produit
En Python : En MATLAB (somme produit.m) :
def somme_produit(x, y): function [a, b] = somme_produit(x, y)
a = x + y a = x + y;
b = x * y b = x * y;
return a, b end