ADG Cours1 Python 2020-2021 Jusqu'Aux Ensembles
ADG Cours1 Python 2020-2021 Jusqu'Aux Ensembles
ADG Cours1 Python 2020-2021 Jusqu'Aux Ensembles
(adoptez un serpent !)
Pr ADG
dahirou.gueye@uadb.edu.sn
Université Alioune Diop de Bambey
Master SI/SR
Année académique: 2021-2022
Juin 2022
« Serpent scientifique et littéraire »
2
Plan
3
Programmation orientée objet
en Python
4
Programmation orientée objet
en Python
Chapitre1 :
5
Présentation & Historique
Présentation:
Python, langage très moderne à la popularité grandissante
Python est un langage portable, dynamique, extensible, gratuit, qui permet (sans l'imposer) une approche
modulaire et orientée objet de la programmation.
Historique:
Python est développé depuis 1989 par Guido van Rossum et de nombreux contributeurs bénévoles.
1991 : Création de la première version publique de Python par Guido van Rossum au CWI Centrum
Wiskunde & Informatica d’ Amsterdam
2001 : création de la Python Software Foundation (PSF) qui prend en charge le développement du langage
Python convient aussi bien à des scripts d'une dizaine de lignes qu’à des projets complexes de
plusieurs dizaines de milliers de lignes.
Python utilise le typage dynamique et sa syntaxe est très simple et, combinée à des types de
données évolués (listes, dictionnaires,...), conduit à des programmes ) la fois très compacts et très
lisibles. A fonctionnalités égales, un programme Python (abondamment commenté et présenté
selon les canons standards) est souvent de 3 à 5 fois plus court qu'un programme C ou C++ (ou
même Java) équivalent, ce qui représente en général un temps de développement de 5 à 10 fois
plus court et une facilité de maintenance largement accrue.
§ Orienté objet
Classes, objets, méthodes, héritage, etc.
Tout est objet en Python (Y compris les chaînes de caractères, les nombres, etc.)
9
Avantages et inconvénients
Avantages :
§ Gain de temps pour le programmeur
§ Nombreux modules
À rechercher et télécharger sur https://pypi.org/
§ Multi-plateforme
Inconvénients :
§ Langage interprété donc peu rapide et aura besoin d’un interpréteur pour
fonctionner
10
Python 2.x et Python 3.x
Deux versions de Python cohabitent encore :
§ La version 2.7, stable et assez largement utilisé
§ La version 3.x, dont le développement se poursuit
§ Actuellement (juin 2022) on est à la version 3.10 qui est stable et la toute dernière
est 3.10.5
Les deux versions sont téléchargeables sur https://www.python.org/downloads/
11
Que fait-on en Python ?
Python est utilisé pour :
§ Scripting: Du côté du scripting, en local ou via http, Python est un très bon outil
qui permettra de rechercher, de trier, de récupérer des données mais aussi de les
traiter et de les mettre à jour.
§ Cloud et automatisation : Côté cloud, Python est un incontournable qui pourra
automatiser l’infrastructure cloud, la configuration de serveur ainsi que leur
administration. Là encore, polyvalence puisque vous trouverez des librairies chez
tous les éditeurs tels que AWS, Azure, Google Cloud,…
§ Dévloppement web: Du côté Back-End Python dispose de frameworks évolués et
populaires tels que Django et Flacon qui offrent des bases solides pour des
développements d’envergures.
§ Développement de jeux avec Pygame
§ Applications mobiles avec des cadres comme Kivy. Android avec SL4A
12
Que fait-on en Python ?
§ Développement d'application classique (desktop)
o Python est également souvent utilisé par les admin système pour créer des
tâches dites répétitives ou simplement de maintenance. D'ailleurs si vous
voulez créer des applications java en codant en python, c'est possible grâce
au projet Jython.
§ Data science, big data et IA: Oui le domaine n°1 où Python excelle est la science
des données, si R est aussi plébiscité, les compétences les plus recherchées le
concerne directement que ce soit pour le big data, l’analytique ou l’IA avec le
machine learning (ex. bibliothèque TensorFlow). De plus de nombreux packages
existent et étendent ses capacités tant pour l’analyse et leur spécialisation que
pour la visualisation des données. Voici donc encore une preuve de sa polyvalence
et de sa « modernité ».
o Réseau de neurones avec le module Keras de TensorFlow
o Réseau de neurones convolutionnel YOLOv3
o Chatbot avec le module space, nltk
§ Programmer arduino et Raspberry Pi en python
13
Qui utilise python?
§ Google (Guido van Rossum a travaillé pour Google de 2005 à 2012),
o Python a été une partie importante de Google depuis le début et
le reste à mesure que le système grandit et évolue.
§ Microsoft avec
o Microsoft store pour windows 10, visual studio,
o Microsoft Azure: Générer et déployer vos applications Python
dans le cloud, et aller plus loin avec l’IA et la science des
données
§ Yahoo Groups utilise Python "pour maintenir ses discussions de
groupe".
§ YouTube utilise Python pour produire des fonctionnalités
maintenables en des temps records, avec un minimum de
développeurs,
§ la Nasa revendique l'utilisation de Python,
§ Etc.
14
Comment utiliser python?
Python présente la particularité́ de pouvoir être utilisé de plusieurs manières différentes
:
§ En mode interactif
o c’est à dire de manière à dialoguer avec lui directement depuis le clavier
16
Installation de base
Fedora
sudo yum install python3-tools
Debian/Ubuntu
§ Ici encore, Python-2.7 est sans doute déjà disponible. Procédez comme ci-
dessus, voici un exemple recueilli dans un terminal sur une machine
installée en Ubuntu-14.04/trusty :
$ python3
Python 3.6.2 (default, Jul 20 2017, 12:30:02)
[GCC 6.3.1 20161221 (Red Hat 6.3.1-1)] on linux
Appelez-moi « ordinateur » !
18
Le génie de la programmation
Ordinateur, calcule 5 + 2 !
Ok, calcul effectué sans erreur.
19
Le génie de la programmation
Ordinateur, calcule 5 + 2 et affiche le résultat !
7.
20
Le génie de la programmation
Ordinateur, calcule 5 + 2 et appelle ce résultat « r » !
Affiche « r » !
7.
Ajoute 3 à « r » !
Affiche « r » !
10.
21
Le génie de la programmation
r=5+2
print(r)
7.
r=r+3
print(r)
10.
Chapitre 2:
Syntaxe, Variables et Types de données
23
Les commentaires
Les commentaires ne sont pas exécutés par Python, ils sont destinés aux humains et non à
l'ordinateur
Ils facilitent la lecture et la compréhension du programme par d'autres personnes (ou par soi-
même quelques années plus tard !)
Commentaires longs
§ Il n'y a pas de commentaire long (type /* */) à proprement parler en Python
Commenter chaque ligne
Utiliser une chaîne de caractères longue :
25
Aide
Plusieurs commandes permettent d'obtenir de l'aide en Python
§ Aide sur une classe ou une méthode :
help(list)
help(list.append)
§ Lister les méthodes d'un objet :
dir(objet)
Aide en ligne
§ https://docs.python.org/3/
§ Aussi disponible en téléchargement ou en paquet Linux
26
Les types de données
Votre programme !
Tableaux :
Modules Python Module numpy
(utilisation rare)
Classes et objets
28
Nombres à virgule
>>> print(1.3)
1.3
>>> print(1.3e6)
1300000.0
La précision du flottant Python correspond en fait à un double.
29
Booléens
Deux valeurs possibles : vrai ou faux
True
False
30
Variables
Une variable est un nom auquel on associe une valeur
La valeur est souvent connu seulement à l'exécution du programme (par exemple
c'est le résultat d'un calcul)
Sous Python, les noms de variables doivent en outre obéir à quelques règles simples :
Un nom de variable est une séquence de lettres (a→z,A→Z) et de chiffres(0→9),
qui doit toujours commencer par une lettre.
Seules les lettres ordinaires sont autorisées. Les lettres accentuées, les cédilles, les
espaces, les caractères spéciaux tels que $, #, @, etc. sont interdits, à l’exception
du caractère _ (souligné).
Attention majuscules et minuscules sont différenciées !
Il est important de trouver des noms parlants
31
Variables
En plus de ces règles, il faut encore ajouter que vous ne pouvez pas utiliser comme
nom de variables les 33 « mots réservés » ci-dessous
32
Affectations simples de variables
On crée une variable en lui donnant une valeur, avec =
>>> age = 36
On peut aussi effectuer des affectations parallèles à l’aide d’un seul opérateur :
34
Types de données
Python peut manipuler différents types de données :
des nombres entiers (integer en anglais, abrégé en int),
des nombres à virgule (souvent appelé flottants ou float en anglais),
des chaînes de caractères (string en anglais, abrégé en str)
et des booléens (valeur vraie ou fausse, bool) :
Ø age = 38 # Entier
Ø poids = 76.5 # Flottant
Ø nom = "Dahirou Gueye" # Chaîne de caractères
Ø enseignant = TRUE # Booléen
Ø etudiant = FALSE # Booléen
Ø telephone = "00221 77 501 25 35" # Chaîne de caractères!
35
Opérations sur les nombres
Opérations basique :
Addition : +
Soustraction : -
Multiplication : *
Division : /
Division entière : //
Modulo (reste de la division) : %
Puissance : **
D'autres opérations sont définies dans le module math
36
Priorité des opérations
Sous Python, les règles de priorité́ sont les mêmes que celles qui vous ont été́
enseignées au cours de mathématique. Vous pouvez les mémoriser à l’aide de
l’acronyme PEMDAS :
o P pour parenthèses
Ainsi 2**1+1 = 3 (et non 4), et 3*1**10 = 3 (et non 59049 !).
o M et D pour multiplication et division, qui ont la même priorité́
Caractères spéciaux
§ Retour à la ligne : "\n"
§ Tabulation : "\t"
§ Antislash : "\\"
38
Chaînes de caractères
Chaînes avec des guillemets à l'intérieur
§ « Antislasher » les guillemets à l'intérieur de la chaîne : "Il se nomme
\"Dahirou\"."
§ Tripler les guillemets extérieurs : """Il se nomme "Dahirou"."""
§ Alterner guillemets doubles et simples : 'Il se nomme "Dahirou".'
39
Chaînes de caractères
Opérations sur les chaînes Exemples avec s = "Bonjour"
40
Chaînes de caractères
Opérations sur les chaînes
41
Chaînes de caractères
Formatage de chaînes de caractère : inclure des variables dans une chaîne : %
>>> nom = "Gueye "
>>> prenom = "Dahirou"
>>> "Salut %s !" % prenom
Salut Dahirou !
>>> "Bonjour %s %s !" % (prenom, nom)
>>> "Taux de réussite : %s %" % 100
Taux de réussite : 100 %
43
Exercices
Testez les lignes d'instructions suivantes. Décrivez ce qui se passe :
>>> r , pi = 12, 3.14159
>>> s = pi * r**2
>>> print s
>>> print type(r), type(pi), type(s)
>>>
Quelle est, à votre avis, l'utilité de la fonction type() ?
(Note : les fonctions seront décrites en détail, plus loin dans ce cours).
44
Chapitre 3 :
45
Structures de contrôle
Pour résoudre un problème informatique, il faut toujours effectuer une série d'actions
dans un certain ordre. La description structurée de ces actions et de l'ordre dans lequel
il convient de les effectuer s'appelle un algorithme.
Les structures de contrôle sont les groupes d'instructions qui déterminent l'ordre
dans lequel les actions sont effectuées. En programmation moderne, il en existe
seulement trois : la séquence et la sélection, que nous allons décrire dans ce chapitre, et
la répétition que nous aborderons au chapitre suivant. Les conditions permettent
d'exécuter des commandes seulement dans certaines situations
46
Sélection conditionnelle
if condition :
commande exécutée si la condition est vraie
commande exécutée si la condition est vraie…
suite du programme (exécuté que la condition soit vraie ou fausse)
§ Attention à l'indentation (= les espaces blancs en début de ligne)
47
Sélection conditionnelle
Le résultat doit être ceci:
48
Instructions successives
Il est possible d'ajouter plusieurs conditions successives, et un bloc par défaut
(else = sinon)
if condition1:
commande exécutée si condition1 est vraie
commande exécutée si condition1 est vraie…
elif condition2:
commande exécutée si condition1 est fausse et condition2 est vraie...
else:
commande exécutée si condition1 et condition2 sont fausses…
suite du programme (exécutée que les conditions soient vraies ou fausses)
49
Instructions successives
Exemple1 de condition :
Exemple2 de condition :
age = int(input("veuillez saisir votre âge : "))
if age == 0 :
print("Vous êtes un nouveau-né.")
elif age < 18 :
print("Vous êtes un enfant.")
elif age >= 65 :
print("Vous êtes une personne âgée.")
else :
print("Vous êtes un adulte.")
51
Instructions imbriquées
Exemple2 :
age = int(input("veuillez saisir votre âge : "))
poids = float(input("veuillez saisir votre poids : "))
if age == 0 :
print("Vous êtes un nouveau-né.")
55
Exercice 1 : les champignons
56
Programmation orientée objet
en Python
Chapitre 4:
Listes et Boucles
57
Listes
Une liste comme une collection d’éléments séparés par des virgules,
l’ensemble étant enfermé dans des crochets
§ Fonction len()
>>> print(len(jour))
7
58
Listes
Fonction del
Fonction append()
59
Accès aux éléments
Soit les listes
>>> nombres = [15, 48, 20, 35]
>>> animaux = ["éléphant", "girafe", "rhinocéros", "gazelle"]
>>> liste3 = [2000, "Bambey", 3.14, ["Ablaye", "Daouda", 1980]]
>>> >>> >>> >>> >>> >>> >>>
print(nombres[2]) print(nombres[1:3] print(nombres[2:3] print(nombres[2:]) print(nombres[:2]) print(nombres[-1]) print(nombres[-2])
) )
Notation
Exemple1:
>>> nombres[0] = 12
>>> nombres
[12, 48, 20, 35]
Exemple2:
>>> liste3[3][1] = "Dahirou"
>>> liste3
[2000, "Bambey", 3.14, ["Ablaye", "Dahirou", 1980]]
61
Les listes sont modifiables
Les listes peuvent être modifiées Exemples
animaux = ["éléphant", "girafe",
"rhinocéros", "gazelle"]
o Enlever un élément
animaux.remove("gazelle")
63
Listes (Exemples (1))
Supprimer une entrée avec son index avec la fonction del
>>> liste = ["a", "b", "c"]
>>> del liste[1]
>>> liste
['a', 'c']
q Supprimer une entrée avec sa valeur avec la méthode remove
>>> liste = ["a", "b", "c"]
>>> liste.remove("a")
>>> liste
['b', 'c']
64
Listes (Exemples (2))
q Inverser les valeurs d'une liste avec la méthode reverse
>>> liste = ["a", "b", "c"]
>>> liste.reverse()
>>> liste
['c', 'b', 'a']
q Compter le nombre d'items d'une liste
>>> liste = [1,2,3,5,10]
>>> len(liste)
5
65
Listes (Exemples (3))
q Compter le nombre d'occurrences d'une valeur
>>> liste = ["a","a","a","b","c","c"]
>>> liste.count("a")
3
>>> liste.count("c")
2
q Trouver l'index d'une valeur
>>> liste = ["a","a","a","b","c","c"]
>>> liste.index("b")
3
66
Listes (Exemples (4))
q Trouver un item dans une liste avec le mot clé in
>>> liste = [1,2,3,5,10]
>>> 3 in liste
True
>>> 11 in liste
False
q La fonction range
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
67
Listes (Exemples (5))
q Agrandir une liste
>>> x = [1, 2, 3, 4]
>>> y = [4, 5, 1, 0]
>>> x.extend(y)
>>> print x
[1, 2, 3, 4, 4, 5, 1, 0]
q Additionner deux listes
>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> x + y
[1, 2, 3, 4, 5, 6] 68
Listes (Exemples (6))
q Multiplier une liste:
>>> x = [1, 2]
>>> x*5
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2]
q Initialiser une liste:
>>> [0] * 5
[0, 0, 0, 0, 0]
69
Listes (Exemples (7))
q Obtenir le plus grand ́élément d’une liste, ou le plus petit :
>>> max([2, 1, 4, 3])
4
>>> min([2, 1, 4, 3])
1
q Faire la somme d’une liste:
>>> sum([2, 1, 4, 3])
10
70
Listes et chaînes de caractères
Couper une chaîne de caractères en une liste de chaînes : split
split sans argument : couper sur les espaces, sauts de ligne, tabulations
>>> "Une phrase avec des mots".split()
["Une", "phrase", "avec", "des", "mots"]
Split avec argument : couper sur un séparateur donné
>>> "Plan-Jaxaay".split("-")
["Plan", "Jaxaay"]
71
Boucles
72
Boucles
une variable
Chaîne de caractères
Liste, ensemble, tuple
...
une liste d'indice générée avec la fonction range()
range(5) => [0, 1, 2, 3, 4]
73
Boucles
o L’instruction for permet donc d’ écrire des boucles, dans lesquelles l’itération
traite successivement tous les éléments d’une séquence donnée.
o L’argument end =" " signifie que vous souhaitez remplacer le saut à la ligne
par un simple espace. Si vous supprimez cet argument, les nombres seront
affichés les uns en-dessous des autres (sur la verticale).
74
Boucles
Exemple de séquence de type Liste
for i in range(len(animaux)) :
print("Numéro " + str(i) + " : " + animaux[i])
print("C'est fini !")
Afficher un animal par ligne avec son environnement
for i in range(len(animaux)) :
print(animaux[i] + " dans la " + environnements[i])
75
Boucles (boucler sur plusieurs listes avec zip)
Exemples
animaux = ["éléphant", "biche", "rhinocéros", "brochet"]
environnements = ["savane", "forêt", "savane", "rivière"]
for animal, envir in zip(animaux, environnements):
print(animal + " vit dans " + envir)
Ce qui donne :
́éléphant vit dans savane
biche vit dans forêt
Rhinocéros vit dans savane
brochet vit dans rivière
76
Boucles (boucler sur plusieurs listes avec des
boucles imbriquées)
Exemples
animaux = ["éléphant", "biche", "rhinocéros", "brochet"]
environnements = ["savane", "forêt", "savane", "rivière"]
for animal in animaux:
for envir in environnements:
print (animal+ " dans " + envir )
Ce qui donne :
éléphant dans savane ́ rhinocéros dans savane
rhinocéros dans forêt
éléphant dans forêt ́ rhinocéros dans rivière
brochet dans savane
éléphant dans rivière
brochet dans forêt
biche dans savane brochet dans rivière
biche dans forêt
biche dans rivière
77
Boucles
break permet d'interrompre la boucle
continue permet de passer immédiatement à l'élément suivant
La boucle for peut aussi avoir un bloc else :
for variable in liste :
if condition d'exclusion :
continue
commande répétée plusieurs fois
if condition :
commande exécutée si condition satisfaite
break
else :
commande exécutée si condition jamais satisfaite 78
Boucles
continue : permet de passer immédiatement à l'élément suivant
for variable in liste :
if condition d'exclusion : continue
commande répétée plusieurs fois
for i in range(10):
if i == 2:
continue
print(i)
79
Boucles
break et else :
break permet d'interrompre la boucle
for i in range(10):
if i == 2:
break
print(i)
le bloc else est exécuté si la boucle est allée jusqu'au bout (sans rencontrer break)
for variable in liste :
commande répétée plusieurs fois
if condition :
commande exécutée si condition satisfaite
break
else :
commande exécutée si condition jamais satisfaite 80
Boucles
Afficher les dix premiers termes d’une suite appelée « Suite de Fibonacci »
81
Exercices
Exo1 :Afficher les dix premiers termes d’une suite appelée « Suite de
Fibonacci ». Il s’agit d’une suite de nombres dont chaque terme est égal à la
somme des deux termes qui le précédent
Résultat
82
Exercices
Exo 2: Ecrivez un programme qui affiche les 20 premiers termes de la table
de multiplication par 7.
Exo 3: Ecrivez un programme qui affiche la suite de symboles suivante
*
**
***
****
*****
******
*******
83
Exercice : le dot-plot
Exo 4:
Le dot-plot est une technique très simple pour analyser visuellement deux
séquences d'ADN
Principe :
Mettre une séquence à l'horizontal et l'autre en vertical, sur une matrice
Mettre un X dans les cases où les bases sont les mêmes dans les deux
séquences
Faire un programme Python pour générer un
dot-plot
Les séquences d'ADN sont des chaînes de
caractères
On générera le dot-plot ligne par ligne
et on écrira chaque ligne avec print()
84
Exercice : Nombres paires d’une liste
Exo5 : Garder seulement les nombres pairs d’une liste :
nombres = [1, 4, 7, 8, 12, 15]
nombres_pairs = [ ] …????
Exo 6: Soient les listes suivantes :
t1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
t2 = ['Janvier', ’Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août',
'Septembre', 'Octobre', 'Novembre', 'Décembre']
Ecrivez un petit programme qui crée une nouvelle liste t3. Celle-ci devra
contenir tous les éléments des deux listes en les alternant, de telle manière que
chaque nom de mois soit suivi du nombre de jours correspondant :
['Janvier',31, 'Février',28, 'Mars',31, etc...].
85
Listes procédurales (comprehension list)
Permet de créer une liste sans donner les éléments un à un mais en donnant une
boucle pour la remplir
>>> [len(mot) for mot in "Un texte avec des mots".split()]
[2, 5, 4, 3, 4]
sum() retourne la somme d'une liste
>>> sum(len(mot) for mot in "Un texte avec des mots".split())
18
Plusieurs boucles peuvent être combinées
print(" " + seq1)
print("\n".join(base2 + "".join([" ", "X"][base1 == base2] for base1 in
Chapitre 5:
Dictionnaires, Tuples et ensembles
87
Dictionnaires
Les types de données composites que nous avons abordés jusqu’à présent
(chaines, listes) étaient tous des séquences, c’est à dire des suites ordonnées
d’éléments.
Dans une séquence, il est facile d’accéder à un élément quelconque à l’aide
d’un index (un nombre entier), mais à la condition expresse de connaître son
emplacement.
Les dictionnaires que nous découvrons ici constituent un autre type composite.
Ils ressemblent aux listes dans une certaine mesure (ils sont modifiables
comme elles), mais ne sont pas des séquences.
En revanche, nous pourrons accéder à n’importe lequel d’entre eux à l’aide
d’un index spécifique que l’on appellera une clé́ , laquelle pourra être
alphabétique, numérique, ou même d’un type composite sous certaines
conditions.
88
Dictionnaires
Un tableau associatif qui fait correspondre des valeurs à des clefs : dict
dict = { clef1 : valeur1, clef2 : valeur2, … }
>>> définitions = {"os" : "système d'exploitation", "python" : "langage de
programmation", "dictionnaire" : "association clef-valeur"}
>>> fiche = {"nom":"Gueye","prenom":"Dahirou"}
>>> materiel = {}
>>> materiel['computer'] = 'ordinateur'
>>> materiel['mouse'] ='souris’
>>> materiel['keyboard'] ='clavier'
>>> print(materiel)
{'computer': 'ordinateur', 'keyboard': 'clavier', 'mouse': 'souris'}
89
Opérations sur les dictionnaires
La recherche est optimisée dans les dictionnaires (table de hachage)
Principales opérations :
§ Nombre de clés ou de valeur : len (definitions) -> 3
§ Obtenir la valeur associée à une clé: definitions ["python"] -> langage de
programmation
§ Ajouter un couple de clé: valeur: definitions["flottant"] = "nombre décimal"
§ supprimer une clé et la valeur associée: del definitions["os"]
§ Test d’appartenance
>>> if "os" in definitions:
... print("Intègre un système")
... else:
... print("Pas de système. Sorry") ...
Pas de systèmes. Sorry 90
Opérations sur les dictionnaires
Récupérer une valeur dans un dictionnaire: get
>>> data = {"os": "systeme", "age": 30}
>>> data.get("os")
'système’
>>> data.get("adresse", "Adresse inconnue")
'Adresse inconnue'
Méthode keys()
>>> print(data.keys())
Vérifier la présence d'une clé : haskey
>>> data.has_key("os")
True
Méthode values()
>>> print(data.values())
91
Dictionnaires et boucles
Une boucle sur un dictionnaire parcourt les clefs :
for clef in définitions:
print(clef, " : ", définitions[clef])
Récupérer les clés
for clef in définitions.keys(): print (clef)
Récupérer les valeurs
for valeur in définitions.values() :
print(valeur)
Récupérer les couples (clés:valuers)
for clef, valeur in définitions.items() :
print(clef, " : ", valeur)
Dictionnaire procédural :
quadruple = { i : 4 * i for i in range(10) } 92
Construction d’un histogramme à l’aide d’un
dictionnaire
93
Remarques sur les clés
Peuplier
94
Les dictionnaires ne sont pas des séquences
95
Les dictionnaires ne sont pas des séquences
96
Contrôle du flux d’exécution à l’aide d’un dico
dico.get(materiau, fonctAutre)()
98
Tuples
Du point de vue de la syntaxe, un tuple est une collection d’éléments
séparés par des virgules :
Très proches des listes. La différence est qu’ils ne sont pas modifiables
Les tuples s'écrivent entre ou sans parenthèses
>>> triplet = (1, 2, 3)
>>> couple = (1, 2)
>>> tup = 'a', 'b', 'c', 'd', 'e'
>>> print(tup)
('a', 'b', 'c', 'd', 'e')
99
Tuples
Si un seul élément, il faut mettre une virgule après
>>> tuple_a_un_element = (1,)
Les parenthèses ne sont pas obligatoires
>>> mon_tuple = 1, 2, 3
Afficher une valeur d’un tuple
>>> mon_tuple[0]
1
100
Tuples
Les tuples ne sont pas modifiables
=> ils peuvent servir de clef dans les dictionnaires
C'est leur principale utilisation
Changement de valeur
>>> mon_tuple[1] = "ok"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
101
Opérations sur les tuples
NB: Les opérations que l’on peut effectuer sur des tuples sont syntaxiquement
similaires à celles que l’on effectue sur les listes, si ce n’est que les tuples ne sont
pas modifiables :
>>> print(tup[2:4])
('c', 'd')
>>> tup[1:3] = ('x', 'y')
==> ***** erreur ! *****
103
Opérations sur les tuples
>>> del tu3[2]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion
104
Tuples
Le tuple permet une affectation multiple
>>> v1, v2 = 11, 22
>>> v1
11
>>> v2
22
106
Ensembles
Les opérations ensemblistes sont disponibles, ex :
Exemple 1:
>>> {1, 2, 3}.intersection({2, 3, 4})
{2, 3}
Convertir une liste en ensemble : set([1, 2, 3])
Exemple2:
>>> s1 = set([4, 6, 9])
>>> s2 = set([1, 6, 8])
>>> s1.intersection(s2)
set([6])
107
Ensembles
Union: Somme des éléments de deux ensembles
>>> s1 = set([4, 6, 9])
>>> s2 = set([1, 6, 8])
>>> s1.union(s2)
set([1, 4, 6, 8, 9])
>>> s1 | s2
set([1, 4, 6, 8, 9])
108
Ensembles
Un "frozenset" (ensemble figé) se comporte comme un ensemble,
Sauf qu'il est immutable, c'est-à-dire qu'une fois créé, on ne peut
pas le mettre à jour
Il dispose donc des mêmes fonctions que le type "set", mais sans
"add", "update", "pop", "remove", "discard" et "clear".
Ce type de données prend en charge des méthodes telles que
copy(), difference(), intersection(), isdisjoint(),
symmetric_difference() et union()
De plus, ils sont hachables, ce qui leur permet de faire partie
d'ensembles.
Ensemble immutable : frozenset([1, 2, 3]) (clef de dictionnaire)
109
Ensembles
>>> fs = frozenset([2, 3, 4])
>>> s1 = set([fs, 4, 5, 6])
>>> s1
{frozenset({2, 3, 4}), 4, 5, 6}
>>> fs.intersection(s1)
frozenset({4})
>>> fs.add(6)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'frozenset' object has no attribute 'add'
>>>
110