Programmation python
Chapitre 4
Public :MPSI
Année Scolaire: 2025-2026 1
Plan du cours
Chapitre 1 : Introduction à Python et à son environnement & les types simples
Chapitre 2 : Instructions conditionnelles et itératives
Chapitre 3 : Les fonctions et modules
Chapitre 4 : Listes, chaines de caractères et dictionnaires
Chapitre 5 : Algorithmes classiques de Recherche et de Tris
Chapitre 6 : Les fichiers
Chapitre 7 : Introduction aux bibliothèques scientifiques
Année Scolaire: 2025-2026 2
Listes, chaines de caractères et dictionnaires
Listes- Définition
Une liste est une structure de données ordonnée et modifiable qui permet
de stocker plusieurs éléments, quels que soient leurs types.
Elles sont très utilisées en programmation pour manipuler des ensembles de
données.
Année Scolaire: 2025-2026 3
Listes, chaines de caractères et dictionnaires
Listes- Déclaration d'une liste
En python on déclare une liste en utilisant des crochets [ ] et en séparant les
éléments par des virgules.
Notation d'une liste:
# Liste simple contenant des nombres
liste1 = [1, 2, 3, 4]
print("liste1 =", liste1) # Affiche [1, 2, 3, 4]
# Liste contenant d'autres listes
liste2 = [[1, 2], [1], 1]
print("liste2 =", liste2) # Affiche [[1, 2], [1], 1]
# Liste vide
liste_vide = []
print("liste_vide =", liste_vide) # Affiche [ ]
Année Scolaire: 2025-2026 4
Listes, chaines de caractères et dictionnaires
Listes- Accéder aux éléments d'une liste
Les indices positifs
On peut accéder aux éléments d’une liste en utilisant leurs indices (index), qui
commencent à 0.
Les indices négatifs permettent d’accéder aux éléments en partant de la fin :
Année Scolaire: 2025-2026 5
Listes, chaines de caractères et dictionnaires
Listes- Modifier une liste
Les listes étant mutables, on peut modifier leurs éléments :
On peut aussi ajouter ou supprimer des éléments :
Année Scolaire: 2025-2026 6
Listes, chaines de caractères et dictionnaires
Listes- Modifier une liste
Exemple :
nombres = [10, 20, 30, 40, 30, 50]
[Link](30)
print(nombres)
# Affiche [10, 20, 40, 30, 50] → Seul le premier "30" a été supprimé
[Link](60)
# Tentative de suppression de la valeur 60 qui n'existe pas dans la liste
# Cette ligne va générer une erreur ValueError
Année Scolaire: 2025-2026 7
Listes, chaines de caractères et dictionnaires
Listes- Opérations et méthodes courantes sur les listes
En Python, on peut utiliser la fonction list() qui permet de convertir des itérables en listes.
Exemples
numbers_list = list(range(10)) # Convertit en liste
print(numbers_list) # Affiche : [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Année Scolaire: 2025-2026 8
Listes, chaines de caractères et dictionnaires
Listes- Opérations et méthodes courantes sur les listes
Voici un tableau récapitulatif des différentes méthodes d'ajout d'éléments à une liste en Python
Déclaration initiale: nombres = [10, 20, 30]
Méthode Description Exemple d'utilisation Résultat après exécution
append(x) Ajoute un élément x à la fin de la [Link](40) [10, 20, 30, 40]
liste
insert(i, x) Insère x à l’index i [Link](1, 15) [10, 15, 20, 30]
extend(liste2) Ajoute tous les éléments de liste2 [Link]([40, 50, 60]) [10, 20, 30, 40, 50, 60]
à la fin
+ Concatène deux listes et crée une nouvelle_liste = nombres + nouvelle_liste = [10, 20, 30, 40, 50]
nouvelle liste [40, 50]
+= Ajoute les éléments d’une autre nombres += [40, 50] [10, 20, 30, 40, 50]
liste à nombres
append(liste2) Ajoute une liste entière comme [Link]([40, 50]) [10, 20, 30, [40, 50]]
un seul élément
Année Scolaire: 2025-2026 9
Listes, chaines de caractères et dictionnaires
Listes- Opérations et méthodes courantes sur les listes
Déclaration initiale: nombres = [10, 20, 30, 40, 50, 30]
Méthode Description Exemple d'utilisation Résultat après exécution
remove(x) Supprime la première occurrence de x [Link](30) [10, 20, 40, 50, 30]
valeur = 30, nombres = [10, 20,
pop(i) Supprime et retourne l'élément à l'index i valeur = [Link](2)
40, 50, 30]
Retourne l’index de la première
index(x) position = [Link](40) position = 3
occurrence de x
count(x) Compte le nombre d'occurrences de x nb = [Link](30) nb = 2
sort() Trie la liste en ordre croissant [Link]() [10, 20, 30, 30, 40, 50]
reverse() Inverse l’ordre des éléments [Link]() [30, 50, 40, 30, 20, 10]
copy() Crée une copie indépendante de la liste copie = [Link]() copie = [10, 20, 30, 40, 50, 30]
Len(liste) Retourne la taille de la liste len(nombers) 6
clear() Supprime tous les éléments de la liste [Link]() nombres = []
Année Scolaire: 2025-2026 10
Listes, chaines de caractères et dictionnaires
Listes- Opérations et méthodes courantes sur les listes
Exemple:
fruits = ["pomme", "banane", "orange"]
[Link]("kiwi")
print(fruits) # ['pomme', 'banane', 'orange', 'kiwi']
[Link]()
print(fruits) # ['banane', 'kiwi', 'orange', 'pomme']
Année Scolaire: 2025-2026 11
Listes, chaines de caractères et dictionnaires
Listes-Parcourir une liste
On peut parcourir une liste avec une boucle for :
# Déclaration d'une liste contenant des noms d'animaux
animaux = ["chat", "chien", "lapin"]
# Parcours de la liste avec une boucle for (sans indices)
# Chaque élément de la liste est assigné à la variable 'animal'
# et affiché individuellement
for animal in animaux:
print(animal)
# Ou avec les indices :
# Utilisation de range(len(animaux)) pour parcourir la liste par indices
# 'i' représente l'indice de chaque élément dans la liste
for i in range(len(animaux)):
print(f"Animal {i} : {animaux[i]}")
Année Scolaire: 2025-2026 12
Listes, chaines de caractères et dictionnaires
Listes- Slicing
Le slicing (tranchage) en Python permet d’extraire des sous-parties de structures de
données comme les listes, les chaînes de caractères. Il repose sur l’utilisation d’indices
pour définir des plages de valeurs.
La syntaxe générale est :
Remarque :
Année Scolaire: 2025-2026 13
Listes, chaines de caractères et dictionnaires
Listes- Slicing
Exemple1:
Année Scolaire: 2025-2026 14
Listes, chaines de caractères et dictionnaires
Listes- Slicing
Exemples
1. Donnez le résultat de :
2. Inversez my_list avec le slicing.
3. Utilisez le slicing pour récupérer les nombres pairs d'une liste de 0 à 20.
Année Scolaire: 2025-2026 15
Listes, chaines de caractères et dictionnaires
Listes- Slicing
Exemples
1. Donnez le résultat de :
my_list = list(range(10)) # Création d'une liste contenant les nombres de 0 à 9
print(my_list) # Vérification du contenu de la liste -> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# Slicing avec [1:8:2]
# - Start = 1 (début à l'indice 1, donc le 2ème élément : 1)
# - Stop = 8 (s'arrête avant l'indice 8, donc dernier élément pris : 7)
# - Step = 2 (sauter un élément à chaque fois)
print(my_list[1:8:2]) # Résultat : [1, 3, 5, 7]
Année Scolaire: 2025-2026 16
Listes, chaines de caractères et dictionnaires
Listes- Slicing
Exemple2
2) Inversez my_list avec le slicing.
my_list = list(range(10)) # Création d'une liste contenant les nombres de 0 à 9
print(my_list) # Vérification du contenu de la liste -> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# Utilisation du slicing avec step = -1
# - Prend toute la list (start et stop sont omis)
# - Parcourt la list en sens inverse
inversed_list = my_list[::-1]
print(inversed_list) # Résultat : [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
Année Scolaire: 2025-2026 17
Listes, chaines de caractères et dictionnaires
Listes- Slicing
Exemples
3) Utilisez le slicing pour récupérer les nombres pairs d'une liste de 0 à 20.
numbers = list(range(21)) # Génère une liste de 0 à 20
print(numbers) # Vérification du contenu -> [0, 1, 2, 3, 4, ..., 20]
# Slicing avec step = 2
# - Prend toute la liste (start et stop omis)
# - Ne garde que les indices pairs : 0, 2, 4, ..., 20
nombres_pairs = numbers[::2]
print(nombres_pairs) # Résultat : [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
Année Scolaire: 2025-2026 18
Listes, chaines de caractères et dictionnaires
Listes-Compréhension de liste
C’est une méthode rapide et simple en Python permettant de créer des listes en une seule
ligne, sans utiliser de boucle classique. Elle rend le code plus court, clair et facile à lire.
Syntaxe simple :
Exemple :
Cet exemple génère une liste avec les nombres pairs entre 0 et 9.
Année Scolaire: 2025-2026 19
Listes, chaines de caractères et dictionnaires
Listes-Compréhension de liste
Exemple : Créer une liste contenant les carrés des nombres de 0 à 9.
Méthode classique avec une boucle for
carres = [] # Initialisation d'une liste vide
for x in range(10):
[Link](x**2) # Ajout du carré de x à la liste
print(carres) # sortie: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Méthode équivalente avec une compréhension de liste
carres = [x**2 for x in range(10)]
print(carres) # sortie: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Année Scolaire: 2025-2026 20
Listes, chaines de caractères et dictionnaires
Listes-Compréhension de liste
Compréhension de liste avec condition (if)
Exemple:
Filtrer les nombres pairs dans une liste.
pairs = [x for x in range(10) if x % 2 == 0]
print(pairs) # [0, 2, 4, 6, 8]
Créer une liste indiquant si un nombre est pair ou impair.
parite = ["pair" if x % 2 == 0 else "impair" for x in range(5)]
print(parite) # ['pair', 'impair', 'pair', 'impair', 'pair']
Année Scolaire: 2025-2026 21
Listes, chaines de caractères et dictionnaires
Exemple:
Écrire un script Python qui prend une liste de mots en minuscules et génère une
nouvelle liste contenant ces mots en majuscules.
# Déclaration d'une liste contenant des mots en minuscules
mots = ["python", "est", "puissant"]
# Création d'une liste vide pour stocker les mots en majuscules
maj = []
# Boucle for pour parcourir chaque mot de la liste 'mots'
for mot in mots:
# Conversion du mot en majuscules avec la méthode .upper() et ajout à la liste 'maj'
[Link]([Link]())
# Affichage de la liste contenant les mots en majuscules
print(maj) # ['PYTHON', 'EST', 'PUISSANT']
Année Scolaire: 2025-2026 22
Listes, chaines de caractères et dictionnaires
Exemple:
Écrire un script Python qui prend une liste de mots en minuscules et génère une
nouvelle liste contenant ces mots en majuscules.
Compréhension de liste
# Déclaration d'une liste contenant des mots en minuscules
mots = ["python", "est", "puissant"]
# Utilisation de la compréhension de liste pour transformer chaque
mot en majuscules
# La méthode .upper() convertit une chaîne en majuscules
maj = [[Link]() for mot in mots]
# Affichage de la nouvelle liste contenant les mots en majuscules
print(maj) # ['PYTHON', 'EST', 'PUISSANT']
Année Scolaire: 2025-2026 23
Listes, chaines de caractères et dictionnaires
Année Scolaire: 2025-2026 24
Listes, chaines de caractères et dictionnaires
Exercice 2
Soit la liste suivante : notes = [15, 8, 12, 19, 7, 13, 10, 17, 9, 14]
Effectuez les opérations suivantes :
a) Créez une nouvelle liste notes_augmentees qui contient toutes les notes augmentées de 2 points
(attention, la note maximale ne peut pas dépasser 20).
b) Affichez la liste des notes strictement supérieures à 10 à partir de la liste originale (notes), en utilisant la
compréhension de liste.
c) Calculez et affichez la moyenne des notes présentes dans la liste originale.
d) Affichez la note maximale et minimale dans la liste.
e) Remplacez la note minimale par la valeur 10 dans la liste originale.
f) Supprimez toutes les notes inférieures à 10 de la liste originale.
g) Triez la liste originale en ordre décroissant.
h) Demandez à l'utilisateur d'entrer une note et indiquez combien d'étudiants ont obtenu cette note.
Année Scolaire: 2025-2026 25
Chaînes de caractères (strings)
Listes, chaines de caractères et dictionnaires
Chaînes de caractères (strings) - Définition
En Python, on peut définir une chaîne de caractères de plusieurs façons :
Chaînes avec des guillemets simples ('..') ou doubles Chaînes avec des triples guillemets ("""...""" ou '''...''')
("..")
Utilisées pour définir les chaînes classiques d'une seule Utilisées pour les chaînes multilignes ou les commentaires.
ligne.
Utiliser "..." si la chaîne contient une apostrophe :
Utiliser '...' si la chaîne contient des guillemets :
Année Scolaire: 2025-2026 27
Listes, chaines de caractères et dictionnaires
Chaînes de caractères (strings)
Caractères spéciaux de mise en forme
Exemples:
print("Nom:\tAhmed\nAge:\t25\nVille:\tParis") print("Liste des langages :\n\t- Python\n\t- Java\n\t- C++")
'''
''' Liste des langages :
Nom: Ahmed - Python
Age: 25 - Java
Ville: Paris - C++
''‘ ''' 2025-2026
Année Scolaire: 28
Listes, chaines de caractères et dictionnaires
Chaînes de caractères (strings)
Voici d'autres caractères spéciaux fréquemment utilisés en Python pour la mise en forme
du texte :
Exemples:
print("Utilisateur:\t\"Ahmed\"\nAge:\t\t20\nChemin:\t\tC:\\Program Files\\Python")
Année Scolaire: 2025-2026 29
Listes, chaines de caractères et dictionnaires
Chaînes de caractères (strings)
Les opérations et méthodes les plus utiles(1)
Année Scolaire: 2025-2026 30
Listes, chaines de caractères et dictionnaires
Chaînes de caractères (strings)
Les opérations et méthodes les plus utiles(2)
Année Scolaire: 2025-2026 31
Listes, chaines de caractères et dictionnaires
Chaînes de caractères (strings)
Les opérations et méthodes les plus utiles(3)
Année Scolaire: 2025-2026 32
Listes, chaines de caractères et dictionnaires
Chaînes de caractères (strings)
print(mon_text) # Affiche: bonjour
print(len(mon_text)) # Affiche: 7 (nombre de caractères)
# Affiche: j (4e caractère, car l'index commence à 0)
print(mon_text[3])
# Affiche: r (dernier caractère)
print(mon_text[-1])
mon_text[2] = 4 # Erreur: Les chaînes de caractères sont immuables
part = mon_text[2:]
print(part)
# Affiche: "njour" (extrait à partir du 3e caractère)
print(mon_text[3:6]) # Affiche: "jou" (extrait du 4e au 6e caractère)
Année Scolaire: 2025-2026 33
Listes, chaines de caractères et dictionnaires
Chaînes de caractères (strings) - Définition
Les chaînes de caractères peuvent être considérées comme des listes (de caractères) un peu
particulières.
Propriétés des chaînes de caractères
Séquence ordonnée : chaque caractère a un index.
Immuable : une fois définie, elle ne peut pas être modifiée.
Peut être parcourue avec une boucle
Année Scolaire: 2025-2026 34
Listes, chaines de caractères et dictionnaires
Chaînes de caractères (strings)
Opérations sur les chaînes de caractères :
La méthode split() permet de diviser une chaîne de caractères en une liste en utilisant un séparateur.
ch1 = "welcome to IPGEI"
ch2 = [Link]() # Divise la chaîne en utilisant l'espace comme séparateur par défaut
print(ch2) # ['welcome', 'to', 'IPGEI']
# Définition d'une chaîne contenant différentes informations séparées par ";"
ch = "Nom: Ahmed; Age:22; Note:17; Institut: IPGEI"
# Utilisation de split(";") pour diviser la chaîne en une liste en utilisant ";" comme séparateur
res = [Link](";")
# Affichage de la liste obtenue après découpage
print(res)
# resultat: ['Nom: Ahmed', ' Age:22', ' Note:17', ' Institut: IPGEI']
Année Scolaire: 2025-2026 35
Listes, chaines de caractères et dictionnaires
Chaînes de caractères (strings)
Opérations sur les chaînes de caractères :
La méthode .joint() permet de fusionner les éléments d'une liste, en utilisant un séparateur.
La syntaxe est : "séparateur".joint(liste).
• Si vous utilisez " " (vide), tout est collé.
• Si vous utilisez "-", les éléments seront séparés par des tirets.
mots = ["Apprendre", "le", "code"]
# Coller avec des espaces
phrase = " ".join(mots)
# "Apprendre le code"
# Coller avec des tirets
url = "-".join(mots)
# " Apprendre-le-code
Année Scolaire: 2025-2026 36
Listes, chaines de caractères et dictionnaires
Chaînes de caractères (strings):
Modification:
1. La méthode .replace()
C'est la manière la plus simple de changer un mot ou une lettre .
phrase = "J'aime le Java"
# On remplace Java par Python
nouvelle_phrase = [Link]("Java", "Python")
print(nouvelle_phrase) # "J'aime le Python«
Année Scolaire: 2025-2026 37
Listes, chaines de caractères et dictionnaires
Chaînes de caractères (strings):
Modification:
2. Modifier via le "Slicing" (Le découpage)
Si vous voulez changer un caractère à une position précise, vous devez découper la
chaîne et la recuiller.
.
nom = "Pithon"
# On veut changer le 'i' (index 1) en 'y'
# On prend le début + 'y' + la fin
nom_corrige = nom[0] + "y" + nom[2:]
print(nom_corrige) # "Python«
Année Scolaire: 2025-2026 38
Listes, chaines de caractères et dictionnaires
Chaînes de caractères (strings):
Modification: Le processus « List - Modify - Join"
1. Conversion en liste : On utilise list() pour transformer chaque caractère en un élément.
2. Modification : On change l'élément via son index.
3. Jointure : On utilise .join() pour redevenir une chaîne.
texte = "Python"
print("Avant modification :", texte)
# texte[0] = "J" # Erreur : TypeError, car une chaîne est immuable
liste2 = list(texte) # Conversion en liste
print("Liste après conversion :", liste2) # Vérification de la transformation
liste2[0] = "J" # Modification possible
print("Liste après modification :", liste2)
nouveau_texte = "".join(liste2) # Reconvertir en chaîne
print("Après modification :", nouveau_texte) # Affiche "Jython"
Année Scolaire: 2025-2026 39
Listes, chaines de caractères et dictionnaires
Chaînes de caractères (strings)
Exercice1
Considérons la chaîne suivante :
phrase = "Bienvenue au cours Python 2026 ! "
1. Affiche la longueur de cette chaîne.
2. Affiche cette chaîne en majuscules.
3. Remplace le mot "Python" par "Java" dans la chaîne.
4. Découpe la chaîne en une liste de mots (séparée par les espaces).
5. Vérifie si la chaîne commence par le mot « Bienvenue ».
6. Compte combien de fois la lettre « e » apparaît dans la chaîne.
7. Affiche la chaîne en deux lignes en utilisant le caractère spécial approprié (\n).
Année Scolaire: 2025-2026 40
Listes, chaines de caractères et dictionnaires
Exercice2
Demander une phrase à l'utilisateur
phrase = input("Entrer une phrase : ")
Afficher :
- le nombre de caractères
print("Longueur :", len(phrase))
- le nombre de mots
print("Nombre de mots :", len([Link]()))
- la phrase en majuscules
print("Majuscule :", [Link]())
- la phrase inversée
print("Inverse :", phrase[::-1])
• len(phrase) compte tous les caractères (y compris les espaces).
• split() découpe la phrase en mots.
• upper() met tout en majuscules.
• [::-1] permet d’inverser la chaîne.
Année Scolaire: 2025-2026 41
Dictionnaires
Listes, chaines de caractères et dictionnaires
Dictionnaires - Définition
Un dictionnaire (dict) est une structure de données qui permet de stocker des
éléments sous la forme de paires clé-valeur.
Il permet un accès rapide et pratique aux données à partir de leurs clés, un peu
comme un vrai dictionnaire où chaque mot (clé) a une définition associée (valeur).
Syntaxe de base :
personne = {
"nom": "Ahmed",
"age": 25,
"ville": "Paris"
}
print(personne["nom"]) # Résultat : Ahmed
print(personne["age"]) # Résultat : 25
Année Scolaire: 2025-2026 43
Listes, chaines de caractères et dictionnaires
Dictionnaires - Ajouter / Modifier une valeur :
On peut ajouter ou changer une valeur en spécifiant simplement la clé :
personne = {
"nom": "Ahmed",
"age": 25,
"ville": "Paris"
}
Supprimer une clé-valeur :
Année Scolaire: 2025-2026 44
Listes, chaines de caractères et dictionnaires
Dictionnaires
Année Scolaire: 2025-2026 45
Listes, chaines de caractères et dictionnaires
Dictionnaires - Méthodes utiles :
Voici un tableau récapitulant les méthodes les plus utiles pour manipuler les dictionnaires :
Année Scolaire: 2025-2026 46
Listes, chaines de caractères et dictionnaires
Dictionnaires - Méthodes utiles :
Exemple complet regroupant ces méthodes :
# Création du dictionnaire
dic = {"nom": "Ahmed", "age": 25, "ville": "Paris"}
# Méthodes clés
print([Link]()) # dict_keys(['nom', 'age', 'ville'])
print([Link]()) # dict_values(['Ahmed', 25, 'Paris'])
print([Link]()) # dict_items([('nom','Ahmed'),('age',25),('ville','Paris')])
# Récupération de valeur
print([Link]("nom")) # Ahmed
print([Link]("profession")) # None (clé absente)
# Mise à jour du dictionnaire
dic["profession"]="Ingénieur"
print(dic) # {'nom':'Ahmed','age':30,'ville':'Paris','profession':'Ingénieur'}
# Suppression
ville = [Link]("ville")
print(ville) # Paris
print(dic) # {'nom':'Ahmed','age':30,'profession':'Ingénieur'}
# Vider le dictionnaire
[Link]()
Année Scolaire: 2025-2026 47
print(dic) # {}
Listes, chaines de caractères et dictionnaires
Dictionnaires
Exercice 1
Considère le dictionnaire suivant qui représente un étudiant :
Effectue les tâches suivantes :
1. Affiche la valeur associée à la clé "ville".
2. Ajoute une nouvelle clé "niveau" avec la valeur "Licence".
3. Modifie l'âge ("age") à 26.
4. Supprime la clé "notes" avec la méthode .pop() et affiche sa valeur.
5. Affiche uniquement les clés du dictionnaire.
6. Affiche uniquement les valeurs du dictionnaire.
7. Calcule et affiche la moyenne des notes AnnéedansScolaire:
la liste associée à la clé "notes".
2025-2026 48
Listes, chaines de caractères et dictionnaires
Conclusion
Caractéristiques Listes Chaînes de caractères Dictionnaires
Collection de paires clé-valeur (non
Collection ordonnée et
Définition Séquence de caractères ordonnée avant Python 3.7,
modifiable d'éléments
ordonnée à partir de Python 3.7)
Type de structure Séquence Séquence Mapping (association)
Mutabilité Modifiable (mutable) Immuable (immutable) Modifiable (mutable)
Indexation Oui (indices entiers) Oui (indices entiers) Oui (clés uniques)
Accès aux éléments ma_liste[0] mon_texte[0] mon_dict['clé']
Méthodes courantes append(), remove(), sort() upper(), lower(), split() keys(), values(), get()
Exemple de
ma_liste = [1, 'a', 3.5] mon_texte = 'Hello' mon_dict = {'nom': 'Alice', 'âge': 25}
déclaration
Exemple d'utilisation [1, 2, 3][1] → 2 'Python'[2] → 't' {'a': 1, 'b': 2}['b'] → 2
Année Scolaire: 2025-2026 49