Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html. R.R. Université Lyon 2

Documents pareils
Ricco Rakotomalala R.R. Université Lyon 2

Utilisation d objets : String et ArrayList

Initiation à la programmation en Python

Présentation du langage et premières fonctions

TP 1. Prise en main du langage Python

STAGE IREM 0- Premiers pas en Python

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Introduction à MATLAB R

SOMMAIRE AIDE À LA CRÉATION D UN INDEX SOUS WORD. Service général des publications Université Lumière Lyon 2 Janvier 2007

Initiation à LabView : Les exemples d applications :

Découverte de Python

TD3 - Facturation avec archivage automatisé

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Définitions. Numéro à préciser. (Durée : )

Structure fonctionnelle d un SGBD

Perl Orienté Objet BioPerl There is more than one way to do it

SAP BusinessObjects Web Intelligence (WebI) BI 4

Conventions d écriture et outils de mise au point

Les bases du langage Python

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Bernard HAMM, Évelyne LAVOISIER

Plan du cours. Historique du langage Nouveautés de Java 7

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

Exercices Types Algorithmique et simulation numérique Oral Mathématiques et Algorithmique Banque PT Propositions de réponses

Présentation du PL/SQL

MESURES PHYSIQUES 1 è année Informatique Scientifique version 2.2. Python 3. Exercices corrigés

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Programmation parallèle et distribuée

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)


EXCEL PERFECTIONNEMENT CALCULS AVANCES

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours 14 Les fichiers

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Publier un Carnet Blanc

UE C avancé cours 1: introduction et révisions

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Architecture des ordinateurs

Algorithmique et Programmation, IMA

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Initiation à Excel. Frédéric Gava (MCF)

1 CRÉER UN TABLEAU. IADE Outils et Méthodes de gestion de l information

Rappels sur les suites - Algorithme

CATALOGUE DES FORMATIONS 2014

Généralités sur le Langage Java et éléments syntaxiques.

1 Recherche en table par balayage

CATALOGUE DES FORMATIONS

td3a correction session7az

Logiciel PICAXE Programming Editor

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Publier dans la Base Documentaire

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

MAÎTRISE DE L ENVIRONNEMENT WINDOWS VISTA

Programme détaillé. LES TABLEAUX DE BORD Formation en présentiel (21 h) accompagnée d un parcours e-learning Excel (5 h)

Cours Bases de données 2ème année IUT

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

GUIDE Excel (version débutante) Version 2013

Groupe Eyrolles, 2006, pour la présente édition, ISBN :

Compte-rendu de projet de Système de gestion de base de données

Adama MBODJI MBODJ.SYSTEM

Programmer en JAVA. par Tama

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

L informatique en BCPST

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Les structures de données. Rajae El Ouazzani

2 Comment fonctionne un ordinateur, dans les grandes lignes

BUREAUTIQUE. 1 Journée. Maîtriser les fonctions de base du logiciel

TP Bases de données réparties

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation parallèle et distribuée

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

Cours d algorithmique pour la classe de 2nde

Débuter avec Excel. Excel

Table. des Matières GÉNÉRALITÉS BASE DE DOCUMENTS

Unix/Linux I. 1 ere année DUT. Université marne la vallée

6. Hachage. Accès aux données d'une table avec un temps constant Utilisation d'une fonction pour le calcul d'adresses

DM 1 : Montre Autoquartz ETA

Anticiper et prédire les sinistres avec une approche Big Data

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

OPTIMISATION EDITORIALE POUR LE REFERENCEMENT. Auteur : Sébastien Billard (s.billard@free.fr)

Java Licence Professionnelle CISII,

données en connaissance et en actions?

Programmation Web. Madalina Croitoru IUT Montpellier

1 Lecture de fichiers

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Introduction aux SGBDR

Excel. Identification. Informations sur vos besoins et objectifs. Notions fondamentales. Fiche de validation des besoins en formation Bureautique

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Formation tableur niveau 1 (Excel 2013)

Algorithmique, Structures de données et langage C

Traduction des Langages : Le Compilateur Micro Java

Transcription:

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html 1

Tableau statique en lecture seule d objets hétérogènes LES TUPLES 2

Création des tuples et accès aux données #définition d'un tuple t1 = (2,6,8,10,15,26) print(t1) #taille du tuple print(len(t1)) #accès indicé a = t1[0] print(a) #modification? t1[2] = 3 #plage d'indices b = t1[2:5] print(b) #autre plage c = t1[:4] print(c) #indiçage négatif d = t1[-1] print(d) #indiçage négatif e = t1[-3:] print(e) 6 éléments Les ( ) sont importantes pour indiquer qu il s agit d un tuple, «,» sépare les éléments. (2,6,8,10,15,26) 1 er élément, les indices vont de 0 à len(t1)-1 Remarque : a n est pas un tuple ERREUR Attention : on récupère à partir du n 2 (inclus) au n 5 (non-inclus) c.-à-d. les indices 2, 3, 4 Résultat : b est un tuple avec (8,10,15) Les 4 premiers éléments c.-à-d. les indices 0, 1, 2, 3 : nous obtenons le tuple (2, 6, 8, 10). Le 1 er élément à partir de la fin : 26 Les 3 derniers éléments : (10,15,26) 3

Plus loin avec les tuples #concaténation t2 = (7, 9,31) t3 = t1 + t2 print(t3) #réplication t4 = 2 * t2 print(t4) #tuples d'objets hétérogènes v1 = (3,6,"toto",True,34.1) print(v1) #tuple de tuples x = ((2,3,5),(6,7,9),(1,8)) print(x) #accès indicé print(x[2][1]) 8 #accès aux tailles print(len(x)) 3 print(len(x[2])) 2 (2,6,8,10,15,26,7,9,31) (7,9,31,7,9,31) Ca ne pose absolument aucun problème. Sorte de tableau à 2 dimensions x[0] (2,3,5) x[1] (6,7,9) x[2] (1,8) Organisation de la structure 3 éléments sur la 1 ère dimension 2 éléments dans le tuple référencé par x[2] 4

Bilan sur les tuples Type tuple cf. appel de la fonction type() Collection d objets de types hétérogènes Taille et contenu fixé lors de l écriture du programme Impossible de modifier : objet non mutable La variable de type tuple est en réalité une référence (pointeur de pointeur) Bénéficie du mécanisme de ramasse miettes Accès indicé, plage d indices possible, indices négatifs possibles aussi Structures complexes avec tuple de tuples, et même plus à voir plus tard 5

Tableau dynamique en lecture-écriture d objets hétérogènes LES LISTES 6

Liste Le type list Liste tuple de taille dynamique et modifiable #définition d'une liste L1 = [2,6,8,10,15,26] print(l1) #taille de la tuple = 6 print(len(l1)) #accès indicé = 2 a = L1[0] print(a) #modification! Possible! L1[2] = 3 print(l1) Les [ ] sont importantes pour indiquer qu il s agit d une liste, «,» sépare les éléments. [2,6,8,10,15,26] [2,6,3,10,15,26] Les autres mécanismes associés aux tuples sont transposables aux listes : plages d indices indiçages négatifs objets hétérogènes liste de listes (tableaux 2D ou +) concaténation, réplication 7

Plus loin avec les listes : modification de taille et de contenu #autre liste L2 = [32,69,28,69] #ajout L2.append(21) print(l2) #insertion à l'indice 1 L2.insert(1,53) print(l2) #suppression elt n 3 del L2[3] print(l2) #accès + suppression elt n 1 a = L2.pop(1) print(a) renvoie 53 #inversion L2.reverse() print(l2) #étendre L2.extend([34,55]) print(l2) Une liste est un objet (instance de classe) auquel est associé des méthodes permettant de le manipuler. [21,69,69,32] [32,69,28,69,21] [32,53,69,28,69,21] [32,53,69,69,21] 28 a disparu de L2 [32,69,69,21] 53 a disparu de L2 [21,69,69,32,34,55] Remarque : L2.clear() Permet de vider la liste 8

Les «List Comprehensions» (traduite en «listes en intension») Objectif : un mécanisme simple (et concis) pour générer une liste à partir d une autre liste. Exemple 1 : Monter tous les chiffres au carré source = [1,5,8,12,7] resultat = [] for v in source: resultat.append(v**2) print(resultat) resultat = [v**2 for v in source] print(resultat) La convention d écriture nous facilite la tâche!!! Exemple 2 : Actions conditionnelles source = [1,5,8,12,7] resultat = [] for v in source: if (v % 2 == 0): resultat.append(v**2) print(resultat) resultat = [v**2 for v in source if (v % 2 == 0)] print(resultat) Pour aller plus loin : https://docs.python.org/3.4/tutorial/datastructures.html#list-comprehensions http://sametmax.com/python-love-les-listes-en-intention-partie/ 9

Plus loin avec les listes : traitement par le contenu L2 = [21,69,69,32,34,55] #recherche d'élément trouve = 32 in L2 print(trouve) #index id = L2.index(34) print(id) #comptage nb = L2.count(69) print(nb) #retrait par valeur L2.remove(69) print(l2) Renvoie True puisque la valeur 32 se trouve dans la liste Renvoie 4 puisque la valeur 34 apparaît à l indice n 4 (indice du 1 er trouvé) Renvoie 2 puisque la valeur 69 apparaît 2 fois dans la liste Retire la valeur 69 de la liste, la première que la méthode trouvera [21,69,32,34,55] Ce mécanisme fonctionne avec tout type d objet pourvu qu une comparaison soit possible (ex. chaîne, etc.) 10

Une variable de type liste est une référence #L3 L3 = [61,92,17] print(l3) #affectation? En réalité, c est la référence qui est copiée. L4 = L3 print(l4) L3 et L4 «pointent» au même endroit. #modification d'une valeur L4[1] = 55 #répercussions print(l4) [61,55,17] #mais aussi sur L3 print(l3) [61,55,17]??? #L3 L3 = [61,92,17] #copie des valeurs L4 = L3.copy() print(l4) L4 référence une nouvelle zone mémoire, et les données de L3 y sont recopiées. L4[1] = 55 print(l4) [61,55,17] print(l3) [61,92,17]!!! L3 n est pas impacté. 11

Un exemple : somme de valeurs saisies par l utilisateur 12

Un exemple(bis) : boucle directe sur les éléments de la liste Permet de définir une liste initialement vide. Une liste est directement «itérable», il n est pas nécessaire de passer par un indice (un peu comme le foreach de certains langages de prog.). 13

Un cas particulier de liste CHAÎNE DE CARACTÈRES 14

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" Guillemets pour délimiter une chaîne print(s1) #longueur long = len(s1) Mécanisme identique aux print(long) tuples et listes #accès indicé s2 = s1[:7] print(s2) ERREUR. Une chaîne n est pas modifiable. Il faut mettre #non modifiable le résultat d une manipulation dans une autre chaîne. #s1[0] = "B" #méthodes associées S = s1.upper() print(s) #recherche d'une sous-chaîne id = S.find("JO") Des méthodes spécifiques permettent print(id) 3 (1 ère occurrence si plusieurs) de manipuler les chaînes. Cf. #nb d'occurences https://docs.python.org/3/library/stdt nb = S.count("ON") ypes.html#text-sequence-type-str print(nb) 2 #remplacement de «O» par «A» SA = S.replace("O","A") print(sa) 15

Transformation explicite en liste (pour traitements) Une chaîne peut être transformée en liste pour réaliser des traitements sophistiqués. L outil est très souple. #transf. en liste liste = list(s) print(liste) #découpage par séparateur decoupe = S.split(" ") print(decoupe) [ B, O, N, J, O, U, R,, L, E,, M, O, N, D, E ] Toutes les opérations sur les listes sont possibles par la suite. [ BONJOUR, LE, MONDE ] Espace est utilisé comme séparateur ici, mais ça peut être tout autre carac., y compris un caractère spécial (ex. \t pour tabulation) #former une chaîne à #partir d une liste SB = "-".join(decoupe) print(sb) "BONJOUR-LE-MONDE" Les mots de la liste ont été fusionnés avec le séparateur "-". Tout séparateur est possible, y compris la chaîne vide. 16

Un exemple 17

Liste avec accès par clé LES DICTIONNAIRES 18

Dictionnaire - Le type dict #définition d'un dictionnaire d1 = {'Pierre':17, 'Paul':15,'Jacques':16} print(d1) #ou print(d1.items()) #nombre d'élements print(len(d1)) Noter le rôle de { }, de «:» et «,» 3 éléments Dictionnaire : collection non-ordonnée (non indicée) d objets (simples ou évolués) s appuyant sur le mécanisme associatif «clé valeur». #liste des clés print(d1.keys()) #liste des valeurs print(d1.values()) #accès à une valeur par clé print(d1['paul']) 15 #ou print(d1.get('paul')) 15 #si clé n'existe pas print(d1['pipa']) ERREUR [ Paul, Jacques, Pierre ] [15, 16, 17] Remarques : 1) d1.clear() vide le dictionnaire (2) d1 est une référence, d1.copy() permet de copier le contenu. 19

Dictionnaire Modifications, ajouts et suppressions #modification d1['jacques'] = 18 print(d1) #ajouter un élément d1['henri'] = 22 print(d1) #ajout d'un bloc d éléments d1.update({'monica':36,'bill':49}) print(d1) {'Pierre':17, 'Paul':15,'Jacques':16} {'Pierre':17, 'Paul':15,'Jacques':18} Ajout par définition d une nouvelle paire «clé valeur». N.B. : Si Henri existe déjà, son ancienne valeur sera écrasée. {'Pierre':17, 'Paul':15,'Jacques':18, Henri :22} {'Pierre':17, 'Paul':15,'Jacques':18, Henri :22, Monica :36, Bill : 49} #détecter présence clé test = 'Pierre' in d1 print(test) True #suppression par clé del d1['monica'] print(d1) {'Pierre':17, 'Paul':15,'Jacques':18, Henri :22, Bill : 49} 20

Plus loin avec les clés Les clés ne sont pas forcément des chaînes de caractères. L outil est très souple mais, attention, autant de liberté peut être aussi préjudiciable. Il faut être très rigoureux. #autre type de clé d2 = {('Pierre',56):['Directeur',1253,True],('Paul',55):['Employé',100,False]} print(d2.keys()) print(d2.values()) Dans cet exemple : clé est un tuple ; valeur est une liste. D autres types sont possibles (ex. instances de classes à voir plus loin). 21

Exemple Accès indicé malaisé (très), on a intérêt à passer par un itérateur pour passer en revue le dictionnaire. Exemple : Kate 15.0 Pipa 23.5 William 10.7 49.2 22

Références De la documentation à profusion (n achetez pas des livres sur Python) Site du cours http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_python.html Site de Python Welcome to Python - https://www.python.org/ Python 3.4.3 documentation - https://docs.python.org/3/index.html Portail Python Page Python de Developpez.com Quelques cours en ligne P. Fuchs, P. Poulain, «Cours de Python» sur Developpez.com G. Swinnen, «Apprendre à programmer avec Python» sur Developpez.com «Python», Cours interactif sur Codecademy POLLS (KDnuggets) Data Mining / Analytics Tools Used Python, 4 ème en 2015 What languages you used for data mining / data science? Python, 3 ème en 2014 (derrière R et SAS) 23