Série 1 Premières manipulations...

Documents pareils
TP 1. Prise en main du langage Python

Initiation à la programmation en Python

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

Présentation du langage et premières fonctions

STAGE IREM 0- Premiers pas en Python

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Le langage C. Séance n 4

1 Année LMD-STSM Algorithmique et Programmation. Série de TD 2

1 Introduction - Qu est-ce que le logiciel R?

L informatique en BCPST

Représentation d un entier en base b

Découverte de Python

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

Python - introduction à la programmation et calcul scientifique

Licence Sciences et Technologies Examen janvier 2010

Bases de programmation. Cours 5. Structurer les données

La Clé informatique. Formation Excel XP Aide-mémoire

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

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

LECON 2 : PROPRIETES DE L'AFFICHAGE Version aout 2011

TD3: tableaux avancées, première classe et chaînes

EXCEL TUTORIEL 2012/2013

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (

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

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Algorithmique et Programmation, IMA

2 Comment fonctionne un ordinateur, dans les grandes lignes

TP1 : Initiation à Java et Eclipse

Cours d algorithmique pour la classe de 2nde

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Quelques éléments de compilation en C et makefiles

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

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Cours 1. I- Généralités sur R II- Les fonctions de R et autres objets III-Les vecteurs

V- Manipulations de nombres en binaire

TP1. Outils Java Eléments de correction

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

TP1 - Prise en main de l environnement Unix.

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

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

Chapitre 4 : Édition de fichiers texte - Vi

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

HMI target Visu / PLC HMI. Pour réaliser une interface homme machine avec PLC control

Avertissement : Nos logiciels évoluent rendant parfois les nouvelles versions incompatibles avec les anciennes.

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

La mémoire. Un ordinateur. L'octet. Le bit

Compléments de documentation Scilab : affichage de texte et formatage de nombres

1 Lecture de fichiers

Trucs et astuces N o 2.1 COMMENT AJUSTER VOTRE TABLETTE PORTE-CLAVIER

Logiciel Libre Cours 3 Fondements: Génie Logiciel

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

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)

Logiciel de Base. I. Représentation des nombres

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

Le chiffre est le signe, le nombre est la valeur.

Rappels d architecture

Bulletins de notes électroniques avec Nota Bene

PAGE 1. L écran du logiciel d Open Office Draw. Barre de menu: Les commandes du logiciel

DM 1 : Montre Autoquartz ETA

Sélection du contrôleur

I00 Éléments d architecture

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

UFR de Mathématiques et Informatique Année 2009/2010. Réseaux Locaux TP 04 : ICMP, ARP, IP

Dans la série. présentés par le site FRAMASOFT

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

GEST_INSTANCES APPLICATION DE GESTION DES INSTANCES ET REUNIONS EN EPLE ETABLISSEMENT PUBLIC LOCAL D ENSEIGNEMENT

Vous allez le voir au cours de ce premier chapitre, 1. Découvrir l ipad

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

Carte encadrement glitter

Initiation à l informatique. Module 7 : Le courrier électronique ( , mail)

TIC. Tout d abord. Objectifs. L information et l ordinateur. TC IUT Montpellier

Système de Gestion Informatisée des. Exploitations Agricoles Irriguées avec Contrôle de l Eau

Puissances d un nombre relatif

Création de Sous-Formulaires

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

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

KM2 W1 EVC1 M3~ Manuel AUTOMSIM API 24V. BP Dcy 1MINI 1MAXI.

Manuel du logiciel PrestaTest.

1 Introduction au codage

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

RECOPLUS LOGICIEL DE GESTION DES RECOMMANDES NOTICE D UTILISATION DE RECOPLUS RESEAU. N de série

Back up Server DOC-OEMSPP-S/6-BUS-FR-17/05/11

Introduction à MATLAB R

Exonet : sauvegarde automatisée d une base de données

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Codage d information. Codage d information : -Définition-

Conférence Web sur demande de TELUS Guide de référence rapide

TP 1 Prise en main de l environnement Unix

IV- Comment fonctionne un ordinateur?

Tutoriel code::blocks

Module : Informatique Générale 1. Les commandes MS-DOS

MANUEL DRIVELINK DRIVELINK

IBM SPSS Modeler Text Analytics Server for Windows. Instructions d installation

Transcription:

Licence pro. GTSBD 2013-2014 Structures de données, langage Python Série 1 Premières manipulations... Une fois activé, l interpréteur Python répète inlassablement le cycle suivant : Python affiche une invite (le signe >>>), l utilisateur (vous!) compose au clavier une expression Python correcte, Python évalue l expression et en affiche la valeur. La plus grande partie de ce TP consiste à taper les expressions proposées ci-après, constater que les valeurs affichées par Python sont bien celles qui étaient attendues, ou bien découvrir quelles sont ces valeurs, en comprendre la raison et, le cas échéant, répondre aux questions posées (signalées par une marque ). Exo 1.1 Valeurs et expressions Lancez Python (sous Linux : ouvrez une console et tapez python ; sous Windows : menu Démarrer > Programmes > Python 2.5 > IDLE (Python GUI)) Python 2.4.1 (#2, Jul 26 2005, 17:08:50) [GCC 3.2.3 20030502 (Red Hat Linux 3.2.3-47)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 2 + 3 5 >>> 2 + 3 * 100 Pourquoi n obtient-on pas 500 Comment faut-il écrire cette expression pour que le résultat soit 500 >>> aaa aaa en( aaa ) 3 Expliquez. en( aaa ) + len( ttttt ) >>> aaa + ttttt Expliquez. >>> aaa + 3 Lisez attentivement le message obtenu. Où se trouve l information la plus utile pour vous >>> type( aaa ) >>> type(3) Connaissez-vous d autres types 1

>>> type(1.5) >>> 1 == 1 >>> 1 == 2 >>> type(1 == 1) Opérations «mixtes» entre nombres : >>> 1 / 3 >>> 1.0 / 3 >>> 1 / 3.0 Cela s appelle la règle «du plus fort» (un nombre flottant est «plus fort» qu un nombre entier) : l entier est automatiquement converti en flottant, le résultat est flottant. Il est souvent impossible de représenter exactement les nombres flottants : >>> 1.0 / 3.0 Cette imperfection touche parfois des nombres qui paraissent exacts («"%.30f" % 0.1» signifie «exprimez avec 30 décimales la valeur de 0.1» ; cela sera expliqué plus loin) : >>> 0.1 >>> "%.30f" % 0.1 (Explication : dans la machine les nombres sont représentés dans le système binaire ; dans ce système, l écriture de 0.1 est 0,0001100110011001100110011001100...) Exo 1.2 Variables On peut associer un nom à une valeur : >>> a = 3 >>> a L interpréteur affiche 3 au lieu de a. On dit que a est une variable ayant la valeur 3. Cette valeur peut changer : >>> a = 2 >>> a >>> a * 5 >>> b = a * 5 >>> b >>> a = 1 >>> b Pourquoi b est-il resté inchangé La valeur d une variable change au cours du temps : 2

>>> combien = 0 >>> combien >>> combien = combien + 1 >>> combien >>> combien = combien + 1 >>> combien Expliquez le fonctionnement de l expression «combien = combien + 1». Un nom de variable n est pas la même chose qu une chaîne de caractères : >>> onze >>> onze >>> onze = 11 >>> onze >>> onze Expliquez. D autres jeux avec des variables : >>> a = 123 >>> type(a) >>> a + a >>> a = 123 >>> type(a) >>> a + a Vous semble-t-il correct de parler du «type de la variable a» Exo 1.3 Sur les chaînes de caractères Avant de faire les exercices suivants, tapez cette formule magique (elle sera expliquée plus tard) : >>> from string import * Calculs avec des chaînes de caractères >>> str = atg >>> str + str + str >>> str * 3 Comparaison de chaînes >>> atgc == atgc >>> atgc == gcta >>> atgc == ATGC 3

Expliquez le résultat ci-dessus. >>> str1 = atgc >>> upper(str1) >>> str2 = atgc ower(str2) >>> str1 == str2 >>> upper(str1) == upper(str2) Quelle est la bonne manière de tester l égalité de deux chaînes Regardez attentivement ceci : >>> str = atgc >>> upper(str) >>> str >>> str = upper(str) >>> str Recherches dans les chaînes (il est conseillé de copier-coller les deux lignes suivantes depuis la version électronique du sujet). >>> seq1 = agcgccttgaattcggcaccaggcaaatctcaaggagaagttccggggagaaggtgaaga >>> seq2 = cggggagtggggagttgagtcgcaagatgagcgagcggatgtccactatgagcgataatz >>> seq = seq1 + seq2 Quelle est la longueur de la chaîne seq : en(seq) Est-ce que seq contient la lettre n >>> n in seq Est-ce que seq contient une base a >>> a in seq Accéder individuellement à un caractère de seq : >>> seq[1] Pourquoi n obtient-on pas a Ecrivez des expressions qui affichent la première et la dernière base de seq >>> seq[...] a >>> seq[...] z D autres manières d obtenir le dernier caractère de seq : >>> seq[len(seq) - 1] z >>> seq[-1] z 4

Comment afficher le premier triplet de caractères de seq >>> seq[0] + seq[1] + seq[2] En Python il y a un moyen d obtenir des «tranches» d une chaîne : >>> seq[0:3] >>> seq[3:6] Combien d occurrences de chaque caractère a, c, g, t contient la séquence donnée >>> count(seq, a ) >>> count(seq, c ) >>> count(seq, g ) >>> count(seq, t ) Calculer le pourcentage de chaque caractère a, c, g, t dans la séquence. Exemple pour a : ong = len(seq) >>> nb_a = count(seq, a ) >>> (nb_a / long) * 100 0 Que s est-il passé Comment 35 sur 120 peuvent donner 0% Corrigez cela. Une autre ( ) manière de corriger ce problème : >>> float(nb_a) / long * 100 Recherchons un motif spécifique dans une séquence (copiez-collez la ligne suivante ; le signe """ sera expliqué plus loin) : >>> dna = """tgaattctatgaatggactgtccccaaagaagtaggacccactaatgcagatcctgga tccctagctaagatgtattattctgctgtgaattcgatcccactaaagat""" >>> EcoRI = GAATTC >>> BamHI = GGATCC (Notez que dna contient deux occurrences de EcoRI et une de BamHI : tgaattctatgaatggactgtccccaaa gaagtaggacccactaatgcagatcctggatccctagctaagatgtattattctgctgtgaattcgatcccactaaagat) >>> count(dna, EcoRI) 0 Que se passe-t-il >>> EcoRI = lower(ecori) >>> count(dna, EcoRI) 2 >>> find(dna, EcoRI) 1 >>> find(dna, EcoRI, 2) 88 >>> find(dna, EcoRI, 89) -1 Expliquez. >>> BamHI = lower(bamhi) >>> count(dna, BamHI) 0 5

Que se passe-t-il Affichons dna : >>> dna tgaattctatgaatggactgtccccaaagaagtaggacccactaatgcagatcctgga\ntccctagctaagatgtattatt ctgctgtgaattcgatcccactaaagat D où sort ce caractère \n Supprimons-le : >>> dna = replace(dna, \n, ) >>> dna tgaattctatgaatggactgtccccaaagaagtaggacccactaatgcagatcctggatccctagctaagatgtattatt ctgctgtgaattcgatcccactaaagat >>> count(dna, BamHI) 1 Exo 1.4 Plus sur l expression et l affichage des chaînes >>> s = Bonjour >>> s >>> s = J ai dit Bonjour Que se passe-t-il >>> s = "J ai dit Bonjour" >>> s >>> s = "J ai dit "Bonjour"" Que se passe-t-il >>> s = "J ai dit \"Bonjour\"" Comment indiquer une chaîne sur plusieurs lignes >>> s = "Ceci est le debut Que se passe-t-il >>> s = """Ceci est le debut... d un texte sur deux lignes""" >>> s Exo 1.5 Lectures et écritures au clavier Utilisation de print pour des affichages plus sophistiqués : >>> nbr = 120 >>> pu = 14.9 >>> print "quantite:", nbr, "- prix unite:", pu, "- total:", nbr * pu Autre méthode : construire la chaîne à afficher avec l opérateur % : 6

>>> s = "quantite: %d - prix unite: %f - total: %f" % (nbr, pu, nbr * pu) Bien sûr, si s ne sert qu à cela on peut s en passer : >>> print "quantite: %d - prix unite: %f - total: %f" % (nbr, pu, nbr * pu) Avec ce procédé, on peu jouer plus fin : >>> s = "quantite: %d - prix unite: %6.2f - total: %.2f" % (nbr, pu, nbr * pu) Lire le prix hors taxes au clavier (on dit «lire» en adoptant le point de vue du programme, c.-à-d. de la machine. Du point de vue de l utilisateur cela va correspondre à une «écriture», on dit aussi «saisie» au clavier) : >>> pht = raw_input("prix hors taxes ") prix hors taxes 120 >>> print pht 120 >>> pttc = pht * 1.196 Que se passe-t-il >>> type(pht) Pour avoir un nombre : >>> pht = raw_input("prix hors taxes ") prix hors taxes 120 >>> pht = float(pht) >>> pttc = pht * 1.196 >>> print "prix ttc:", pttc Exo 1.6 Et la programmation, dans tout ça Comment transformer les quatre commandes précédentes en un «programme» prêt à l emploi, que l on pourra utiliser chaque fois que nécessaire Avec un éditeur de textes quelconque, créez un fichier nommé prixttc.py et saisissez-y le texte pht = raw_input("prix hors taxes ") pht = float(pht) pttc = pht * 1.196 print "prix ttc:", pttc Sauvez ce fichier, appelé le module prixttc. Si vous l aviez quitté, relancez Python et tapez >>> import prixttc 7

Exo 1.7 Listes = [ nord, sud, est, ouest, haut, bas ] en(l) [1] [0] [len(l)] [len(l) - 1] [-1] [2:4] [2:] [:4] [:] Est-ce que l est la même chose que l[:] Expérience : >>> s = l[:] == s is s Donc l et s sont égales, mais ne sont pas la même liste ; autrement dit, l opération l[:] crée un clone de la liste l, distinct et séparé de celle-ci. Cela est bon à savoir quand on veut garder une copie de l état d une liste qu on s apprête à modifier : >> l = [ nord, sud, est, ouest, haut, bas ] >>> s = l [2] = --- >>> s >>> s = l[:] [3] = --- >>> s Subtile : l[i] désigne un élément de la liste l, tandis que l[i:j ] désigne toujours une sous-liste. Comparez les deux résultats suivants : 8

= [ nord, sud, est, ouest, haut, bas ] [2] = [10, 20, 30] en(l) = [ nord, sud, est, ouest, haut, bas ] [2:4] = [10, 20, 30] [1:1] = [40, 50, 60] [1:2] = 0 Cette opération peut servir aussi pour faire des insertions et des suppressions dans une liste : [5:5] = [ petit, moyen, gros ] [2:4] = [] Exo 1.8 Méthodes des listes En complément des opérations précédentes, voici quelques unes des principales méthodes 1 des listes. Inventez un exemple pour illustrer chacune de ces méthodes et assurez-vous que vous en avez bien compris le fonctionnement : insert(i, x) Insère un élément à une position donnée. L argument i est l indice de l élément devant lequel il faut insérer x, donc a.insert(0, x) insère au début de la liste, et a.insert(len(a), x) insère à la fin (équivalent à a.append(x)). append(x) Equivalent à a.insert(len(a), x). extend(l) Rallonge la liste en ajoutant à la fin tous les éléments de la liste donnée (équivaut à a[len(a):]=l). remove(x) Enlève le premier élément de la liste dont la valeur est x. Il y a erreur si cet élément n existe pas. pop(i), pop() Enlève l élément présent à la position i dans la liste, et le renvoie. Si aucun indice n est spécifié, a.pop() renvoie le dernier élément de la liste, qui est aussi supprimé de la liste. index(x) Retourne l indice dans la liste du premier élément dont la valeur est x. Il y a erreur si cet élément n existe pas. count(x) Renvoie le nombre de fois que x apparaît dans la liste. sort() Trie les éléments à l intérieur de la liste. reverse() Renverse l ordre des éléments à l intérieur de la liste. 1. La notion de méthode sera expliquée à l occasion de la programmation orientée objets. Pour le moment nous nous contenterons de dire qu une méthode de liste m est comme une fonction prenant une liste l pour premier argument, mais dont les appels ne prennent pas la forme usuelle «m(l, autres arguments)» mais plutôt celle-ci «l.m(autres arguments)» 9

Exo 1.9 Consultation de la documentation A partir de maintenant il est convenu que la résolution d un exercice peut nécessiter l emploi de fonctions expliquées dans la documentation de Python (http://docs.python.org/2.7/). Le manuel le plus utile est Python Library Reference (http://docs.python.org/2.7/library/) et notamment ses parties 2. Built-in Functions et 5. Built-in Types. Exercice. Examinez les méthodes de la sous-section 5.6.1. String Methods et, pour chacune, inventez un exemple qui en illustre le fonctionnement (ignorez les méthodes decode et encode). Exo 1.10 Autres exercices A. En utilisant les opérations examinées dans les sections précédentes, produisez la séquence complémentaire (séquence obtenue par les remplacements a t, c g) de la séquence dna définie par : >>> dna = """tgaattctatgaatggactgtccccaaagaagtaggacccactaatgcagatcctgga tccctagctaagatgtattattctgctgtgaattcgatcccactaaagat""" B. Etant donnée une séquence comme celle de l exercice précédent, écrivez les instructions qui déterminent si elle constitue un palindrome, c est-à-dire une séquence qui se lit de la même manière de la gauche vers la droite et de la droite vers la gauche. Tuyau. Il ne semble pas y avoir de fonction pour renverser une chaîne de caractères ; en revanche, une telle fonction existe pour les listes. Or, la fonction list transforme une chaîne de caractères en une liste... C. A l aide d un éditeur de textes (nedit, vi, etc.) composez avec les instructions précédentes un module, nommé palin.py, qu on pourra utiliser chaque fois qu on souhaitera savoir si une chaîne est un palindrome. La chaîne sera lue par une instruction raw_input(). Exemple d utilisation de ce module : $ python palin.py chaine tulastropecrasecesarceportsalut True $ D. Améliorez le module précédent de sorte que la chaîne lue puisse comporter des blancs (et, ensuite : des ponctuations, puis des caractères accentués, ou majuscules, etc.), qui seront ignorés. Exemple : $ python palin.py chaine Tu l as trop écrasé, César, ce port-salut! True $ E. Faut-il changer quelque chose pour utiliser le module palin.py pour examiner une chaîne déjà écrite dans un fichier (réponse : non) Avec un éditeur de textes, saisissez une chaîne dans un fichier nommé, par exemple, donnees.txt. Ensuite lancez python de la manière suivante : $ python palin.py < donnees.txt chaine False $ (si le contenu de donnees.txt est un palindrome, on obtiendra True au lieu de False). L affichage de la question «chaine» est-il utile dans ce cas 10