Python_s4
Python_s4
Python
MSEI-1 2024/2025
Pr. Benomar Kawtar
Présentation
Définition :
Python est un langage de programmation interprété multi plateforme dont la première version
a été proposée fin des années 1980 par le programmeur néerlandais Guido Van Rossum.
Python est un langage de programmation multi paradigme (programmation orientée objet et la
programmation structurée). Il utilise le typage dynamique et la gestion de la mémoire
automatique (via un garbage collector).
▪ Interprété : Python est doté d’un interpréteur. Il lit le code source, le convertit en une forme
intermédiaire appelée bytecode, puis exécute ce bytecode, souvent dans une machine
virtuelle (PMV). Cela rend le code source flexible et portable.
▪ Un typage dynamique : On n’a pas besoin de déclarer explicitement les types des variables.
Les types sont déduits au moment de l'exécution, ce qui rend le code plus court et plus
flexible.
Instructions de lecture et écriture
Pourquoi
▪ Simplicité et code moins volumineux
#include <stdio.h>
int main(void) { print("hello, world")
printf("hello, world\n");
Langage Python
}
Langage C
▪ Très bien documenté
▪ Grande communauté
▪ La version 2 existe toujours au sein des systèmes complexes et des systèmes d’exploitation
mais ne sera plus mis à jour et ne recevra plus de mises à jour de sécurité.
Pas besoin de déclarer ou typer explicitement une variable avant de lui affecter une valeur
(Typage Dynamique). Exemple:
x = 120 x est de type (int)
y = "Bonjour" y est de type (str)
Le nom d’une variable peut commencer par n'importe quelle lettre minuscule ou majuscule ou
un ‘_’, puis des lettres, des chiffres ou des '_'.
Les noms de variables sont sensibles à la casse (age, Age et AGE sont trois variables
différentes)
Une variable sans valeur est définie par : x = None (None est l'équivalent de null dans d'autres
langages).
Syntaxe de base
Types
list Liste de longueur variable la fonction dans laquelle elle est définie.
file Fichier
bool Booléen
module module
Opérateurs Opérateurs
Opérateurs numériques Opérateurs logiques
alphanumériques relationnels
Algorithmique
+, - , * , ./ , ^ , ,/, % + >, < , =, <= , =>, != Et, Ou, Non
Programmation Python
+, - , * , / , ** , // , % + >, < , ==, <= , =>, != and, or, not
Syntaxe de base
Fonctions E/S
▪ Python utilise la fonction print() pour afficher sur la sortie principale (généralement le
terminal ou le script a été lancé)
Exemple : print("Hello World !!")
print(1+1)
print(myfunc())
▪ Pour lire une valeur depuis le terminal, la fonction utilisée est la fonction input()
Exemple: num = input("Saisir un numéro de votre choix")
N.B: La variable retournée par input() est TOUJOURS de type str.
Syntaxe de base
Notion de Bloc
if condition_1:
BLOC 1
elif condition_2:
# Equivalent à else if
BLOC 2
else:
BLOC 3
▪ Les conditions peuvent aussi être utilisés inline :
A = value1 if condition else value2
Syntaxe de base
Les Conditions : Structure sélective simple
Si la condition est vraie alors le bloc d’instructions sera exécuté, sinon il sera ignoré.
Syntaxe de base
Les Conditions : Structure sélective simple
Exemple : Écrire un programme qui décide si un étudiant est admis ou non en fonction de sa moyenne générale.
Syntaxe de base
Les Conditions : Structure alternative imbriquée
Exemple : Un algorithme qui demande un entier à l’utilisateur, et l’informe ensuite s’il est positif, négatif
ou nul.
Syntaxe de base
Les Conditions : Structure alternative imbriquée
Syntaxe de base
Les Conditions : Structure à choix multiple
La fonctionnalité match n’a été introduite que dans Python 3.10 et les versions ultérieures,
Syntaxe de base
Les Conditions : Structure à choix multiple
La boucle for est généralement utilisée lorsque le nombre d'itérations est connu à l'avance ou lorsque vous devez itérer sur
une séquence (comme une liste, tableau, …).
Syntaxe de base
Les Boucles : for
Exemple : Écrire un programme Python qui calcule la somme des N premiers nombres entiers positifs, où N est
un nombre entier fourni par l'utilisateur. (exemple pour N=5 ➔ somme : 1+2+3+4+5 = 15)
Syntaxe de base
Les Boucles : while
While condition:
INSTRUCTIONS
INSTRUCTIONS
INSTRUCTIONS
Syntaxe de base
Les Boucles : while
La boucle while s'emploie quand le nombre exact d'itérations reste indéterminé avant l'exécution. Elle réitère les
instructions contenues dans son bloc tant que la condition évaluée demeure vraie.
Syntaxe de base
Les Boucles : while
Problème : un programme Python qui invite l'utilisateur à décider du moment de quitter le programme. L'utilisateur
doit pouvoir continuer à interagir avec le programme jusqu'à ce qu'il choisisse explicitement de le terminer en
entrant le caractère « y ».
Syntaxe de base
Les Boucles : FAIRE … TANT QUE
Problème: Écrire un programme dans lequel l'utilisateur devine un nombre secret prédéfini par le programme.
Après chaque tentative, le programme indique si l'utilisateur a deviné correctement ou non.
Syntaxe de base
Les Boucles : while
Problème: Écrire un programme python qui calcule la factorielle des entiers 3, 13, 25 et 40.
def factorielle(n):
fact = 1
for i in range(1, n + 1):
fact *= i
return fact
Réutilisabilité : Les fonctions peuvent être appelées plusieurs fois avec différents arguments.
Clarté : L'utilisation de fonctions avec des noms descriptifs rend le code principal plus lisible. Au lieu
de voir des formules mathématiques complexes éparpillées dans le code, vous voyez des appels de
fonction clairs qui indiquent ce qu'ils font.
Syntaxe de base
Variables locales et variables
globales
1. Variables locales
Les variables locales sont définies à l'intérieur d'une fonction et ne sont accessibles qu'à l'intérieur de
cette fonction. Une fois que l'exécution de la fonction est terminée, ces variables sont détruites.
def ma_fonction():
x = 10 # Variable locale
print("Dans la fonction, x =", x)
2. Variables globales
Les variables globales, en revanche, sont définies en dehors de toute fonction et peuvent être
accessibles depuis n'importe quelle fonction dans le même fichier. Elles conservent leur valeur tant
que le programme est en cours d'exécution.
y = 20 # Variable globale
def ma_fonction():
print("Dans la fonction, y =", y)
En Python, vous pouvez définir des valeurs par défaut pour les paramètres d'une fonction. Cela
signifie que si l'utilisateur ne fournit pas d'argument pour ce paramètre lors de l'appel de la fonction, la
valeur par défaut sera utilisée. Cela peut rendre vos fonctions plus flexibles et faciles à utiliser.
Les listes sont utilisées pour stocker plusieurs éléments dans une seule variable.
Les listes sont créées à l'aide de crochets.
Les éléments de liste sont ordonnés, changeables, permettent des valeurs en double et
indexés, le premier élément à l’index[0], le deuxième élément à l’index[1]…etc.
Les collections
Les Listes
Lorsque nous disons que les listes sont ordonnées, cela signifie que les éléments ont un
ordre défini, et que l’ordre ne changera pas.
Les nouveaux éléments seront placés à la fin de la liste.
Pour connaître la taille d’une liste, utiliser la méthode : len(NOM_LISTE)
Les Listes
Slicing
Pour modifier la valeur des éléments dans une plage spécifique, définissez une liste avec les
nouvelles valeurs et reportez-vous à la plage de numéros d'index dans laquelle vous souhaitez
insérer les nouvelles valeurs.
La compréhension de liste offre une syntaxe plus courte lorsque vous souhaitez
créer une nouvelle liste basée sur les valeurs d’une liste existante.
Les Listes
List Comprehension
Exemples :
Les Listes
Unpacking
En Python, nous sommes également autorisés à extraire les valeurs d’une liste dans
des variables.
C’est ce qu’on appelle le «Déballage»
(Unpacking en Anglais).
Un ensemble (Set) est une collection à la fois non ordonnée et non indexée.
Les ensembles sont écrits avec des accolades.
Les ensembles ne sont pas modifiables, ce qui signifie que nous ne pouvons
pas modifier les éléments une fois l'ensemble créé.
Les Ensembles
Accès et Recherche
Vous ne pouvez pas accéder aux éléments d’un ensemble en vous référant à
un index ou à une clé.
Vous pouvez parcourir les éléments de l'ensemble en utilisant une boucle for,
ou demander si une valeur spécifiée est présente dans un ensemble, en
utilisant le mot-clé in.
Les Ensembles
Manipulation
Une fois qu’un ensemble est créé, vous ne pouvez pas modifier
ses éléments, mais vous pouvez ajouter de nouveaux éléments
avec la méthode add().
Pour ajouter des éléments d’un autre ensemble dans
l'ensemble actuel, utilisez la méthode update().
Les Ensembles
Manipulation
Définition Séquence ordonnée, Séquence ordonnée, immuable Collection non Collection de paires
modifiable ordonnée, unique clé-valeur
Accès aux éléments Par index (list[0]) Par index (tuple[0]) Par itération Par clé (dict['clé'])
Cas d'utilisation Liste d'éléments Séquence d'éléments constants Ensemble d'éléments Associer des clés à
modifiables uniques des valeurs
Performance d'accès Très rapide (O(1)) Très rapide (O(1)) Pas d’index Très rapide (O(1))
Performance de Rapide (O(n)) Rapide (O(n)) Très rapide (O(1)) Très rapide (O(1))
recherche pour les clés
Cas d’utilisation
Liste
Utilisez l’opérateur modulo (%) pour insérer des nombres dans des chaînes .
Les Strings
Formatage
Utilisez la méthode format() pour insérer des nombres dans des chaînes.
Vous pouvez utiliser des numéros d'index {0} pour vous assurer que les
arguments sont placés dans les bons espaces réservés
Les Strings
Formatage
Une fonction est un bloc de code qui ne s'exécute que lorsqu'elle est
appelée. Vous pouvez transmettre des données, appelées paramètres, à une
fonction. Une fonction peut renvoyer des données en conséquence. En
Python, une fonction est définie à l'aide du mot-clé def :
Les Fonctions
Arguments (args)
On peut spécifier une valeur par défaut pour un argument donné. Cette valeur sera
utilisée si aucune valeur de cet argument n’est fournie.
N.B : Les arguments à valeurs par défaut doivent être obligatoirement placé en dernier.
Les Fonctions
Valeur de retour
Pour laisser une fonction renvoyer une valeur, utilisez l' instruction return :
N.B : Si aucune valeur n’est retournée par la fonction, La valeur None est retournée par défaut.
Les Fonctions
Les fonctions Lambda
mymodule.py
Les modules
Les modules
La gestion des fichiers est une partie importante de toute application Web/Desktop.
Python a plusieurs fonctions pour créer, lire, mettre à jour et supprimer des fichiers. La
fonction clé pour travailler avec des fichiers en Python est la fonction open(). La
fonction open() prend deux paramètres :
❑ Nom ou chemin de fichier
❑ Mode d’ouverture .
Gestion des Fichiers
Modes d’ouverture
Gestion des Fichiers
Lecture de Fichier
❑ Notion de classe
Une classe est un type de données abstrait qui précise des caractéristiques (attributs et
méthodes) communes à toute une famille d'objets et qui permet de créer (instancier) des
objets possédant ces caractéristiques.
Programmation orienté objet
Caractéristiques de la P.O.O
❑ Notion de classe
Un objet est une variable caractérisée par des propriétés et des méthodes. La définition
de ces propriétés et de ces méthodes devra être réalisée dans une structure de données
appelée classe.
Une classe est donc le support de l’encapsulation : c’est un ensemble de données et de
fonctions regroupées dans une même entité. Les données seront généralement
appelées des attributs, les fonctions qui opèrent sur ces attributs sont appelées des
méthodes.
Créer un objet depuis une classe est une opération qui s’appelle l’instanciation. L’objet
ainsi créé pourra être appelé aussi : instance.
Entre classe et objet il y a le même rapport qu’entre type de données et variable.
Programmation orienté objet
Caractéristiques de la P.O.O
❑ Notion d’objet
On dit qu’un objet est une instance de classe. Nous pouvons donc avoir plusieurs objets
pour une même classe. Chacun des objets a des valeurs qui lui sont propres pour les
attributs.
Programmation orienté objet
Caractéristiques de la P.O.O
❑ Le constructeur
Un constructeur est une méthode, sans valeur de
retour, qui porte un nom imposé par le langage
Python : __init__().
Cette méthode sera appelée lors de la création de
l’objet. Le constructeur peut disposer d’un nombre
quelconque de paramètres, éventuellement aucun.
Programmation orienté objet
Caractéristiques de la P.O.O
❑ Notion d’encapsulation
Le concept d'encapsulation est un concept très utile de la POO. Il permet
en particulier d’éviter une modification par erreur des données d’un
objet.
En effet, il n’est alors pas possible d’agir directement sur les données d’un
objet; il est nécessaire de passer par ses méthodes qui jouent le rôle
d’interface obligatoire.
Programmation orienté objet
Caractéristiques de la P.O.O
❑ Accesseurs et mutateurs
Il faut disposer de méthodes qui vont permettre par
exemple de modifier ou d’afficher les informations
associées aux variables privées (accesseurs et
mutateurs).
Programmation orienté objet
Caractéristiques de la P.O.O
❑ Héritage Python
L'héritage nous permet de définir une classe qui hérite de toutes les méthodes et
propriétés d'une autre classe.
▪ La classe parente est la classe héritée, également appelée classe de base.
▪ La classe enfant est la classe qui hérite d'une autre classe, également appelée
classe dérivée.
Programmation orienté objet
Caractéristiques de la P.O.O
❑ Bloc try…except
Si vous avez du code suspect qui peut soulever une exception, vous pouvez défendre
votre programme en plaçant le code suspect dans un bloc try … except, suivie d'un bloc
de code qui gère le problème le plus élégamment possible.
Les Exceptions
Gestion des Exceptions
❑ Bloc finally
Le bloc finally, s’il est spécifié, sera exécuté indépendamment du fait que le bloc d’essai
soulève ou non une erreur.
Les Exceptions
Gestion des Exceptions
❑ Exception Courantes
IOError : si le fichier ne peut pas être ouvert
KeyboardInterrupt : lorsqu'une touche non requise est enfoncée par l'utilisateur
ValueError : lorsque une fonction reçoit un argument incorrect.
AttributeError : lorsqu’on souhaite accéder à un attribut qui n’existe pas.
ImportError : s'il est impossible de trouver le module
MemoryError : Cette erreur est générée lorsqu'une opération manque de mémoire.
KeyError : Lors qu’on essaie d’accéder à une clé inexistante dans un dictionnaire
IndexError : pour un index inexistante dans une liste.
TypeError : quand une opération individuelle est effectuée sur un type inattendu
Les Exceptions
Gestion des Exceptions
❑ Python Dates
Une date dans Python n’est pas un type de données qui lui est propre, mais nous
pouvons importer un module nommé datetime pour travailler avec les dates.
Les 4 principales classes d'objets utilisées dans le module datetime sont :
➢ datetime
➢ date
➢ time
➢ timedelta
Les Dates
Gestion des Dates
❑ Datetime et strftime
Le module datetime contient la classe datetime qui se
charge des opérations sur les dates nécessitant les date
et le temps. L’objet datetime a une méthode pour
formater les objets de date en chaînes lisibles. La
méthode est appelée strftime() , et prend un paramètre,
format, pour spécifier le format de la chaîne retournée.
Les Dates
Gestion des Dates
❑ Datetime et strptime
L’objet datetime a une méthode nommée
strptime() pour convertir une date depuis une
chaîne de caractères vers un objet datetime.
La méthode accepte deux paramètres : la chaîne
de caractères et le format
Les Dates
Gestion des Dates
❑ Timedelta
Un objet timedelta représente la durée entre
deux dates ou heures. Nous pouvons l'utiliser
pour mesurer des intervalles de temps, ou
manipuler des dates ou des heures en les ajoutant
et en les soustrayant, etc.
Les Dates
Gestion des Dates
❑ Directives de Format