CSI2520, Hiver 2007 Python Un langage de programmation par scripting et plus…
Paradigme de programmation par scripting Langage de plus haut niveau –Syntaxe simple Souvent interprété Axé sur le développement rapide Typage dynamique –Variable non-déclarée –Erreur de typage détecté à lexécution Riche en modules réutilisable CSI2520, Hiver 2007
Python Créé en 1991, en logiciel libre depuis 2000 Cest avant tout un langage multi- paradigme Programmation très productive (3x à 10x) –Facile à apprendre –Prototypage rapide Encourage la réutilisation et le logiciel libre –Beaucoup de modules disponibles CSI2520, Hiver 2007
Interpréteur Python CSI2520, Hiver 2007 >>> print "Hello world ! " Hello world ! >>> >>> >>>
Typage CSI2520, Hiver 2007 >>> y = 3.14 >>> y >>> a = "bonjour" >>> a 'bonjour' >>> b = 'salut' >>> b 'salut' >>> c = '''girafe''' >>> c 'girafe >>> x = 45 >>> x >>> y = 2.5 >>> x + y 47.5 >>> (x * 10) / y >>> chaine = "Salut" >>> chaine 'Salut' >>> chaine + " Python" 'Salut Python' >>> chaine * 3 'SalutSalutSalut' >>> x = 2 >>> type(x) >>> x = 2.0 >>> type(x) >>> x = '2' >>> type(x)
Ecriture formattée CSI2520, Hiver 2007 >>> x = 32 >>> nom = 'John' >>> print nom, ' a ', x, ' ans' John a 32 ans >>> nbG = 4500 >>> nbC = 2575 >>> percGC = propGC * 100 >>> print "Ce génome contient %i G et %i C, un %GC de %.2f" % (nbG,nbC,percGC),"%" Ce génome contient 4500 G et 2575 C, un %GC de %
Listes CSI2520, Hiver 2007 >>> animaux = ['girafe','tigre','singe','souris'] >>> animaux[1] 'tigre >>> animaux[-2] 'singe' >>> tailles = [5, 2.5, 1.75, 0.15] >>> mixte = ['girafe', 5, 'souris', 0.15] >>> animaux ['girafe', 'tigre', 'singe', 'souris'] >>> tailles [5, 2.5, 1.75, 0.15] >>> mixte ['girafe', 5, 'souris', 0.15] >>> range(0,1000,200) [0, 200, 400, 600, 800] >>> animaux[0:2] ['girafe', 'tigre'] >>> animaux[0:3] ['girafe', 'tigre', 'singe'] >>> animaux[0:] ['girafe', 'tigre', 'singe', 'souris'] >>> animaux[:] ['girafe', 'tigre', 'singe', 'souris'] >>> animaux[1:] ['tigre', 'singe', 'souris'] >>> animaux[1:-1] ['tigre', 'singe'] >>> ani1 = ['girafe','tigre'] >>> ani2 = ['singe','souris'] >>> ani1 + ani2 ['girafe', 'tigre', 'singe', 'souris'] >>> ani1 * 3 ['girafe', 'tigre', 'girafe', 'tigre', 'girafe', 'tigre']
Opérations sur les listes CSI2520, Hiver 2007 >>> a = [66.25, 333, 333, 1, ] >>> print a.count(333), a.count(66.25), a.count('x') >>> a.insert(2, -1) >>> a.append(333) >>> a [66.25, 333, -1, 333, 1, , 333] >>> a.index(333) 1 >>> a.remove(333) >>> a [66.25, -1, 333, 1, , 333] >>> a.reverse() >>> a [333, , 1, 333, -1, 66.25] >>> a.sort() >>> a [-1, 1, 66.25, 333, 333, ]
Génération de listes CSI2520, Hiver 2007 >>> squares = [x**2 for x in range(10)] >>> squares [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] >>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y] [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)] >>> vec = [[1,2,3], [4,5,6], [7,8,9]] >>> [num for elem in vec for num in elem] [1, 2, 3, 4, 5, 6, 7, 8, 9]
Dictionnaire CSI2520, Hiver 2007 >>> tel = {'jack': 4098, 'sape': 4139} >>> tel['guido'] = 4127 >>> tel {'sape': 4139, 'guido': 4127, 'jack': 4098} >>> tel['jack'] 4098 >>> del tel['sape'] >>> tel['irv'] = 4127 >>> tel {'guido': 4127, 'irv': 4127, 'jack': 4098} >>> tel.keys() ['guido', 'irv', 'jack'] >>> 'guido' in tel True
Boucle Lindentation est obligatoire –Lutilisation de 4 espaces est suggérée CSI2520, Hiver 2007 >>> for i in range(4):... print i >>> animaux = ['girafe', 'tigre', 'singe', 'souris'] >>> for i in range(4):... print animaux[i]... girafe tigre singe souris
Test CSI2520, Hiver 2007 >>> if x < 0:... x = 0... print 'Negative changed to zero'... elif x == 0:... print 'Zero'... elif x == 1:... print 'Single'... else:... print 'More'
Modules Un module est un fichier texte contenant des instructions Python Le nom du fichier est le nom du module –Extension.py –Variable système PYTHONPATH CSI2520, Hiver 2007 >>> import fibo >>> fibo.fib(1000)
Définir un module CSI2520, Hiver 2007 def fib(n): # write Fibonacci series up to n a, b = 0, 1 while b < n: print b, a, b = b, a+b def fib2(n): # return Fibonacci series up to n result = [] a, b = 0, 1 while b < n: result.append(b) a, b = b, a+b return result
Fichiers CSI2520, Hiver 2007 >>> f = open(fichier.txt', 'w') >>> f.readline() 'This is the first line of the file.\n' >>> f.readlines() ['This is the first line of the file.\n', 'Second line of the file\n'] >>> for line in f: print line This is the first line of the file. Second line of the file
Persistence CSI2520, Hiver 2007 pickle.dump(x, f) x = pickle.load(f) Nimporte quel objet peut être sauvegardé
Programmation fonctionnelle CSI2520, Hiver 2007 >>> def f(x): return x % 2 != 0 and x % 3 != 0... >>> filter(f, range(2, 25)) [5, 7, 11, 13, 17, 19, 23] >>> def cube(x): return x*x*x... >>> map(cube, range(1, 11)) [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000] >>> def add(x,y): return x+y... >>> reduce(add, range(1, 11)) 55
Tour de Hanoi CSI2520, Hiver 2007 def hanoi(n,de,a,par): if n>0: hanoi(n-1,de,par,a) print str(de),"-->",str(a) hanoi(n-1,par,a,de) n=input("donner le nombre de disques : ") hanoi(n,1,2,3)