Python pour les gens qui veulent l'apprendre

# -*- coding: encodage -*- ? déclaration d'encodage du script # commentaire """pseudo-commentaire multi-lignes""" #I - types de base : #------------------- entier = 1 flottant = 1.0 chaine = "python rocks" liste = [4.5, "une liste", 0, 1, 2, 3] dico = {"Vim":10, "Python":3, "Windows":"saynul"} tuple = ("presque","comme","une","liste", 44, 1) #II - controle et itération : #--------------- # y a pas de “switch” if True: print "Inexorable" elif 3==4: print "Impossible" else: print "Impossible (bis)" while True: print "boucle infinie" for i in objet_iterable: # en général, objet_iterable est une liste, une chaine # ou un tuple print i ##exemple : for i in range (7): print i Vu que range (10) retourne cette liste : [0,1,2,3,4,5,6], ça fera comme un for classique de QBasic #II - définir une fonction : #--------------------------- def fonction (argument1, argument2, argument_optionnel="par défaut"): # faire des choses return "Un ou des trucs" # équivalent lambda / def : l = lambda arg: arg + 1 def l (arg): return arg + 1 #III - Fonctions utiles : #----------------------- range (n) ? [0,1,2,...,n-1] ## découper et recoller des chaines liste = "a,b,c,d,e,f".split (",") # liste == ["a", "b", "c", "d", "e", "f"] chaine = "--".join (liste) # chaine == "a--b--c--d--e--f" ## utiliser les index pour récupérer des éléments de liste/chaine/etc. a = "abcdef"[0] # "a" a = "abcdef"[0:1] # "a" aussi bc = "abcdef"[1:3] # compris ? ok a = ["b","a","c"][1] # pour les listes c'est pareil # note au passage : une liste et un tuple, c'est quasi pareil # sauf que la liste, on peut utiliser append (), pop () et consorts # alors que le tuple est constant, comme les chaines de caractères # au passage aussi : addition de listes (ou de tuples) [1,2] + [3,4] # == [1,2,3,4] # Jesus' secret : pains = "pain " * 3 # ? "pain pain pain " pains = ["pain"] * 3 # ? ["pain","pain","pain"] pains = ("pain",) * 3 # ? ("pain","pain","pain") ## passer chaque élément d'une liste à une fonction liste = range (5) # ? [0,1,2,3,4] augmenter = lambda n: n+1 liste_augmentee = map (augmenter, liste) # ? [1,2,3,4,5] ##pour le shell : >>> dir (objet) # donne la liste des champs de l'objet >>> help (objet) # affiche l'aide de l'objet au format man #IV - I/O : #--------- """ a : append r : read w : write """ fichier = open ("/home/moi/mon_fichier.txt", "w") fichier.write ("le_contenu") fichier.close () fichier = open ("/home/moi/mon_fichier.txt", "r") contenu = fichier.read () fichier.close () print contenu #V - créer une classe : #------------------------ class QuelquUn: def __init__ (self, nom, prenom, age=17): """ Initialise la fiche. """ self.nom = nom.upper() self.prenom = prenom.lower().capitalize() self.age = age def is_majeur (self): """ Retourne True si la personne est majeure en France """ return self.age >= 18 def __str__ (self): """ La méthode qui est appelée par la builtin str() """ # exemple de chaîne de format inclus ! format = "%s %s : %d ans" my_tuple = (self.prenom, self.nom, self.age) return format % my_tuple # exemple d'utilisation d'une liste et d'une classe personnages = [] personnages.append (QuelquUn("pouce","tom",30)) personnages.append (QuelquUn("nEIgE","blAncHe",10)) for perso in personnages: if perso.is_majeur: print str (perso) # note : le str est pas nécessaire ici # car print l'appelle tout seul #VI - Opérateurs et leur surcharge : #----------------------------------- # calcul : les traditionnels +, *, /, - (3*5+1)/4 # == 4 # attention aux divisions entières : 17/3 # == 5 17/3.0 # == 5.6666(...)7 # modulo : 17%3 # == 2 # logique : les traditionnels & | ^ # puissance : 5**2 # == 25 25**0.5 # == 5 ##Surchargeons ? class NombreDeEiku: def __init__ (self, valeur = 0): self.val = valeur def __repr__ (self): return str(self.val) def __str__ (self): return str(self.val) def __add__ (self, other): return NombreDeEiku(self.val + 1 + other) def __mul__ (self, other): return NombreDeEiku ((self.val-4) * other) # pour les autres, taper dir (1) # test loufoque : >>> a = NombreDeEiku (1) >>> a 1 >>> a + 1 3 >>> a * 3 + 1 -8 # fin du test !