2 Python
2 Python
Ibrahim Benabdallah
Année universitaire
2023-2024
Plan du cours
2 Python
4 Types composés
INFORMATIQUE
INFORMATION AUTOMATIQUE
L'informatique est une discipline qui combine l'information et
l'automatisation pour concevoir, tester et entretenir des systèmes informatiques
capables de traiter et de manipuler des données de manière automatisée. Ses
domaines d'application sont vastes, incluant le développement de logiciels, la
gestion de bases de données, l'intelligence artificielle, la sécurité informatique,
les réseaux informatiques, la conception de circuits électroniques, et bien
d'autres encore. En somme, l'informatique est au cœur de nombreuses
technologies et innovations qui façonnent notre monde moderne.
4
Ordinateur
TRAITEMENT
ENTREES SORTIES
Par ordinateur
5
Algorithme
Définition 1
Un algorithme est une procédure préétablie qui permet de calculer une
ou plusieurs valeurs en entrée, et qui renvoie une ou plusieurs valeurs
en sortie.
Définition 2 Un algorithme est une suite ordonnée d'instructions qui,
lorsqu'elle est correctement exécutée, conduit à un résultat spécifié. Il
s'agit d'une série d'étapes de calcul qui transforment l'entrée en une
sortie.
6
Algorithme
Début
Corps Action 1
Action 2 {Commentaire}
.
.
Action n
fin
8
La notion de variable
Pour stocker une valeur au cours d'un programme, on utilise une variable.
9
La notion de variable
Correspondance :
Verre Variable
o Verre: objet contenant un liquide.
o Variable : zone mémoire contenant une valeur.
Eau Valeur
10
Déclaration d’une variable
Une variable est une entité qui contient une information, elle est caractérisée par :
11
Types de données
12
Types de données
Le type d’une variable est inchangeable. Il est déclaré une seule fois et reste le
même.
Le contenu de la variable doit être du même type. On affecte pas un réel à une
variable de type entier
13
Les types simples
Type numérique
Type alphanumérique
Caractère
Chaine de caractères : toujours notée entre guillemets
Type booléen
Une expression
Exemple:
16
Expressions et opérateurs^vcxw<
17
Expressions et opérateurs
• Opérateurs alphanumériques:
• &: La concaténation
Cet opérateur permet de concaténer deux chaînes de caractères
18
Affectation, lecture et affichage
• Opérateurs alphanumériques:
20
Affectation, lecture et affichage
• L’instruction de lecture
Lire (A)
21
Affectation, lecture et affichage
• L’instruction d’écriture
22
Exemple
Algorithme CalculSurface
Var: Longueur, Largeur, Surface : réel
Début
Ecrire(‘’Donnez la longueur en m’’)
Lire(Longueur)
Ecrire(‘’Donnez la largeur en m’’)
Lire(Largeur)
Surface Longueur * Largeur
Ecrire (‘’La surface du rectangle est :’’, Surface)
23
Fin
Chapitre 2
24
Python(2024)
25
Python
26
Python: Import des modules
Syntaxe:
import nom_module
Les noms des modules peuvent être longs: on peut leur donner un alias.
• import math as m, on utilisera [Link]
27
Python: Import des modules
Syntaxe:
from nom_module import *
28
Python: Type de variable
29
Python: Opération sur les variables
31
Python: Opération sur les variables
Affectation/Typage automatique
Il s’agit de déclarer la variable sans préciser explicitement son type
a = 1.9
a est une variable, elle est typée en flottant « float » parce qu’il y a un point
décimal.
a est l’identifiant de la variable. = est l’opérateur d’affectation.
affectations multiples:
• a = b = 5.5 #même valeur pour plusieurs variables
print(a)
5.5 # resultat de l’affichage
• print(b)
5.5
• c, e = 10, 5 #affectations parallèles
print(c, e)
10 5 32
Python: Opération sur les variables
33
Python: Opération sur les variables
Ordre de priorité
34
Python: Opération sur les variables
Opérateur Sortie
x == y Vrai si x et y ont la même valeur
x != y Vrai si x et y n’ont pas la même valeur
x<y Vrai si x est inférieure à y
x>y Vrai si x est supérieure à y
x <= y Vrai si x est inférieure ou égale à y
x >= y Vrai si x est supérieure ou égame à y
35
Python: Opération sur les variables
Opérateurs logiques:
or : ou logique
not: négation
not(5 > 1)
False(fau
x)
(5 > 1) or not(4 < 8) True
(vrai)
36
Python: Opération sur les variables
i = i+1 i+=1
i = i-1 i-=1
a = a+b a+= b
a = a-b a-= b
a = a * b a*= b
a = a / b a/= b
37
Python: Opération sur les variables
38
Python: Opération sur les variables
Conversion en logique
• a = bool(1)
print(a)
True
• a=bool("False")
print(a)
True
• a = bool(False)
print(a)
False
39
Python: Opération sur les variables
40
Python: Saisie
• Saisie
a = input (“Saisir une valeur”)
input() permet d’effectuer une saisie au clavier
Cette function renvoie toujours une chaîne, donc il faut faire une
conversion a = float (a)
Autre exemple:
a = int (input (“Saisir un entier positif”))
41
Python: Affichage
42
Chapitre 3
If/Else
Instruction conditionnelle
Exécuté is la réponse est Vrai
44
Structure conditionnelle
if condition:
bloc d’instructions # indentation
else: # else doit être au même niveau que l’instruction if
bloc d’instructions # indentation
• Remarques: (1) « : “est nécessaire
(2) C’est l’indentation (le décalage par rapport à la marge gauche)
qui délimite le bloc d’instructions.
(3) La partie else est facultative
45
Structure conditionnelle
• If/Elif/Else
case = 2
if case == 1:
print("Cas 1")
elif case == 2:
print("Case 2")
elif 3 <= case <= 9:
print("Case 3 à 9")
else :
print('Autre case')
• Exemple
lettre = 'A'
if [Link]() in "aeiouy":
print(lettre + " est une voyelle")
else :
print(lettre + " n'est pas une voyelle") 46
Structure conditionnelle
47
Structure itérative
• La boucle For:
1. range(4) 0123
2. range(1,4) 123
3. range(0,5,2) 024
48
Structure itérative
• La boucle For:
Séquence est une collection de valeurs peut être générée avec
range()
• La boucle For:
50
Structure itérative
• La boucle For/else:
notes = [15, "Absent", 8, 122, "Absent", 14] # une liste
for i in notes:
if i == "Absent":
continue # on ignore les absences
if not(0 <= i <= 20):
print("Erreur : Note invalide !")
break # on sort de la boucle
print(i) # on affiche les notes valides
else:
# ce bloc est exécuté si et seulement si la boucle for s’est déroulée
normalement (pas de break)
print("Ok") 51
Structure itérative
• La boucle While:
Opération de comparaison
Attention à la boucle infinie !
while condition:
bloc d’instructions # indentation
# suite du programme
Remarque:
• On peut «casser» la boucle avec break
52
Structure itérative
• La boucle While:
53
Structure itérative
• La boucle While:
L'instruction break
i=1
while True:
print(i)
i += 1 # incrémentation
if i > 4 :
break
>>>
1
2
3
54
4
Structure itérative
• La boucle While:
55
Structure itérative
• La boucle While:
56
Structure itérative
• La boucle While:
L'instruction continue
i=0
while i < 5 :
i += 1
if i == 3 :
continue
print(i)
>>>
1
2
4
57
5
Structure itérative
• La boucle While:
58
Structure itérative
• La boucle While:
Remarque: En Python, pas de do/while
Le code suivant permet de faire la même chose :
while True:
# bloc d'instructions exécuté au moins une fois
if expression:
break
# suite du programme
59
Structure itérative
60
Structure itérative
• Correction:
61
• Exercice 2:
62
62
• Correction ex2:
63
Chapitre 3
Types composés
Types composés
Les listes
• L'un des concepts les plus utiles
• Regrouper plusieurs variables ensemble (une sorte de conteneur !)
65
Types composés
66
Types composés
Modifier une liste
67
Types composés
Liste avec range()
68
Types composés
Découpage des listes
• Découpage (slicing) : obtenez un ensemble particulier de sous-éléments à
partir d'une structure de données.
• Très utile et flexible.
69
Types composés
Ici, new_numbers est une référence vers numbers et non pas une
copie
70
Types composés
Deep copy:
71
Types composés
72
Types composés
Liste en compréhension:
• Une liste en compréhension (comprehension list) permet
de créer une liste à partir d’une itération.
• Dans une liste de compréhension on ne peut utiliser que la
boucle for.
source = [1,5,8,12,7]
source = [1,5,8,12,7]
resultat = []
resultat = [v**2 for v in source]
for v in source:
print(resultat)
[Link](v**2)
print(resultat)
73
Types composés
Liste en compréhension:
• On peut utiliser un traitement conditionnel
source = [1,5,8,12,7] source = [1,5,8,12,7]
resultat = [] resultat = [v**2 for v in source if (v % 2 == 0)]
for v in source: print(resultat)
if (v % 2 == 0):
[Link](v**2)
print(resultat)
Mutabilité
75
Types composés
Tuple
• Les listes sont mutable, mais non pas les Tuples
76
Types composés
Tuple
Concatination:
(4,)+(4,5) => (4,4,5)
Fonctions Exemple Résultat
Tuple_name.index(x) Rtourne la première indice d’un T = (4, 4, 5) print(indice)
élément x indice = [Link](4) 0
Tuple_name.count(x) Retourne le nombre d’occurrence T = (4, 4, 5) print(occurrence)
d’un élément. occurrence = [Link](4) 2
77
Types composés
Dictionnaire
78
Types composés
Dictionnaire
Défini comme clé séparée par des virgules : paires de valeurs :
virgule
Accolades
79
Types composés
Dictionnaire
80
Types composés
Dictionnaire
Exemple
81
Types composés
Dictionnaire
Accès à un dictionnaire:
Dictionnaire
Modifier un dictionnaire
update : La méthode met à jour le dictionnaire avec les éléments d'un autre
objet dictionnaire ou d'un itérable de paires clé/valeur.
pop(clé) : supprime la valeur de la clé spécifiée ( clé obligatoire).
83
Types composés
Dictionnaire
items / keys / values
84
Types composés
Ensemble
• Listes qui ne peuvent pas contenir d'éléments dupliqués
• Fonctionnalité similaire aux listes
• Ne peut pas être indexé ou tranché
• Peut être créé avec {} ou vous pouvez convertir une liste en un
ensemble
85
Types composés
Chaine de caractères
Une chaîne de caractères est une liste particulière avec des méthodes
associées
• définir une chaîne
s1 = "bonjour le monde"
print(s1) bonjour le monde
• longueur
long = len(s1)
print(long) 16
• accès indicé
s2 = s1[:7]
print(s2) bonjour
87
Types composés
Chaine de caractères
non modifiable
s1[0] = "B" Erreur: Une chaîne n’est pas modifiable
solution 1: convertir la chaine en une liste
s1 = "bonjour le monde"
s1 = list(s1)
s1[0] = "B"
''.join(s1) 'Bonjour le monde'
solution 2: utiliser la concaténation
s1 = "bonjour le monde"
s1 = "B" + s1[1:]
s1 'Bonjour le monde'
88
Types composés
Chaine de caractères
Une chaîne peut être transformée en liste pour réaliser des traitements sophistiqués. L’outil
est très souple.
• Transformation en liste
S = "Bonjour le monde"
liste = list(S) (Toutes les opérations sur les listes sont possibles après)
print(liste) ['B', 'o', 'n', 'j', 'o', 'u', 'r', ' ', 'l', 'e', ' ', 'm', 'o', 'n', 'd', 'e’]
• Découpage par séparateur
S = "Bonjour le monde"
decoupe = [Link](" ") (Le séparateur peut être tout autre caractère)
print(decoupe) ['Bonjour', 'le', 'monde']
former une chaîne à partir d’une liste
SB = "".join(liste)
SB 'Bonjour le monde'
89
Fonctions Exemple Résultat
[Link](x) Retourne le nombre d’occurrence d’un chaine = "bonjour" print(occurrence)
élément. occurrence = [Link](‘o’) 2
[Link]("séparateur ") Découpage de la chaine par un chaine = "bonjour_le_monde" print(List)
séparateur List = [Link]('_') ['bonjour', 'le', 'monde']
[Link](x) Retourne la première indice d’un chaine = ‘bonjour’ print(indice)
élément x indice = [Link](‘b’) 0
"séparateur".join former une chaîne à partir d’une liste L = ['bonjour', 'le', 'monde'] print(chaine)
chaine = " ".join(L) bonjour le monde
[Link]() Vérifie si tous les caractères sont en chaine = "BONJOUR_LE_MONDe" print(resultat)
majuscule et renvoie True si c’est vrai resultat = [Link]() False
et False si non.
[Link]() Vérifier si tous les caractères sont en chaine = "BONJOUR_LE_MONDe" print(resultat)
miniscule et renvoie True si c’est vrai et resultat = [Link]() False
False si non.
[Link]() Retourne une copie dont toutes les chaine = "BONJOUR_LE_MONDe" print(resultat)
lettres sont en majuscule resultat = [Link]() BONJOUR_LE_MONDE
[Link](p) Retourne une copie dont toutes les chaine = « bonjour_le_MONDE" print(resultat)
lettres sont en miniscule resultat = [Link]() Bonjour le monde
[Link]() Vérifie si tous les caractères sont des chaine = "BONJOUR_LE_MONDe" print(resultat)
lettres et renvoie True si c’est vrai et resultat = [Link]() False
False si non. . Nb: l’espace est
considéré comme étant un caractère.
Types composés
Fonctions Exemple Résultat
[Link]() Vérifie si tous les caractères sont des s = '1242323' True
valeurs numériques et renvoie True si print([Link]()) True
c’est vrai et False si non. Une valeur True
numérique peut être un décimal , un #s = '²3455' False
numérique représenté par l’unicode s = '\u00B23455'
(chiffres romans, fraction, numérateurs print([Link]())
de devises). Vérifie si tous les
caractères sont des numériques et # s = '½'
renvoie True si c’est vrai et False si non. s = '\u00BD'
Nb: l’espace est considéré comme print([Link]())
étant un caractère.
s = '1242323'
s='python12'
print([Link]())
chaine. isalnum() Vérifie si tous les caractères sont des name = "M234onica"
valeurs alphanumériques (soit des print([Link]())
lettres ou des numériques) et renvoie
True si c’est vrai et False si non. # contains whitespace
name = "M3onica Gell22er "
print([Link]())
name = "Mo3nicaGell22er"
print([Link]())
name = "133"
print([Link]())
Types composés
• EXERCICES:
Ecrire un programme qui cherche tous les nombres divisibles par 7 mais non multiples de
5 et 2 entre 700 et 1099 (les deux inclus).
Les nombres obtenus doivent être affichés dans une liste. Afficher le nombre des nombres
obtenus.
92
Types composés
Ecrire un programme qui génère deux ensembles A et B contenant chacun les diviseurs d’un
nombre saisi au clavier, vérifie si A est inclus dans B, et calcule l’union et l’intersection de
l’ensemble de diviseurs communs de deux nombres.
93
Types composés
Donnez les résultats de ces codes:
a)
b)
c)
94
Types composés
95
Types composés
b)
c)
96
Types composés
{ 'c1': 'i like cake’, 'c2': 'cake is life’, 'c3': 'cake cake cake’,'c4': 'i eat cake' }
Pour faciliter la recherche dans le document, il serait utile de construire un index où chaque
mot correspond à un dictionnaire qui à son tour indique combien de fois ce mot apparaît dans
un chapitre donné. Ici est l'index du document ci-dessus (notez sa structure - un dictionnaire
contenant des clés qui mappent aux dictionnaires imbriqués) :
{ 'cake': {'c1': 1, 'c2': 1, 'c3': 3, 'c4': 1}, 'eat': {'c4': 1}, 'i': {'c1': 1, 'c4': 1}, 'is': {'c2': 1}, 'life': {'c2':
1}, 'like': {'c1': 1} }
Implémentez le programme, qui prend un dictionnaire représentant un document texte et
renvoie un dictionnaire représentant un index pour ce document, comme décrit ci-dessus
97
Types composés
• Étant donné un index, comme vous l'avez construit pour le problème précédent, nous
souhaitons effectuer une recherche pour faire correspondre les chapitres à l'aide d'une
requête composée d'un ou plusieurs mots. Le résultat d'une recherche serait un dictionnaire
mappant les noms de chapitre au nombre total de fois où tous les mots de la requête
apparaissent dans ce chapitre (seuls les chapitres avec au moins une correspondance
apparaîtraient dans le résultat). Si nous devions exécuter la requête «you like cake» sur
l'exemple d'index présenté dans la précédente description du problème, on obtiendrait le
résultat :
{'c1': 2, 'c2': 1, 'c3': 3, 'c4': 1}
D'un autre côté, la requête « i like food » nous donnerait le résultat :
{ 'c1': 2, 'c4': 1 }
98
Types composés
• Correction:
99
Types composés
100