SlideShare une entreprise Scribd logo
Theme 9Approfondir les structures de données (Listes, tuples et dictionnaires) 2011-04-07 1
Les listes: Accès aux éléments nombres=[5,38,10,25] Accéder à un seul élément (index) Ex: print(nombres[2]) 10  Accéder à plusieurs éléments (slicing: découpage en tranches) Ex: print(nombres[1:3]) [38, 10]	#tranche de type liste Ex: print(nombres[2:3]) [10] Ex: print(nombres[2:]) [10,25] Ex: print(nombres[-1]) 25 Ex: print(nombres[-3]) 38 2
nombres = [17, 38, 10, 25, 72] Trier une liste Ex: nombres.sort() Inverser  l’ordre des éléments Ex: nombres.reverse() Retrouver l'index d'un élément (le premier rencontré) Ex: nombres.index(17) Enlever un élément (le premier rencontré) Ex: nombres.remove(38) Enlever un élément à un index Ex: del(nombres[2]) Ex: del(nombres[2:4]) 3 Les listes: autres opérations
Les listes: Remplacement d’éléments mots = ['jambon', 'fromage', 'confiture', 'chocolat'] Insertion dans une liste Ex: mots[2:2] = ['miel'] Ex: mots[5:5] =['saucisson', 'ketchup'] Suppression de la liste Ex: mots[2:2] = ['miel'] Ex: mots[2:5]=[] Ex: mots[1:3] = ['salade'] 4
Exercice 9.1 Écrire un programme qui permet de  simuler une gestion de la file d’attente suivante dans un centre de services ['client 1','client 2','client 3','client 4','client 5','client 6','client 7']  Sans utiliser un compteur de boucles Le premier client arrivé dans le centre de services  est  'client 1‘ Le résultat de la simulation serait ['client 1'] est en cours de service,   il reste les clients suivants dans la liste ['client 2','client 3','client 4','client 5','client 6','client 7'] dans la file ['client 1'] servi ['client 2'] est en cours de service,   il reste les clients suivants dans la liste ['client 3','client 4','client 5','client 6','client 7'] dans la file ['client 2'] servi Etc.. 5
Exercice 9.2 Écrire un programme qui permet de comparer deux listes Par exemple comparer deux à deux les listes suivantes liste1=[76,23,14,2,33,18] liste2=[23,76,33,18,2,14] liste3=[2,56,85,12,1,1] Pour cela nous utiliserons la fonction sort() 6
Les listes et la fonction range La fonction range fournit un ensemble de nombres (objet particulier appelé itérateur) range( [départ,]arrivée[,pas]) Nous pouvons construire une liste à partir de cet ensemble avec list() Ex: list(range(2,10)) Nous pouvons  aussi construire un tupleà partir de cet ensemble avec tuple() Ex: tuple(range(4,25,6)) 7
Les tuples Types de données composites: chaînes, listes + tuples Chaines Vs listes Composition: caractères Vs différents types Non modifiables Vs modifiables Tuple Composition: différents types Non modifiable Syntaxe Ex: monTuple=('anne','cote',24,'etudiante') 8
Similaires aux opérations sur les listes, sauf opérations de modification(ajout et suppression) Longeur d’un tuple: len(monTuple) Accès à un élément monTuple[3] monTuple[1:] (le slicing retourne un tuple) Conversion en liste Liste = list(monTuple) 9 Les tuples: les opérations
Exercice 9.3 Écrire un programme qui permet de charger des villes ainsi que leurs coordonnées (latitude, longitude) enregistrées dans un fichier «villes.txt ».  Pour que ces informations ne soient pas modifiées tout au long du programme, nous désirons les inscrire dans des tuples.  Les différents tuples seront enregistrés dans une liste définie dans le programme 10
Surcharge de l’opérateur + Applicable aux chaines, listes et tuples Opérateur + (concaténation): uneChaine = "aaabbb ccc "  uneChaine = " --- "+uneChaine+ " --- " liste = liste + ['jambon', 'fromage', 'confiture'] liste1 = liste + [‘recette'] montuple = tuple1+tuple2 montuple=tuple6+montuple+tuple3 11
Surcharge de l’opérateur * Applicable aux chaines, listes et tuples uneChaine = "aaabbb cccc " *3 uneChaine = unechaine+"  "+unechaine*3 liste = liste*3 liste1 = liste +[‘recette'] montuple= (tuple6*montuple+tuple3)*2 12
Les dictionnaires Type composite Chaînes, listes et tuples: séquences ordonnées (les éléments sont indexés par des séquences d’entiers) Dictionnaire: Opérations: La plupart est similaire avec celles des listes Différence: Les éléments sont indexés par clés uniques Une clé: alphabétique, numérique, ou type composite(sous certaines conditions) Les éléments peuvent être de n’importe quel type de donnée 13
Création d’un dictionnaire Initialisation directe Initialisation par ajout élément par élément 14 dico = {'computer': 'ordinateur', 'keyboard': 'clavier', 'mouse': 'souris'} printdico["computer"] dico = {}  #intialisationd’un dictionnaire   dico["a"]=["arbre","alien","abrit"] dico["b"]=["betise","batiment"] dico["c"]=["cat","cale","cailloux"]    printdico print dico["a"] print dico["a"][2]
Opérations sur les dictionnaires Enlever un élément Exemple: deldico["a"] Test d’appartenance d’une clé print  "b" in dico if "b" in dico: print "Trouvé!" Liste des clés du dictionnaire printdico.keys() Liste des valeurs du dictionnaire printdico.values() 15
Parcours d’un dictionnaire Itérer sur les clés for uneClein dico: printuneCle,dico[uneCle] Lister les couples (clé, valeur)  du dicitonnaire sous forme de liste de tuples liste = dico.items() print liste Parcourir les tuples de clés et leurs éléments associés for uneCle, uneValeurin dico.items(): printuneCle,uneValeur 16
Remarques Les dictionnaires ne sont pas des séquences (les indexes n’ont pas d’ordre déterminé) Erreur si on essaye de  Concaténer Extraction d’éléments contigus (slicing) Possibilité d’affecter un indice (la clé) contrairement aux listes 17
Exercice 9.4 Nous désirons représenter la matrice suivante à l’aide d’un dictionnaire: 18
Solution A chaque couple (ligne, colonne) correspond un élément Représenter le couple par un tuple Indexer l’élément par le couple (ligne, colonne) correspondant dico[(0,2)]=["roi"] dico[(1,0)]=["pion"] dico[(3,1)]=["reine"] dico[(4,0)]=["tour"] dico[(5,2)]=["chevalier"] Tester  printdico[(5,5)] !!! 19
Solution au probleme de clé non définie Traiter le cas des clés inexistantes dans le dictionnaire: fonction get() Exemple: printechiquier.get((5,5), "non existant") 20 clé Message a afficher dans le cas ou la clé n’existe pas
Exercice 9.5 Écrivez une fonction qui échange les clés et les valeurs d’un dictionnaire (ce qui permettra par exemple de transformer un dictionnaire  anglais/français en un dictionnaire français/anglais).  On suppose que le dictionnaire ne contient pas plusieurs valeurs identiques. 21
Exercice 9.6 Écrivez un script qui crée un mini-système de base de données fonctionnant a l’aide d’un dictionnaire, dans lequel vous mémoriserez les noms d’une série de copains, leur âge et leur taille.  Votre script devra comporter deux fonctions : la première pour le remplissage du dictionnaire, et la seconde pour sa consultation Dans la fonction de remplissage, utilisez une boucle pour accepter les données entrées par l’utilisateur. Dans le dictionnaire, le nom de l’élève servira de clé d’accès, et les valeurs seront constituées de tuples(âge, taille). La fonction de consultation comportera elle aussi une boucle, dans laquelle l’utilisateur pourra fournir un nom quelconque pour obtenir en retour le couple ≪ âge, taille ≫ correspondant.  22

Contenu connexe

Tendances

Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2
Mathieu Saby
 
Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta
Mathieu Saby
 
Cours de C++, en français, 2002 - Cours 3.4
Cours de C++, en français, 2002 - Cours 3.4Cours de C++, en français, 2002 - Cours 3.4
Cours de C++, en français, 2002 - Cours 3.4
Laurent BUNIET
 
Mort au boilerplate avec scala meta
Mort au boilerplate avec scala metaMort au boilerplate avec scala meta
Mort au boilerplate avec scala meta
Damien GOUYETTE
 
Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012
Pablo Tamarit
 
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI Cours les Listes doublement chainées Prof. KHALIFA MANSOURI
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI
Mansouri Khalifa
 
Langage Perl
Langage PerlLangage Perl
Langage Perl
Rached Krim
 
Analyse de données JSON dans Openrefine
Analyse de données JSON dans OpenrefineAnalyse de données JSON dans Openrefine
Analyse de données JSON dans Openrefine
Mathieu Saby
 
Marzouk collection-map
Marzouk collection-mapMarzouk collection-map
Marzouk collection-map
abderrahim marzouk
 
Coffee script
Coffee scriptCoffee script
Coffee scriptantho1404
 
516356
516356516356
Les commandes sql
Les commandes sqlLes commandes sql
Les commandes sqlHanfi Akram
 
Chapitre 3 structures séquentielles
Chapitre 3 structures séquentiellesChapitre 3 structures séquentielles
Chapitre 3 structures séquentielles
Sana Aroussi
 
Initiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJProInitiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJPro
Ettore Rizza
 
La 2ème partie de la présentation PHP
La 2ème partie de la présentation PHPLa 2ème partie de la présentation PHP
La 2ème partie de la présentation PHP
Club Scientifique de l'ESI - CSE
 
Bases de php - Partie 4
Bases de php - Partie 4Bases de php - Partie 4
Bases de php - Partie 4
Régis Lutter
 
Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbre
ECAM Brussels Engineering School
 

Tendances (19)

Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2
 
Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta Aide mémoire Openrefine 3.3 béta
Aide mémoire Openrefine 3.3 béta
 
Cours de C++, en français, 2002 - Cours 3.4
Cours de C++, en français, 2002 - Cours 3.4Cours de C++, en français, 2002 - Cours 3.4
Cours de C++, en français, 2002 - Cours 3.4
 
Mort au boilerplate avec scala meta
Mort au boilerplate avec scala metaMort au boilerplate avec scala meta
Mort au boilerplate avec scala meta
 
Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012Introduction Clojure - Geneva JUG - Octobre 2012
Introduction Clojure - Geneva JUG - Octobre 2012
 
Programmation Fonctionnelle
Programmation FonctionnelleProgrammation Fonctionnelle
Programmation Fonctionnelle
 
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI Cours les Listes doublement chainées Prof. KHALIFA MANSOURI
Cours les Listes doublement chainées Prof. KHALIFA MANSOURI
 
Php
PhpPhp
Php
 
Langage Perl
Langage PerlLangage Perl
Langage Perl
 
Analyse de données JSON dans Openrefine
Analyse de données JSON dans OpenrefineAnalyse de données JSON dans Openrefine
Analyse de données JSON dans Openrefine
 
Marzouk collection-map
Marzouk collection-mapMarzouk collection-map
Marzouk collection-map
 
Coffee script
Coffee scriptCoffee script
Coffee script
 
516356
516356516356
516356
 
Les commandes sql
Les commandes sqlLes commandes sql
Les commandes sql
 
Chapitre 3 structures séquentielles
Chapitre 3 structures séquentiellesChapitre 3 structures séquentielles
Chapitre 3 structures séquentielles
 
Initiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJProInitiation à la fouille de texte - formation AJPro
Initiation à la fouille de texte - formation AJPro
 
La 2ème partie de la présentation PHP
La 2ème partie de la présentation PHPLa 2ème partie de la présentation PHP
La 2ème partie de la présentation PHP
 
Bases de php - Partie 4
Bases de php - Partie 4Bases de php - Partie 4
Bases de php - Partie 4
 
Développement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbreDéveloppement informatique : Algorithmique I : Récursion et arbre
Développement informatique : Algorithmique I : Récursion et arbre
 

En vedette

Islam et le développement
Islam et le développement Islam et le développement
Islam et le développement
centurywa
 
Bloque 1 las organizaciones humanas
Bloque 1 las organizaciones humanasBloque 1 las organizaciones humanas
Bloque 1 las organizaciones humanas
25463196
 
Nantes, castle
Nantes, castleNantes, castle
Nantes, castleARCHOUK
 
Ejercicios de interés tipos de mercado
Ejercicios de interés tipos de mercadoEjercicios de interés tipos de mercado
Ejercicios de interés tipos de mercado
Luz García
 
Livret formation
Livret formationLivret formation
Livret formationPSL34
 
New Public Management
New Public ManagementNew Public Management
New Public Management
samirsharshar
 
MOOC DD animation evaluation par les pairs MOODLE retour expérience
MOOC DD  animation evaluation par les pairs MOODLE retour expérienceMOOC DD  animation evaluation par les pairs MOODLE retour expérience
MOOC DD animation evaluation par les pairs MOODLE retour expérience
Florence Labord
 
Lecturas juridicas número 27
Lecturas juridicas número 27Lecturas juridicas número 27
Lecturas juridicas número 27
Lilia G. Torres Fernández
 
2011 study tennis business
2011 study tennis business 2011 study tennis business
2011 study tennis business Kurt Salmon
 
M7 lesson 2 2 simplify & evaluate expressions pdf part 3
M7 lesson 2 2 simplify & evaluate expressions pdf part 3M7 lesson 2 2 simplify & evaluate expressions pdf part 3
M7 lesson 2 2 simplify & evaluate expressions pdf part 3
lothomas
 
Simposio Electrotecnia 2015 en Perú
Simposio Electrotecnia 2015 en PerúSimposio Electrotecnia 2015 en Perú
Simposio Electrotecnia 2015 en Perú
Eduardo Zolezzi
 
Aprendizaje y cambio
Aprendizaje y cambioAprendizaje y cambio
Aprendizaje y cambio
Ricardo Ranalli
 
Madame montour keynote 1
Madame montour keynote 1Madame montour keynote 1
Madame montour keynote 1luckydreamer45
 
La escuela de la alegría
La escuela de la alegríaLa escuela de la alegría
La escuela de la alegría
Sergio Perez
 
Encadrer les forfaits jours
Encadrer les forfaits joursEncadrer les forfaits jours
la reforma laboral
la reforma laboralla reforma laboral
la reforma laboral
Junta de Andalucía
 
Approachesparticipatives
ApproachesparticipativesApproachesparticipatives
Approachesparticipatives
Csdi Initiative
 
Perfil del periodista digital
Perfil del periodista digitalPerfil del periodista digital
Perfil del periodista digital
mearias
 

En vedette (20)

Islam et le développement
Islam et le développement Islam et le développement
Islam et le développement
 
Bloque 1 las organizaciones humanas
Bloque 1 las organizaciones humanasBloque 1 las organizaciones humanas
Bloque 1 las organizaciones humanas
 
Nantes, castle
Nantes, castleNantes, castle
Nantes, castle
 
Ejercicios de interés tipos de mercado
Ejercicios de interés tipos de mercadoEjercicios de interés tipos de mercado
Ejercicios de interés tipos de mercado
 
Livret formation
Livret formationLivret formation
Livret formation
 
New Public Management
New Public ManagementNew Public Management
New Public Management
 
MOOC DD animation evaluation par les pairs MOODLE retour expérience
MOOC DD  animation evaluation par les pairs MOODLE retour expérienceMOOC DD  animation evaluation par les pairs MOODLE retour expérience
MOOC DD animation evaluation par les pairs MOODLE retour expérience
 
Lymphoedeme post test
Lymphoedeme post testLymphoedeme post test
Lymphoedeme post test
 
Lecturas juridicas número 27
Lecturas juridicas número 27Lecturas juridicas número 27
Lecturas juridicas número 27
 
Madame montour 3
Madame montour 3Madame montour 3
Madame montour 3
 
2011 study tennis business
2011 study tennis business 2011 study tennis business
2011 study tennis business
 
M7 lesson 2 2 simplify & evaluate expressions pdf part 3
M7 lesson 2 2 simplify & evaluate expressions pdf part 3M7 lesson 2 2 simplify & evaluate expressions pdf part 3
M7 lesson 2 2 simplify & evaluate expressions pdf part 3
 
Simposio Electrotecnia 2015 en Perú
Simposio Electrotecnia 2015 en PerúSimposio Electrotecnia 2015 en Perú
Simposio Electrotecnia 2015 en Perú
 
Aprendizaje y cambio
Aprendizaje y cambioAprendizaje y cambio
Aprendizaje y cambio
 
Madame montour keynote 1
Madame montour keynote 1Madame montour keynote 1
Madame montour keynote 1
 
La escuela de la alegría
La escuela de la alegríaLa escuela de la alegría
La escuela de la alegría
 
Encadrer les forfaits jours
Encadrer les forfaits joursEncadrer les forfaits jours
Encadrer les forfaits jours
 
la reforma laboral
la reforma laboralla reforma laboral
la reforma laboral
 
Approachesparticipatives
ApproachesparticipativesApproachesparticipatives
Approachesparticipatives
 
Perfil del periodista digital
Perfil del periodista digitalPerfil del periodista digital
Perfil del periodista digital
 

Similaire à Theme 9(bis)

Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019
Aziz Darouichi
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
Abdoulaye Dieng
 
Atelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniAtelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniShellmates
 
RCarte_Commandes-R.pdf
RCarte_Commandes-R.pdfRCarte_Commandes-R.pdf
RCarte_Commandes-R.pdf
DrissRifai1
 
cour informatique niveau3 programmation en Python.pdf
cour informatique niveau3 programmation en  Python.pdfcour informatique niveau3 programmation en  Python.pdf
cour informatique niveau3 programmation en Python.pdf
Nanchi6
 
Oracle : extension du langage SQL
Oracle : extension du langage SQLOracle : extension du langage SQL
Oracle : extension du langage SQL
Mohammed Jaafar
 
Chapitre3 tableauxcpp
Chapitre3 tableauxcppChapitre3 tableauxcpp
Chapitre3 tableauxcpp
Aziz Darouichi
 
Introduction à Ruby
Introduction à RubyIntroduction à Ruby
Introduction à Ruby
Jérémy Lecour
 
TAD (1).pptx
TAD (1).pptxTAD (1).pptx
TAD (1).pptx
SergeOngolo
 
Introduction_R.pdf
Introduction_R.pdfIntroduction_R.pdf
Introduction_R.pdf
JeanPhilippeTurcotte5
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
salah fenni
 
DataDrill EXPRESS: Les équations dans DataDrill
DataDrill EXPRESS: Les équations dans DataDrill DataDrill EXPRESS: Les équations dans DataDrill
DataDrill EXPRESS: Les équations dans DataDrill
Olivier Pinette
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer
Alexandru Radovici
 
Support_Cours_SQL.ppt
Support_Cours_SQL.pptSupport_Cours_SQL.ppt
Support_Cours_SQL.ppt
SiwarAbbes1
 
Initiation r
Initiation rInitiation r
Cours Algorithme: Tableau
Cours Algorithme: TableauCours Algorithme: Tableau
Cours Algorithme: Tableau
InforMatica34
 
POO-chapitre6.pptx
POO-chapitre6.pptxPOO-chapitre6.pptx
POO-chapitre6.pptx
ImaneLoukili7
 
condition et boucle (2).pptx
condition et boucle  (2).pptxcondition et boucle  (2).pptx
condition et boucle (2).pptx
MohammedErritali2
 

Similaire à Theme 9(bis) (20)

Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019Chapitre3TableauxEnCppV2019
Chapitre3TableauxEnCppV2019
 
Introduction à Python
Introduction à PythonIntroduction à Python
Introduction à Python
 
Atelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El HassaniAtelier Python 2eme partie par Achraf Kacimi El Hassani
Atelier Python 2eme partie par Achraf Kacimi El Hassani
 
RCarte_Commandes-R.pdf
RCarte_Commandes-R.pdfRCarte_Commandes-R.pdf
RCarte_Commandes-R.pdf
 
cour informatique niveau3 programmation en Python.pdf
cour informatique niveau3 programmation en  Python.pdfcour informatique niveau3 programmation en  Python.pdf
cour informatique niveau3 programmation en Python.pdf
 
Oracle : extension du langage SQL
Oracle : extension du langage SQLOracle : extension du langage SQL
Oracle : extension du langage SQL
 
Chapitre3 tableauxcpp
Chapitre3 tableauxcppChapitre3 tableauxcpp
Chapitre3 tableauxcpp
 
Cours3 gdm sql
Cours3 gdm sqlCours3 gdm sql
Cours3 gdm sql
 
Introduction à Ruby
Introduction à RubyIntroduction à Ruby
Introduction à Ruby
 
TAD (1).pptx
TAD (1).pptxTAD (1).pptx
TAD (1).pptx
 
Introduction_R.pdf
Introduction_R.pdfIntroduction_R.pdf
Introduction_R.pdf
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
 
DataDrill EXPRESS: Les équations dans DataDrill
DataDrill EXPRESS: Les équations dans DataDrill DataDrill EXPRESS: Les équations dans DataDrill
DataDrill EXPRESS: Les équations dans DataDrill
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer
 
Support_Cours_SQL.ppt
Support_Cours_SQL.pptSupport_Cours_SQL.ppt
Support_Cours_SQL.ppt
 
Initiation r
Initiation rInitiation r
Initiation r
 
TABLEUR Excel
TABLEUR ExcelTABLEUR Excel
TABLEUR Excel
 
Cours Algorithme: Tableau
Cours Algorithme: TableauCours Algorithme: Tableau
Cours Algorithme: Tableau
 
POO-chapitre6.pptx
POO-chapitre6.pptxPOO-chapitre6.pptx
POO-chapitre6.pptx
 
condition et boucle (2).pptx
condition et boucle  (2).pptxcondition et boucle  (2).pptx
condition et boucle (2).pptx
 

Plus de salmazen

Theme 8(suite)
Theme 8(suite)Theme 8(suite)
Theme 8(suite)salmazen
 
Cours python
Cours pythonCours python
Cours pythonsalmazen
 
Theme 7 (suite)
Theme 7 (suite)Theme 7 (suite)
Theme 7 (suite)salmazen
 
Exemples for1
Exemples for1Exemples for1
Exemples for1salmazen
 
Exemples while2
Exemples while2Exemples while2
Exemples while2salmazen
 
Exemples for
Exemples forExemples for
Exemples forsalmazen
 
Exemples if
Exemples ifExemples if
Exemples ifsalmazen
 
Exemples while
Exemples whileExemples while
Exemples whilesalmazen
 
Theme1 (1)
Theme1 (1)Theme1 (1)
Theme1 (1)salmazen
 

Plus de salmazen (20)

Theme 10
Theme 10Theme 10
Theme 10
 
Theme 10
Theme 10Theme 10
Theme 10
 
Theme 8(suite)
Theme 8(suite)Theme 8(suite)
Theme 8(suite)
 
Cours python
Cours pythonCours python
Cours python
 
Theme 8
Theme 8Theme 8
Theme 8
 
Theme 7 (suite)
Theme 7 (suite)Theme 7 (suite)
Theme 7 (suite)
 
Theme 6
Theme 6Theme 6
Theme 6
 
Theme 5
Theme 5Theme 5
Theme 5
 
Exemples for1
Exemples for1Exemples for1
Exemples for1
 
Exemples while2
Exemples while2Exemples while2
Exemples while2
 
Exemples for
Exemples forExemples for
Exemples for
 
Exemples if
Exemples ifExemples if
Exemples if
 
Exemples while
Exemples whileExemples while
Exemples while
 
Theme3
Theme3Theme3
Theme3
 
Theme4
Theme4Theme4
Theme4
 
Theme3
Theme3Theme3
Theme3
 
Exercice0
Exercice0Exercice0
Exercice0
 
Theme2
Theme2Theme2
Theme2
 
Theme2
Theme2Theme2
Theme2
 
Theme1 (1)
Theme1 (1)Theme1 (1)
Theme1 (1)
 

Theme 9(bis)

  • 1. Theme 9Approfondir les structures de données (Listes, tuples et dictionnaires) 2011-04-07 1
  • 2. Les listes: Accès aux éléments nombres=[5,38,10,25] Accéder à un seul élément (index) Ex: print(nombres[2]) 10 Accéder à plusieurs éléments (slicing: découpage en tranches) Ex: print(nombres[1:3]) [38, 10] #tranche de type liste Ex: print(nombres[2:3]) [10] Ex: print(nombres[2:]) [10,25] Ex: print(nombres[-1]) 25 Ex: print(nombres[-3]) 38 2
  • 3. nombres = [17, 38, 10, 25, 72] Trier une liste Ex: nombres.sort() Inverser l’ordre des éléments Ex: nombres.reverse() Retrouver l'index d'un élément (le premier rencontré) Ex: nombres.index(17) Enlever un élément (le premier rencontré) Ex: nombres.remove(38) Enlever un élément à un index Ex: del(nombres[2]) Ex: del(nombres[2:4]) 3 Les listes: autres opérations
  • 4. Les listes: Remplacement d’éléments mots = ['jambon', 'fromage', 'confiture', 'chocolat'] Insertion dans une liste Ex: mots[2:2] = ['miel'] Ex: mots[5:5] =['saucisson', 'ketchup'] Suppression de la liste Ex: mots[2:2] = ['miel'] Ex: mots[2:5]=[] Ex: mots[1:3] = ['salade'] 4
  • 5. Exercice 9.1 Écrire un programme qui permet de simuler une gestion de la file d’attente suivante dans un centre de services ['client 1','client 2','client 3','client 4','client 5','client 6','client 7'] Sans utiliser un compteur de boucles Le premier client arrivé dans le centre de services est 'client 1‘ Le résultat de la simulation serait ['client 1'] est en cours de service, il reste les clients suivants dans la liste ['client 2','client 3','client 4','client 5','client 6','client 7'] dans la file ['client 1'] servi ['client 2'] est en cours de service, il reste les clients suivants dans la liste ['client 3','client 4','client 5','client 6','client 7'] dans la file ['client 2'] servi Etc.. 5
  • 6. Exercice 9.2 Écrire un programme qui permet de comparer deux listes Par exemple comparer deux à deux les listes suivantes liste1=[76,23,14,2,33,18] liste2=[23,76,33,18,2,14] liste3=[2,56,85,12,1,1] Pour cela nous utiliserons la fonction sort() 6
  • 7. Les listes et la fonction range La fonction range fournit un ensemble de nombres (objet particulier appelé itérateur) range( [départ,]arrivée[,pas]) Nous pouvons construire une liste à partir de cet ensemble avec list() Ex: list(range(2,10)) Nous pouvons aussi construire un tupleà partir de cet ensemble avec tuple() Ex: tuple(range(4,25,6)) 7
  • 8. Les tuples Types de données composites: chaînes, listes + tuples Chaines Vs listes Composition: caractères Vs différents types Non modifiables Vs modifiables Tuple Composition: différents types Non modifiable Syntaxe Ex: monTuple=('anne','cote',24,'etudiante') 8
  • 9. Similaires aux opérations sur les listes, sauf opérations de modification(ajout et suppression) Longeur d’un tuple: len(monTuple) Accès à un élément monTuple[3] monTuple[1:] (le slicing retourne un tuple) Conversion en liste Liste = list(monTuple) 9 Les tuples: les opérations
  • 10. Exercice 9.3 Écrire un programme qui permet de charger des villes ainsi que leurs coordonnées (latitude, longitude) enregistrées dans un fichier «villes.txt ». Pour que ces informations ne soient pas modifiées tout au long du programme, nous désirons les inscrire dans des tuples. Les différents tuples seront enregistrés dans une liste définie dans le programme 10
  • 11. Surcharge de l’opérateur + Applicable aux chaines, listes et tuples Opérateur + (concaténation): uneChaine = "aaabbb ccc " uneChaine = " --- "+uneChaine+ " --- " liste = liste + ['jambon', 'fromage', 'confiture'] liste1 = liste + [‘recette'] montuple = tuple1+tuple2 montuple=tuple6+montuple+tuple3 11
  • 12. Surcharge de l’opérateur * Applicable aux chaines, listes et tuples uneChaine = "aaabbb cccc " *3 uneChaine = unechaine+" "+unechaine*3 liste = liste*3 liste1 = liste +[‘recette'] montuple= (tuple6*montuple+tuple3)*2 12
  • 13. Les dictionnaires Type composite Chaînes, listes et tuples: séquences ordonnées (les éléments sont indexés par des séquences d’entiers) Dictionnaire: Opérations: La plupart est similaire avec celles des listes Différence: Les éléments sont indexés par clés uniques Une clé: alphabétique, numérique, ou type composite(sous certaines conditions) Les éléments peuvent être de n’importe quel type de donnée 13
  • 14. Création d’un dictionnaire Initialisation directe Initialisation par ajout élément par élément 14 dico = {'computer': 'ordinateur', 'keyboard': 'clavier', 'mouse': 'souris'} printdico["computer"] dico = {} #intialisationd’un dictionnaire   dico["a"]=["arbre","alien","abrit"] dico["b"]=["betise","batiment"] dico["c"]=["cat","cale","cailloux"]    printdico print dico["a"] print dico["a"][2]
  • 15. Opérations sur les dictionnaires Enlever un élément Exemple: deldico["a"] Test d’appartenance d’une clé print  "b" in dico if "b" in dico: print "Trouvé!" Liste des clés du dictionnaire printdico.keys() Liste des valeurs du dictionnaire printdico.values() 15
  • 16. Parcours d’un dictionnaire Itérer sur les clés for uneClein dico: printuneCle,dico[uneCle] Lister les couples (clé, valeur) du dicitonnaire sous forme de liste de tuples liste = dico.items() print liste Parcourir les tuples de clés et leurs éléments associés for uneCle, uneValeurin dico.items(): printuneCle,uneValeur 16
  • 17. Remarques Les dictionnaires ne sont pas des séquences (les indexes n’ont pas d’ordre déterminé) Erreur si on essaye de Concaténer Extraction d’éléments contigus (slicing) Possibilité d’affecter un indice (la clé) contrairement aux listes 17
  • 18. Exercice 9.4 Nous désirons représenter la matrice suivante à l’aide d’un dictionnaire: 18
  • 19. Solution A chaque couple (ligne, colonne) correspond un élément Représenter le couple par un tuple Indexer l’élément par le couple (ligne, colonne) correspondant dico[(0,2)]=["roi"] dico[(1,0)]=["pion"] dico[(3,1)]=["reine"] dico[(4,0)]=["tour"] dico[(5,2)]=["chevalier"] Tester printdico[(5,5)] !!! 19
  • 20. Solution au probleme de clé non définie Traiter le cas des clés inexistantes dans le dictionnaire: fonction get() Exemple: printechiquier.get((5,5), "non existant") 20 clé Message a afficher dans le cas ou la clé n’existe pas
  • 21. Exercice 9.5 Écrivez une fonction qui échange les clés et les valeurs d’un dictionnaire (ce qui permettra par exemple de transformer un dictionnaire anglais/français en un dictionnaire français/anglais). On suppose que le dictionnaire ne contient pas plusieurs valeurs identiques. 21
  • 22. Exercice 9.6 Écrivez un script qui crée un mini-système de base de données fonctionnant a l’aide d’un dictionnaire, dans lequel vous mémoriserez les noms d’une série de copains, leur âge et leur taille. Votre script devra comporter deux fonctions : la première pour le remplissage du dictionnaire, et la seconde pour sa consultation Dans la fonction de remplissage, utilisez une boucle pour accepter les données entrées par l’utilisateur. Dans le dictionnaire, le nom de l’élève servira de clé d’accès, et les valeurs seront constituées de tuples(âge, taille). La fonction de consultation comportera elle aussi une boucle, dans laquelle l’utilisateur pourra fournir un nom quelconque pour obtenir en retour le couple ≪ âge, taille ≫ correspondant. 22