File: resume_utile.tex, line 25
import sys print (sys.version)
File: resume_utile.tex, line 43
def fonction () : """fonction de démonstration""" return 0 help (fonction) # affiche fonction de # démonstration
File: resume_utile.tex, line 66
va = <valeur>
File: resume_utile.tex, line 83
t = () # tuple vide t = (2, "e") # tuple de deux éléments print (t[0]) # affiche le premier élément
File: resume_utile.tex, line 108
t [i:j] # correspond à un sous-ensemble allant des indices i à j exclu t [:j] # = t[0:j] t [i:] # = t [i: len (t)]
File: resume_utile.tex, line 116
st = "langage python" st = 'langage python' # idem st = 'un guillement "' # chaîne contenant un guillement st = "un guillement \"" # chaîne contenant un guillement, il faut ajouter \ # pour ne pas confondre avec l'autre guillement st = st.upper () # mise en lettres majuscules i = st.find ("PYTHON") # on cherche "PYTHON" dans st print (i) # affiche 8 Version 3.x, écrire print (i), # pour la version 2.x, écrire print i print (st.count ("PYTHON")) # affiche 1 Version 3.x : idem print (...) print (st.count ("PYTHON", 9)) # affiche 0 Version 3.x : idem print (...)
File: resume_utile.tex, line 189
x = 0.123456789 print ("%1.2f" % x) # donne 0.12 s = "%2.2e %s" % (3.14159, "est une approximation de pi") print (s) # Version 2.x : print s
File: resume_utile.tex, line 203
a = [1,2] b = a
File: resume_utile.tex, line 210
a = [1,2] import copy b = copy.copy (a)
File: resume_utile.tex, line 218
a = [1,2] import copy b = copy.deepcopy (a)
File: resume_utile.tex, line 231
x = [4,5] # création d'une liste composée de deux entiers x = ["un",1,"deux",2] # création d'une liste composée deux chaînes de caractères # et de deux entiers, l'ordre d'écriture est important x = [3,] # création d'une liste d'un élément, sans la virgule, # le résultat reste une liste x = [ ] # crée une liste vide x = list () # crée une liste vide
File: resume_utile.tex, line 368
x = range(0,5) # liste des entiers de 0 à 5 exclu # Version 3.x : range retourne un itérateur, il faut écrire # x = list(range(0,5)) y = [ i for i in x if i % 2 == 0] # sélection des éléments pairs print (y) # affiche [0,2,4] Version 2.x : écrire print y z = [ i+j for i in x for j in x] # construit tous les nombres i+j possibles print (z) # affiche [0, 1, 2, 3, 4, 1, 2, 3, 4, 5, 2, 3, # 4, 5, 6, 3, 4, 5, 6, 7, 4, 5, 6, 7, 8]
File: resume_utile.tex, line 385
x = { "cle1":"valeur1", "cle2":"valeur2" } print (x ["cle1"]) # affiche valeur1 Version 2.x : écrire print ... x [(0,1)] = "clé tuple" # ajoute une nouvelle valeur dont la clé est (0,1) # les parenthèses sont superflues y = { } # crée un dictionnaire vide z = dict () # crée aussi un dictionnaire vide
File: resume_utile.tex, line 490
import numpy a = numpy.array ( [0,1] )
File: resume_utile.tex, line 503
if x < 5 : x = x*2 ...
File: resume_utile.tex, line 511
if x < 5 : x = x*2 ... else : x = x*3 ...
File: resume_utile.tex, line 522
if x < 5 : x=x*2 else : x=x*3
File: resume_utile.tex, line 529
if x < 5 : x = x*2 elif x > 5 : x = x*3 else : x = x*6
File: resume_utile.tex, line 537
if 5 < x and x < 10 : # peut être écrit : if 5 < x < 10 : ...
File: resume_utile.tex, line 546
while condition : # lignes décalées # contenu de la boucle
File: resume_utile.tex, line 554
for i in range(0,n) : # parcourt tous les entiers de 0 à n-1 inclus for i in xrange(0,n) : # même chose mais en plus rapide # Version 3.x : la fonction xrange n'existe plus, # et range équivaut à xrange for i in range(n,0,-1) : # parcourt tous les entiers de n à 1 inclus # dans le sens décroissant for i in range(2,1000,3) : # parcourt tous les entiers de 2 à 1000 de 3 en 3 # (2,5,8,...) for e in li : # parcourt tous les éléments de la liste li for cle,valeur in di.items () : # parcourt tous les éléments du dictionnaire di
File: resume_utile.tex, line 573
l = [ 4, 5, 6 ] s = 0 for i in range(0,len(l)) : s += l[i]
File: resume_utile.tex, line 581
l = [ 4, 5, 6 ] s = 0 for i,x in enumerate(l) : s += x
File: resume_utile.tex, line 591
l = [ 4, 5, 6 ] g = [ 3,10,11 ] s = 0 for i in range(0,len(l)) : s += l[i] + g[i]
File: resume_utile.tex, line 600
l = [ 4, 5, 6 ] g = [ 3,10,11 ] s = 0 for x,y in zip(l,g) : s += x + y
File: resume_utile.tex, line 614
def fonction (x) : return x % 2 li = [ 3,4,5] li2 = map (fonction, li) print (list(li2)) # affiche [ 1, 0, 1 ]
File: resume_utile.tex, line 623
def fonction (x) : if x % 2 == 0 : yield x li = [ 3,4,5] li2 = map (fonction, li) print (list(li2)) # affiche [ 4 ]
File: resume_utile.tex, line 636
with random_matrix(1000,1000) as mat : # appelle mat.__enter__() ... # appelle mat.__exit__()
File: resume_utile.tex, line 652
def exemple_fonction (p1, p2, p3) : # code de la fonction return r1, r2 a,b = exemple_fonction (1,2,3) # exemple d'appel de la fonction
File: resume_utile.tex, line 662
def exemple_fonction (p1, p2 = 4, p3 = 7) : # code de la fonction return r1, r2 a,b = exemple_fonction (1) # = exemple_fonction (1,4,7) a,b = exemple_fonction (1,2,3) # = exemple_fonction (1,2,3) a,b = exemple_fonction (1,2) # = exemple_fonction (1,2,7) a,b = exemple_fonction (1,p3 = 2) # = exemple_fonction (1,4,2)
File: resume_utile.tex, line 675
def exemple_fonction (p1, p2 = 4, p3) : # code de la fonction return r1, r2 # affiche le message d'erreur : SyntaxError: non-default argument follows default argument
File: resume_utile.tex, line 684
def exemple_fonction (p1) : p1 = 3 a = 1 exemple_fonction (a) print (a) # affiche 1
File: resume_utile.tex, line 694
def exemple_fonction (p1) : p1[0] = 3 a = [1] exemple_fonction (a) print (a) # affiche [3] Version 2.x : print ...
File: resume_utile.tex, line 707
def fonction (x) : return x % 2 li = [ 3,4,5] li2 = map (fonction, li) print (list(li2)) # affiche [ 1, 0, 1 ]
File: resume_utile.tex, line 716
li = [ 3,4,5] li2 = map (lambda x : x%2, li) print (list(li2)) # affiche [ 1, 0, 1 ]
File: resume_utile.tex, line 724
li = [ 3,4,5] k = 2 li2 = map (lambda x,y=k : x%k, li) print (list(li2)) # affiche [ 1, 0, 1 ]
File: resume_utile.tex, line 736
def iterate_double_on_list(l) : for x in l : yield x*2 print (iterate_double_on_list( [4,5,6])) # affiche <generator object iterate_double_on_list at 0x025196C0>
File: resume_utile.tex, line 746
for x in iterate_double_on_list( [4,5,6]) : print (x)
File: resume_utile.tex, line 762
class ma_classe : def __init__ (self, att1, att2, att3) : self.att1 = att1 self.att2 = att2 self.att3 = att3 self.att4 = att1 * att2 * att3 a = ma_classe (-1,1,2) # déclare une variable de type ma_classe print (a.att1) # affiche -1 print (a.att2) # affiche 3 Version 2.x : print ... print (a.att3) # affiche 4 print (a.att4) # affiche -12
File: resume_utile.tex, line 779
class ma_classe : def __init__ (self, att1, att2, att3) : self.att1 = att1 self.att2 = att2 self.att3 = att3 self.att4 = self.calcule4 () def calcule4 (self) : return self.att1 * self.att2 * self.att3 a = ma_classe (-1,1,2) # déclare une variable de type ma_classe print (a.att1) # affiche -1 print (a.att2) # affiche 3 print (a.att3) # affiche 4 print (a.att4) # affiche -12
File: resume_utile.tex, line 804
class ma_classe : def __init__ (self, att1, att2, att3) : self.att1 = att1 # attribut self.att2 = att2 # attribut self.att3 = att3 # attribut self.att4 = att1 * att2 * att3 # attribut def calcule (self,x) : # méthode return self.att1 * self.att2 * self.att3 * x a = ma_classe (1,2,3) print (a.att1) # affiche 1 print (a.__dict__ ["att1"]) # affiche aussi 1, ligne équivalente à la précédente print (a.calcule(2)) # appel d'une méthode
File: resume_utile.tex, line 826
class ma_classe : def __init__ (self, att1, att2, att3) : # ... @staticmethod def calcule_static (x,y) : # méthode statique return x * y print (ma_classe.calcule_static(2,3)) # appel d'une méthode statique
File: resume_utile.tex, line 844
class ma_classe : def __init__ (self, att1, att2, att3) : self.att1 = att1 self.att2 = att2 self.att3 = att3 self.att4 = att1 * att2 * att3 def __add__ (self, a) : return ma_classe (self.att1 + a.att1, self.att2 + a.att2, \ self.att3 + a.att3, self.att4 + a.att4) a = ma_classe (1,2,3) b = ma_classe (4,5,6) c = a + b # n'a de sens que si l'opérateur __add__ a été redéfini
File: resume_utile.tex, line 868
class ma_classe : def __init__ (self, att1, att2, att3) : self.att1 = att1 self.att2 = att2 self.att3 = att3 self.att4 = att1 * att2 * att3 a = ma_classe (1,2,3) b = a b.att1 = -16 print (a.att1) # affiche -16 print (b.att1) # affiche -16
File: resume_utile.tex, line 885
class ma_classe : def __init__ (self, att1, att2, att3) : self.att1 = att1 self.att2 = att2 self.att3 = att3 self.att4 = att1 * att2 * att3 a = ma_classe (1,2,3) import copy b = copy.copy (a) b.att1 = -16 print (a.att1) # affiche 1 print (b.att1) # affiche -16
File: resume_utile.tex, line 910
class ma_classe : def __init__ (self, att1, att2, att3) : self.att1 = att1 self.att2 = att2 self.att3 = att3 self.att4 = att1 * att2 * att3 class ma_classe2 (ma_classe) : # héritage simple pass # pour dire que la classe est vide
File: resume_utile.tex, line 928
class ma_classe : def __init__ (self, att1) : self.att1 = att1 self.att2 = self.calcul () def calcul (self) : return self.att1 ** 2 class ma_classe2 (ma_classe) : def calcul (self) : # dans cette méthode, on change le comportement # de la méthode calcul tout en se servant de celui # de la classe mère return ma_classe.calcul (self) * self.att1 a = ma_classe (2) b = ma_classe2 (2) print (a.att2) # affiche 4 = 2 * 2 print (b.att2) # affiche 8 = (2*2) * 2
File: resume_utile.tex, line 955
def makebold(fn): def wrapped(): return "<b>" + fn() + "</b>" return wrapped def makeitalic(fn): def wrapped(): return "<i>" + fn() + "</i>" return wrapped @makebold @makeitalic def hello(): return "hello world" print (hello()) ## returns <b><i>hello world</i></b>
File: resume_utile.tex, line 976
class C(object): def __init__ (self) : self._p = 1 @property def p(self): return self._p @p.setter def p(self, val): self._p = val * 2 obj = C() print (obj.p) # utilise p_get, affiche 1 obj.p = 5 # utilise p_set print (obj.p) # utilise p_get affiche 10
File: resume_utile.tex, line 1003
f = open ("nom-fichier", "w") # ouverture en mode écriture "w" ou écriture ajout "a" f.write ( s ) # écriture de la chaîne de caractères s f.write ( s2 ) # écriture de la chaîne de caractères s2 ... f.close () # fermeture
File: resume_utile.tex, line 1022
with open ("nom-fichier", "w") as f : f.write ( s ) f.write ( s2 )
File: resume_utile.tex, line 1029
with open ("nom-fichier", "w", encoding = "utf8") as f : f.write ( s ) f.write ( s2 )
File: resume_utile.tex, line 1039
f = open ("essai.txt", "r") # ouverture du fichier en mode lecture l = f.readlines () # lecture de toutes les lignes, # elles sont placées dans une liste f.close () # fermeture du fichier for s in l : print (s) # on affiche les lignes à l'écran
File: resume_utile.tex, line 1053
f = open ("essai.txt", "r") # ouverture du fichier en mode lecture l = f.readlines () # lecture de toutes les lignes, # elles sont placées dans une liste placées dans une liste f.close () # fermeture du fichier l_net = [] # contiendra la liste nettoyée des lignes du fichier for s in l : s2 = s.replace ("\n", "") # on supprime le code de fin de ligne \n s2 = s2.replace ("\r", "") # on supprime le code de fin de ligne \r # (Windows uniquement) s2 = s2.strip("\r\n") # cette ligne est équivalente aux deux précédentes l_net.append (s2) # on ajoute le résultat à la liste nettoyée
File: resume_utile.tex, line 1072
nom ; prénom ; livre Hugo ; Victor ; Les misérables Kessel ; Joseph ; Le lion Woolf ; Virginia ; Mrs Dalloway Calvino ; Italo ; Le baron perché
File: resume_utile.tex, line 1082
f = open ("essai.txt", "r") # ouverture du fichier en mode lecture l = f.readlines () # lecture de toutes les lignes, placées dans une liste f.close () # fermeture du fichier for s in l : s2 = s.replace ("\n", "") # on supprime le code de fin de ligne \n s2 = s2.replace ("\r", "") # on supprime le code de fin de ligne \r (Windows uniquement) case = s2.split (";") if len (case) >= 3 : print (case [1], " ", case [0], " a écrit ", case [2]) # Version 2.x : print ...
File: resume_utile.tex, line 1102
# définition du module geometrie.py def carre (x) : return x ** 2 class point : def __init__ (self,x,y) : self.x, self.y = x,y def norme (self) : return (self.x ** 2 + self.y ** 2) ** 0.5
File: resume_utile.tex, line 1120
import geometrie print (geometrie.carre (1.5)) p = geometrie.point (1,2)
File: resume_utile.tex, line 1127
import geometrie as GEO # on donne un pseudonyme au module geometrie print (GEO.carre (1.5)) p = GEO.point (1,2)
File: resume_utile.tex, line 1134
from geometrie import * print (carre (1.5)) p = point (1,2)
File: resume_utile.tex, line 1144
if __name__ == "__main__" : # quelques instructions ici
File: resume_utile.tex, line 1160
def inverse (x): y = 1.0 / x return y b = inverse (0) print (b)
File: resume_utile.tex, line 1170
Traceback (most recent call last): File "cours.py", line 2, in ? y = 1.0 / x ZeroDivisionError: float division
File: resume_utile.tex, line 1179
def inverse (x): y = 1.0 / x return y try : b = inverse (0) # déclenche une exception print (b) except : print ("le programme a déclenché une erreur")
File: resume_utile.tex, line 1192
def inverse (x): y = 1.0 / x return y try : print (inverse (2)) print (inverse (0)) except Exception as exc: print ("exception de type ", exc.__class__) # affiche exception de type exceptions.ZeroDivisionError print ("message ", exc) # affiche le message associé à l'exception
File: resume_utile.tex, line 1208
def inverse (x): y = 1.0 / x return y try : print ((-2.1) ** 3.1) print (inverse (2)) print (inverse (0)) except ZeroDivisionError: print ("division par zéro") except Exception as exc: print ("erreur insoupçonnée : ", exc.__class__) print ("message ", exc)
File: resume_utile.tex, line 1225
class AucunChiffre (Exception) : """chaîne de caractères contenant aussi autre chose que des chiffres""" def __init__(self, s, f = "") : Exception.__init__(self, s) self.s = s self.f = f def __str__(self) : return """exception AucunChiffre, lancée depuis la fonction """ + self.f + \ " avec le paramètre " + self.s def conversion (s) : """conversion d'une chaîne de caractères en entier""" if not s.isdigit () : raise AucunChiffre, (s, "conversion") return int (s) try : s = "123a" i = conversion (s) print (s, " = ", i) except AucunChiffre as exc : print (AucunChiffre.__doc__, " : ", exc) print ("fonction : ", exc.f)
File: resume_utile.tex, line 1264
s = "abcdefghijklmnopqrstuvwxyz" print (s [4]) # affiche "e" print (s [4:6]) # affiche "ef"
File: resume_utile.tex, line 1276
l = [ un, deux, trois, quatre ] up = [] for i in range (0, len (l)) : up.append ( l [i].upper () )
File: resume_utile.tex, line 1295
l = [ "un", "deux", "trois", "quatre" ] up = [] for i in range (0, len (l)) : up.append ( l [i].upper () )
File: resume_utile.tex, line 1304
l = [ "un", "deux", "trois", "quatre" ] up = [] for m in l : up.append ( m.upper () )
File: resume_utile.tex, line 1322
l = [ "un", "deux", "trois", "quatre" ] s = "" for m in l : s += m # concaténation des mots en une seule chaîne de caractères
File: resume_utile.tex, line 1336
a = calcul1 (3) b = calcul2 (a) c = calcul3 (b) # c résultat souhaité et affiché
File: resume_utile.tex, line 1346
def calcul1(x) : return x+3 y = calcul1(4) print (y) # affiche None # car la fonction calcul1 ne retourne pas de résultat, elle l'affiche
File: resume_utile.tex, line 1356
def calcul1(x) : print (x+3) def calcul2(x) : return calcul1(x) + 5 y = calcul2(4) # affiche l'erreur # ported operand type(s) for +: 'NoneType' and 'int'
File: resume_utile.tex, line 1399
def somme_double (liste) : return 1.0 * sum(liste) def test_somme_double () : y = somme_double([ 1 ]) / 2 if y == 0 : raise Exception ("valeur > 0 attendue") if __name__ == "__main__" : test_somme_double()
File: resume_utile.tex, line 1413
Traceback (most recent call last): File "conseil.py", line 10, in <module> test_somme_double() File "conseil.py", line 7, in test_somme_double if y == 0 : raise Exception ("valeur > 0 attendue") Exception: valeur > 0 attendue