220 likes | 400 Views
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é à l’exécution
E N D
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é à l’exécution • Riche en modules réutilisable
Python • Créé en 1991, en logiciel libre depuis 2000 • C’est 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
Interpréteur Python >>> print "Hello world ! " Hello world ! >>> >>> 1 + 1 2 >>>
Typage >>> x = 45 >>> x + 2 47 >>> y = 2.5 >>> x + y 47.5 >>> (x * 10) / y 180.0 >>> chaine = "Salut" >>> chaine 'Salut' >>> chaine + " Python" 'Salut Python' >>> chaine * 3 'SalutSalutSalut' >>> y = 3.14 >>> y 3.1400000000000001 >>> a = "bonjour" >>> a 'bonjour' >>> b = 'salut' >>> b 'salut' >>> c = '''girafe''' >>> c 'girafe‘ >>> x = 2 >>> type(x) <type 'int'> >>> x = 2.0 >>> type(x) <type 'float'> >>> x = '2' >>> type(x) <type 'str'>
Ecriture formattée >>> 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 47.80 %
Listes >>> 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'] >>> 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]
Opérations sur les listes >>> a = [66.25, 333, 333, 1, 1234.5] >>> print a.count(333), a.count(66.25), a.count('x') 2 1 0 >>> a.insert(2, -1) >>> a.append(333) >>> a [66.25, 333, -1, 333, 1, 1234.5, 333] >>> a.index(333) 1 >>> a.remove(333) >>> a [66.25, -1, 333, 1, 1234.5, 333] >>> a.reverse() >>> a [333, 1234.5, 1, 333, -1, 66.25] >>> a.sort() >>> a [-1, 1, 66.25, 333, 333, 1234.5]
Génération de listes >>> 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 >>> 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 • L’indentation est obligatoire • L’utilisation de 4 espaces est suggérée >>> animaux = ['girafe', 'tigre', 'singe', 'souris'] >>> for i in range(4): ... print animaux[i] ... girafe tigre singe souris >>> for i in range(4): ... print i ... 0 1 2 3
Test >>> 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 >>> import fibo >>> fibo.fib(1000) 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
Définir un module 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 >>> 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 • N’importe quel objet peut être sauvegardé pickle.dump(x, f) x = pickle.load(f)
Programmation fonctionnelle >>> def f(x): return x % 2 != 0 and x % 3 != 0 ... >>> filter(f, range(2, 25)) [5, 7, 11, 13, 17, 19, 23] >>> def add(x,y): return x+y ... >>> reduce(add, range(1, 11)) 55 >>> def cube(x): return x*x*x ... >>> map(cube, range(1, 11)) [1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
Tour de Hanoi 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)