Example: barber

Introduction à la programmation en langage Python - LRI

Universit Paris-SudM thodologieLicence MPIS2 - Ann e 2015-2016 Introduction la programmation en langage sentationLe langage PythonPython est un langage de programmation (au m me titre que le C, C++, fortran, java ..),d velopp en 1989. Ses principales caract ristiques sont les suivantes : open-source : son utilisation est gratuite et les fichiers sources sont disponibles et modi-fiables ; simple et tr s lisible; dot d unebiblioth que de base tr s fournie; importante quantit debiblioth ques disponibles: pour le calcul scientifique, les statis-tiques, les bases de donn es, la visualisation .. ; grande portabilit : ind pendant vis vis du syst me d exploitation (linux, windows, Ma-cOS) ; orient objet; typage dynamique: le typage (association une variable de son type et allocation zonem moire en cons quence) est fait automatiquement lors de l ex cution du programme, cequi permet une grande flexibilit et rapidit de programmation , mais qui se paye par unesurconsommation de m moire et une perte de performance ; pr sente unsupport pour l int gration d autres faire fonctionner le code source ?

UniversitéParis-Sud Méthodologie LicenceMPI S2-Année2015-2016 Introduction à la programmation en langage Python 1. Présentation LeLangagePython

Information

Domain:

Source:

Link to this page:

Please notify us if you found a problem with this document:

Other abuse

Advertisement

Transcription of Introduction à la programmation en langage Python - LRI

1 Universit Paris-SudM thodologieLicence MPIS2 - Ann e 2015-2016 Introduction la programmation en langage sentationLe langage PythonPython est un langage de programmation (au m me titre que le C, C++, fortran, java ..),d velopp en 1989. Ses principales caract ristiques sont les suivantes : open-source : son utilisation est gratuite et les fichiers sources sont disponibles et modi-fiables ; simple et tr s lisible; dot d unebiblioth que de base tr s fournie; importante quantit debiblioth ques disponibles: pour le calcul scientifique, les statis-tiques, les bases de donn es, la visualisation .. ; grande portabilit : ind pendant vis vis du syst me d exploitation (linux, windows, Ma-cOS) ; orient objet; typage dynamique: le typage (association une variable de son type et allocation zonem moire en cons quence) est fait automatiquement lors de l ex cution du programme, cequi permet une grande flexibilit et rapidit de programmation , mais qui se paye par unesurconsommation de m moire et une perte de performance ; pr sente unsupport pour l int gration d autres faire fonctionner le code source ?

2 Il existe deux techniques principales pour traduire un code source en langage machine : la compilation : une application tierce, appel e compilateur, transforme les lignes de code enun fichier ex cutable en langage machine. A chaque fois que l on apporte une modification auprogramme, il faut recompiler avant de voir le r sultat. l interpr tation : un interpr teur s occupe de traduire ligne par ligne le programme en langagemachine. Ce type de langage offre une plus grande commodit pour le d veloppement, maisles ex cutions sont souvent plus le cas de Python , on peut admettre pour commencer qu il s agit d un langage interpr t ,qui fait appel des modules compil s. Pour les op rations algorithmiques co teuses, le langagePython peut s interfacer des biblioth ques crites en langage de bas niveau comme le langage diff rentes versionsIl existe deux versions de Python : et La version n est pas une simple am liorationde la version Attention, toutes les librairies Python n ont pas effectu la migration de interpr teurDans un terminal, taperpython(interpr teur classique) ouipython(interpr teur plus volu )pour acc der un interpr teur Python .

3 Vous pouvez maintenant taper dans ce terminal des ins-tructions Python qui seront ex cut de Python et librairies web :Django, Zope, Plone,.. bases de donn es :MySQL, Oracle,.. r seaux :TwistedMatrix, PyRO, VTK,.. repr sentation graphique :matplotlib, VTK,.. calcul scientifique :numpy, scipy, ..Le mode programmationIl s agit d crire dans un fichier une succession d instructions qui ne seront ffectu es que lorsquevous lancerez l ex cution du programme. Cela permet tout d abord de sauvegarder les commandesqui pourront tre utilis es ult rieurement, et d autre part d organiser un programme, sous-formede fichier principal, modules, fonctions ..Le fichier ex cuter devra avoir l , et devra contenir en premi re ligne le cheminpour acc der au compilateur Python , ainsi que l encodage :#!/usr/bin/env Python # -*- coding: utf-8 -*-Il pourra tre ex cut en lan ant dans un terminal la commandepython environnement de programmation Spyder (sous Anaconda)L environnement Spyder permet de r aliser des programmes informatiques crits avec le lan-gage Python .

4 Il est disponible avec la distribution Anaconda, qui pr sente de nombreux avan-tages, notamment celui d tre simple installer. Son t l chargement se fait l adresse suivante :https fois la distribution Anaconda t l charg e et install e, on peut commencer lancer Spyder entapantSpyderdans un lancement de Spyder, appara t une fen tre partag e en deux zones. La zone en-bas droite,appel e console (shell en anglais), est celle o l on peut travailler de fa on interactive avec l in-terprteur Python . La zone gauche est un diteur de texte, sp cialement con u pour crire desprogrammes dans le langage et op rations de baseLe langage Python est orient objet, c est- -dire qu il permet de cr er des objets, en d finissantdes attributs et des fonctions qui leur sont propres. Cependant, certains objets sont pr -d finisdans le langage . Nous allons voir pr sent les plus (a)les nombres et les bool ens entiers(32 bits)type :int r els(64 bits)type :floatexemples de valeurs :4.

5 Complexestype :complexexemples de valeurs :3+4j 3+4J bool enstype :boolexemples de valeurs :True False(b)op rations de base affectation>>> i = 3 # i vaut 3>>> a, k=True, >>> k=r= >>> x=complex(3,4) affichage>>> i3>>> print(i)3 Op rateurs addition, soustraction, multiplication, division+, -, *, \, \%, Op rateurs puissance, valeur absolue**, pow, abs, \dots Op rateurs de comparaison==, is, !=, is not, >, >=, <, <= Op rateurs logiquesor, and, not Conversion>>> int( )3>>> float(3)3.(c)les cha nes de caract resUne cha ne de caract res (string en anglais) est un objet de la classe (ou de type)str. Unecha ne de caract res peut tre d finie de plusieurs fa ons :>>> "je suis une chaine" je suis une chaine >>> je suis une chaine je suis une chaine 3>>> pour prendre l\ apostrophe pour prendre l apostrophe >>> "pour prendre l apostrophe""pour prendre l apostrophe">>> " " "ecriresurplusieurslignes" " " ecrire\nsur\nplusieurs\nlignes concat nationOn peut mettre plusieurs cha nes de caract res bout bout avec l op rateur binaire deconcat nation, not +.

6 >>> s = i vaut >>> i = 1>>> print( s+i )Traceback (most recent call last):File "<stdin>", line 1, in <module>TypeError: cannot concatenate str and int objects>>> print( s + " %d %s "%(i, "m."))i vaut 1 m.>>> print( s + + str(i))i vaut 1>>> print( *- * 5)*-*-*-*-*- acc s aux caract resLes caract res qui composent une cha ne sont num rot s partir de z ro. On peut y acc derindividuellement en faisant suivre le nom de la cha ne d un entier encadr par une pairede crochets :>>> "bonjour"[3]; "bonjour"[-1] j r >>> "bonjour"[2:]; "bonjour"[:3]; "bonjour"[3:5] njour bon jo >>> "bonjour"[-1::-1]; ruojnob m thodes propres len(s): renvoie la taille d une cha ne, : recherche une sous-cha ne dans la cha ne, : enl ve les espaces de fin, : remplace une cha ne par une autre, ..(d)les listesUne liste consiste en une succession ordonn e d objets, qui ne doivent pas n cessairement tredu m me type. Les termes d une liste sont num rot s partir de 0 (comme pour les cha nesde caract res).

7 Initialisation4>>> []; list();[][]>>> [1,2,3,4,5]; [ point , triangle , quad ];[1, 2, 3, 4, 5][ point , triangle , quad ]>>> [1,4, mesh ,4, triangle ,[ point ,6]];[1, 4, mesh , 4, triangle , [ point , 6]]>>> range(10)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> range(2,10,2)[2, 4, 6, 8] modificationContrairement aux cha nes de caract res, on peut modifier les l ments d une liste :>>> l=[1,2,3,4,5]>>> l[2:]=[2,2,2]>>> l[1, 2, 2, 2, 2] concat nation>>> [0]*7[0, 0, 0, 0, 0, 0, 0]>>> L1, L2 = [1,2,3], [4,5]>>> L1[1, 2, 3]>>> L2[4, 5]>>> L1+L2[1, 2, 3, 4, 5] m thodes propres len(L): renvoie la taille de la liste L, : trie la liste L, : ajoute un l ment la fin de la liste L, : inverse la liste L, : recherche un l ment dans la liste L, : retire un l ment de la liste L, : retire le dernier l ment de la liste L, ..(e)copie d un objet>>> L = [ Dans , Python , tout , est , objet ]>>> T = L>>> T[4] = bon >>> T[ Dans , Python , tout , est , bon ]>>> L[ Dans , Python , tout , est , bon ]>>> L=T[:]>>> L[4]= objet >>> T;L[ Dans , Python , tout , est , bon ]5[ Dans , Python , tout , est , objet ](f)quelques remarques importantes en Python , tout est objet, une cha ne de caract res est immuable, tandis qu une liste est muable, typepermet de conna tre le type d un objet, idpermet de conna tre l adresse d un objet, evalpermet d valuer une cha ne de caract # ceci est un de variablesPython fait la distinction entre minuscules et : donner des noms significatifs aux variables et aux structures de contr le(a)L indentationLes fonctions Python n ont pas debeginouendexplicites, ni d accolades qui pourraientmarquer l o commence et o se termine le code de la fonction.

8 Le seul d limiteur est lesdeux points ( : ) et l indentation du code lui-m me. Les blocs de code (fonctions, instructionsif, boucles for ou while etc) sont d finis par leur indentation. L indentation d marre le bloc etla d sindentation le termine. Il n y a pas d accolades, de crochets ou de mots cl s sp signifie que les espaces blancs sont significatifs et qu ils doivent tre coh rents. Voici unexemple :a = -150if a < 0:print( a est negatif )ligne d en-t tepremi re instruction du bloc..derni re instruction du blocFonctionnement par blocs :Bloc d en-t te :Bloc d en-t te :Bloc d en-t te :Bloc 2 (suite)..Bloc 1 (suite)..6(b)Le test de conditionsLe test de condition se fait sous la forme g n rale suivante :if < test1 > :< blocs d instructions 1>elif < test2 > :< blocs d instructions 2 >else :< blocs d instructions 3 >Un exemple :a = a > 0:print( a est strictement positif )if a >= 10:print ( a est un nombre )else:print ( a est un chiffre )a += 1elif a is not 0:print( a est strictement negatif )else:print( a est nul )Un autre exemple :L = [1, 3, 6, 8]if 9 in L:print 9 est dans la liste L (9)(c)La boucle conditionnelleLa forme g n rale d une boucle conditionnelle estwhile < test1 > :< blocs d instructions 1 >if < test2 > : breakif < test3 > : continueelse :< blocs d instructions 2 >o l on a utilis les m thodes suivantes :break: sort de la boucle sans passer par else,continue: remonte au d but de la boucle,pass: ne fait structure finaleelseest optionnelle.

9 Elle signifie que l instruction est lanc e si et seulementsi la boucle se termine exemples : Boucle infinie :7while 1:pass yest-il premier ?x = y/2while x > 1 :if y%x ==0print (str(y)+ est facteur de +str(x))breakx = x - 1else :print( str(y)+ est premier )(d)La boucle inconditionnelleLa forme g n rale d une boucle inconditionnelle estfor < cible > in < objet > :< blocs d instructions 1 >if < test1 > : breakif < test2 > : continueelse :< blocs d instructions 2 >Quelques exemples :sum = 0for i in [1, 2, 3, 4] :sum += 1prod = 1for p in range(1, 10) :prod *= ps = bonjour for c in s :print c,L = [ x + 10 for x in range(10) ] fonctionsLa structure g n rale de d finition d une fonction est la suivantedef < nom fonction > (arg1, arg2,.. argN):..bloc d < valeur( s ) >Voici quelques exemples :def table7():n=1while n < 11:print n*7n+=18Un fonction qui n a pas dereturnrenvoie par d table(base):n=1while n < 11:print n*basen+=1def table(base, debut=0, fin=11):print ( Fragment de la table de multiplication par +str(base)+ : )n=debutl=[]while n < fin:print n* (n*base)n+=1return lOn peut galement d clarer une fonction sans conna tre ses param tres :>>> def f (*args, **kwargs).

10 Print(args).. print(kwargs)>>> f(1,3, b ,j=1)(1, 3, b ){ j : 1}Il existe une autre fa on de d clarer une fonction de plusieurs param tres :lambda argument 1, .. , argument N : expression utilisant les argumentsExemple :>>> f = lambda x, i : x**i>>> f(2,4) modulesUn module est un fichier comprenant un ensemble de d finitions et d instructions compr hensiblespar Python . Il permet d tendre les fonctionnalit s du langage . Voici tout d abord un exemple demodule permettant l utilisation des nombres de # Module nombres de Fibonaccidef print_fib(n) :" " "ecrit la serie de Fibonacci jusqu a n" " "a, b = 0, 1while b < n:print(b),9a, b = b, a + bprintdef print_fib(n) :" " "retourne la serie de Fibonacci jusqu a n" " "result, a, b = [], 0, 1while b < (b),a, b = b, a + breturn resultUtilisation du module >>> import fibo>>> (1000)1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987>>> (100)[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]L importation de modulesIl existe plusieurs fa ons d importer un module : importfibo importfiboasf fromfiboimportprint_ fib, list_ fib fromfiboimport* (importe tous les noms sauf les variables et les fonctions priv es)Le module mathCe module fournit un ensemble de fonctions math matiques pour les r els :pisqrtcos, sin, tan, acos.