Ecole Nationale Supérieure
de Chimie de Kénitra
Module : Informatique 1
(S2)
Pr. Anass Nouri
Février 2020
([Link])
Plan du cours
• Partie 2 : Programmation en Python
• Principales structures de donnés proposées par
Python
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Introduction
• Principales structurées proposées par Python
• Python propose des structures de données pour vous
faciliter la manipulation de données. Parmi les plus
utilisées, on trouve :
• Chaînes de caractères
• Listes
• Dictionnaires
• Tuples
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Chaînes de caractères
• Rappel : une chaîne de caractère est une séquence de caractères
Ascii .
• La fonction len permet de retourner la longueur d'une
chaîne de caractères
# -*- coding: utf-8 -*-
chaine1 = "j'aime l’informatique, plus que la chimie !"
longueur = len(chaine1)
#stocke la longueur de la chaine dans la variable
longueur
• Le premier caractère de la chaîne est à l'indice 0, le
second à l'indice 1, … le dernier à l'indice n – 1.
• ATTENTION (piège classique) : une chaîne de
caractères de taille n a ses indices qui varient entre 0
et n-1 inclus.
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Chaînes de caractères
Concaténation des chaînes de caractères
• On peut utiliser l'opérateur ‘+’ sur 2 chaînes de caractères afin
de les concaténer (concaténation)
# -*- coding: utf-8 -*-
chaine1 = "Pour inventer,"
chaine2 = "il faut penser à côté
chaine3 =[Paul Souriau]"
citation = chaine1 + chaine2 + chaine3
print(citation) #affiche : Pour inventer, il faut penser à coté [Paul Souriau]
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Chaînes de caractères
Méthodes de classe str
• Il est existent beaucoup de méthodes appartenant à la classe
des chaînes de caractères nommée str . Ces méthodes
permettent de manipuler les chaînes que l’on crée. Pour
découvrir quelles sont ces méthodes et comment elles
fonctionnent, nous pouvons utiliser le help dans la console de
python : help(str).
• Parmi ces méthodes, nous pouvons trouver :
- upper() : permet de transformer les caractères d’une
chaîne en majuscule.
- lower() : permet de transformer les caractères en
minuscules.
- capitalize() : permet de mettre en majuscule le premier
caractère d’une chaîne.
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Chaînes de caractères
• Exemple 1 :
# -*- coding: utf-8 -*-
nom_ecole = "ensc"
nouvelle_chaine = nom_ecole.upper() #le point avant upper sert à faire
appel à la méthode upper appartenant à la classe str et donc à la chaine que
j’ai créée qui est de ype str
print(nouvelle_chaine) #affiche ENSC
• Exemple 2 :
# -*- coding: utf-8 -*-
chaine=input("Bienvenue dans la question Quiz. Vous devez répondre
convenablement à la question pour quitter le quiz :\n Quelle est
la capitale du Maroc ? \n > ") #pour lire au clavier les chaînes de
caractères renseignées par l’utilisateur, utilisez input() si vous avez
Python3.x ou raw_input() si vous avez Python 2.x
while([Link]()!="rabat"):
input("Faux ! Essayer encore \n >")
print("Bonne réponse, au revoir !")
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Chaînes de caractères
• Explication, exemple n°2 :
Le programme dans l’exemple n°2 permet de poser une
question à l’utilisateur tant que la réponse est fausse.
L’utilisateur (qui exécute ce programme) ne peut en sortir que
si la réponse est juste, et peu importe si elle est en minuscule
ou en majuscule. Cette dernière contrainte (majuscule ou
minuscule) est gérée par le fait que l’on transforme la chaîne
renseignée par l’utilisateur en minuscule avant qu’elle ne soit
comparée à la bonne réponse.
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Chaînes de caractères
Formatage et affichage d’une chaîne de caractères
(1)
• Pour afficher une chaîne de caractères, nous pouvons, comme
vous le savez utiliser la fonction print(ma_chaine).
• De plus, nous pouvons utiliser la méthode format() de la classe
str.
# -*- coding: utf-8 -*-
prenom = "Akira"
nom = "Yoshino"
prix = "Nobel de chimie 2019"
decouverte = " \'Batterie en Lithuim\' "
print("Je m'appelle {0} {1} et j'ai eu le prix {2} pour la
découverte {3}".format(prenom, nom, prix, decouverte))
#affiche Je m’appelle Akira Yoshino et j'ai eu le prix Nobel de chimie 2019 pour
la découverte 'Batterie en Lithuim'
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Chaînes de caractères
Formatage et affichage d’une chaîne de caractères
(2)• Autre syntaxe
# -*- coding: utf-8 -*-
presentation = "Je m'appelle {prenom} {nom} et j'ai eu le prix
{prix} pour la découverte {decouverte}".format(prenom="Akira",
nom="Yoshino", prix="Nobel de chimie 2019", decouverte="Batterie
en Lithuim"))
print(presentation)
#affiche Je m’appelle Akira Yoshino et j'ai eu le prix Nobel de chimie 2019 pour
la découverte 'Batterie en Lithuim'
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Chaînes de caractères
Formatage et affichage d’une chaîne de caractères
(2)• Encore une autre syntaxe
# -*- coding: utf-8 -*-
presentation = "Je m'appelle {} {} et j'ai eu le prix {} pour la
découverte {}".format("Akira","Yoshino", "Nobel de chimie 2019",
"Batterie en Lithuim"))
print(presentation)
#affiche Je m’appelle Akira Yoshino et j'ai eu le prix Nobel de chimie 2019 pour
la découverte 'Batterie en Lithuim'
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Chaînes de caractères
Conversion en type str (type chaîne de caractères
• Exemple
# -*- coding: utf-8 -*-
annee_naissance=int(input("Entrez votre année de naissance"))
age = 2020 - annee_naissance
print("Voici votre age: ",str(age)) #Conversion du type int vers str
print("""Si si, vous avez bien {votre_age}, il ne faut pas mal le
prendre ! ;) """.format(votre_age=str(age)))
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Chaînes de caractères
Sélection d’un caractère ou d’une sous-chaîne dans
une chaîne de caractères
# -*- coding: utf-8 -*-
#sélection de caractères
chaine = "L'amour c’est de la Physique, le mariage c'est de la
Chimie [Alexandre Dumas]"
lettre_une = chaine[0]
lettre_fin = chaine[-1]
lettre_avantFin = chaine[len(chaine)-2]
# -*- coding: utf-8 -*-
#sélection de sous-chaînes
chaine = "L'amour c’est de la Physique, le mariage c'est de la
Chimie [Alexandre Dumas]"
mot1 = chaine[0:7] #affiche L'amour. On peut écrire aussi : chaine[:7]
auteur = chaine[62:len(chaine)] #affiche [Alexande Dumas]. On peut écrire
aussi : chaine[62:]
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Chaînes de caractères
• Les chaînes de caractères ne sont pas mutables (i.e. on ne
peut pas les modifier)
• Pour pouvoir modifier une chaîne, il faut la convertir en
liste, puis modifier la liste (qui, elle, est mutable) puis la
convertir en une chaîne (voir exemple dans la slide : )
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Les Listes
• Type : list
• La variable de type liste se définit entre [ et ]. Chaque
élément de la liste est séparé par une virgule
maliste = [1, 2, 'coronavirus', 2020, '&']
print(maliste)
maliste[2] = "Covid-19" //modification de coronavirus par Covid-19
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Les Listes
• Une liste ne contient pas nécessairement des objets (ou des
types) de même nature (entiers, chaînes de caractères…).
• Une liste est mutable.
• Une liste, comme une chaîne de caractères, est définie à l'aide
d'indices qui permettent de se repérer dans la liste, d'en extraire
des parties…
• Il existe de nombreuses fonctions pour pouvoir travailler sur des
listes (taille, ajout, suppression, recherche, max, min…)
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Les Listes
Création d'une liste vide
maliste = []
#ou
maliste = list()
type(maliste) #affiche <class list>
Ajout en fin d'une liste
maliste = [1,2,3]
[Link](-64) #ajout de 64 à la fin
print(maliste) #affiche 1 2 3 -64
Insertion en milieu de liste
maliste = ["Scadium","Titan","Chrome"]
[Link](2,"Vanadium")
print(maliste)
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Les Listes
Concaténation de listes
maliste_1 = [10,20,30]
maliste_2 = [40,50,'a']
maliste_1.extends(maliste_2) #ou maliste_1+=maliste_2
print(maliste_1) #affiche 10 20 30 40 50 'a'
Suppression d’éléments d’une liste
maliste_1 = [10,20,30]
del maliste_1[1]
print(maliste_1) #affiche 10 30
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Les Listes
Parcours des éléments d'une liste
Avec while
ma_liste = ['a', 'b', 'c', 'd']
while i < len(ma_liste):
print(ma_liste[i])
i += 1
#affiche:
#a
#b
#c
#d
Avec for
ma_liste = ['a', 'b', 'c', 'd']
for i in ma_liste:
print(elt)
#affiche:
#a
#b
#c
#d
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Les Listes
Parcours des éléments d'une liste
Avec for + fonction enumerate
ma_liste = ['a', 'b', 'c', 'd']
for i,valeur in enumerate(ma_liste):
print("A l'indice{}, se trouve la valeur {}", format(i,valeur))
#affiche:
# A l’indice 0, se trouve la valeur a
# A l’indice 1, se trouve la valeur b
# A l’indice 2, se trouve la valeur c
# A l’indice 3, se trouve la valeur d
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Les Tuples
• Type : tuple
• La variable de type tuple se définit entre ( et ). Chaque
élément du tuple est séparé par une virgule
montuple = ('Roman', 'Le philosophe qui n’était pas sage',
2012, 'Laurent Gounelle', 'Pocket')
• Un tuple est en tout point identique à une liste sauf
qu'il n'est pas mutable : une fois défini, on ne peut plus
modifier un élément du tuple
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Les Dictionnaires
• Type : dict
• La variable de type dictionnaire se définit entre { et }. On
commence par définir un dictionnaire vide, puis on
associe une clé et une valeur pour remplir notre
dictionnaire (la clé remplace l'indice de la traditionnelle
liste)
mondictionnaire = {}
mondictionnaire['a']=78
mondictionnaire['b']=79
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Les dictionnaires
mondictionnaire = {}
mondictionnaire['mouse']=''souris'
mondictionnaire['keyboard']='clavier'
• Dans cet exemple, 'mouse' est une clé et 'souris' la valeur
associée. On peut pour connaître la valeur associée à une
clé effectuer l'opération suivante :
mondictionnaire = {}
mondictionnaire['mouse']='souris'
mondictionnaire['keyboard']='clavier'
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Les dictionnaires
• Contrairement aux listes, chaines et tuples, les
dictionnaires ne sont pas ordonnés. On ne peut pas
utiliser d'indices pour se référer à un élément
• Un dictionnaire est mutable, comme une liste
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri
Les dictionnaires
• Un autre exemple (des tuples dans
un dictionnaire…)
>>> arb = {}
>>> arb[(1,2)] = 'Peuplier' #(1,2) est un tuple
>>> arb[(3,4)] = 'Platane'
>>> arb[(6,5] = 'Palmier'
>>> arb[5,1] = 'Cycas'
>>> arb[7,3] = 'Sapin'
>>> print(arb)
{(3, 4): 'Platane', (6, 5): 'Palmier', (5, 1): 'Cycas', (1,
2): 'Peuplier',
(7, 3): 'Sapin'}
>>> print(arb[(6,5)])
palmier
Ecole Nationale Supérieure de Chimie de Kénitra - Pr. Anass Nouri