Python

chmux
5 avril 2019

Un script Python se présente sous la forme d’un fichier contenant une ou plusieurs commandes qui seront exécutées de manière séquentielle. Il pourra donc permettre d’automatiser une série d’opérations.

Les différentes variables en Python

float=3.3
print type(float)
print float

int=3
print type(int)
print int

chaine="toto"
print type(chaine)
print chaine

liste=["a","1","b"]
print type(liste)
print liste[1]

tuple=("1","3","4") #liste où l'on ne peut pas modifier les éléments
print type(tuple)
print tuple[1]

dictionnaire={"prenom":"toto", "nom":"supernom"} #ensemble clé/valeur
print type(dictionnaire)
print dictionnaire["prenom"]

>>>>
<type 'float'="">
3.3
<type 'int'="">
3
<type 'str'="">
toto
<type 'list'="">
1
<type 'tuple'="">
3
<type 'dict'="">
toto

Comme ce sont des objets, il est possible de les manipuler, exemple avec une chaine :

chaine ="SALUT"
print chaine
chaine_petite=chaine.lower()
print chaine_petite

toto="salut"
print toto[0:3]
print toto[3:]

>>>
SALUT
salut
sal
ut

 

Tests et conditions en Python

Les opérateurs de test

Test sur les nombres

[ n1 == n2 ]
Vrai si n1 et n2 sont égaux.

[ n1!=n2 ]
Vrai si n1 et n2 sont différents.

[ n1 < n2 ]
Vrai si n1 est strictement inférieur à n2.

[ n1 <= n2 ]
Vrai si n1 est inférieur ou égal à n2.

[ n1 > n2 ]
Vrai si n1 est strictement supérieur à n2.

[ n1 >= n2 ]
Vrai si n1 est supérieur ou égal à n2.

 

Instruction If

L’instruction « if » permet d’effectuer des opérations si une condition est réalisée, elle possède 3 niveaux de complexité.

Niveau 1 :

if CONDITION:
     instruction(s)

Niveau 2 :

if CONDITION:
     instruction(s)
else:
     instruction(s)

Niveau 3 :

if CONDITION1:
     instruction(s)

elif CONDITION2:
     instruction(s)

elif CONDITION3:
     instruction(s)
    ...

Pour les tests, possibilité d’utiliser les mots clés « and », « or » et « not ».

Exemple :

a=1
if a>=2 and a<=8: print("a n'est pas dans l'intervalle.") else: print("a est dans l'intervalle.") >>>a n'est pas dans l'intervalle.


majeur = False
if majeur is not True:
    print("Vous n'êtes pas encore majeur.")

>>>Vous n'êtes pas encore majeur.

 

La boucle For

La boucle « for » s’articule autour de ce schéma :

for VAR in sequence:
    instruction(s)

Exemple :

ma_liste = ['a', 'b', 'c', 'd', 'e']
for i in ma_liste:
        print i

Résultat :

a
b
c
d
e

 

La boucle While

La boucle « while » s’articule autour de ce schéma :

while CONDITION:
    instruction(s)

CONDITION est une condition de continuation de la boucle et tant que cette condition est vraie, la boucle continue.

Généralement, il faut définir les variables de CONDITION avant le while, sinon la condition n’est pas vérifiable (vu qu’elle n’est pas définie).

Exemple :

i=0
b=1
while i < 10: print "b =",b i += 1 b *= i >>>b = 1
b = 1
b = 2
b = 6
b = 24
b = 120
b = 720
b = 5040
b = 40320
b = 362880

 

Les instructions « break » et « continue »

L’instruction « break » permet de casser une boucle :

for i in range(10):
    print "debut", i
    if i == 2:
        break
    print "fin", i
print "fin de boucle car i =", i

Résultat:

debut 0
fin 0
debut 1
fin 1
debut 2
fin de boucle car i = 2

L’instruction « continue » permet de passer prématurément au tour suivant d’une boucle :

for i in range(4):
    print "debut", i
    if i == 2:
        continue
    print "fin", i
print "fin de boucle"

Résultat:

debut 0
fin 0
debut 1
fin 1
debut 2
debut 3
fin 3
fin de boucle

 

Les regex

Les basiques

Symbole
Correspondance
Exemple
\
Caractère d’échappement
[\.] contient un « . »
^
Début de ligne
^b$ contient uniquement b
.
N’importe quel caractère
^.$ contient un seul caractère
$
Fin de ligne
er$ finit par « er »
|
Alternative
^(a|A) commence par a ou A
( )
Groupement
^((a)|(er)) commence par a ou er
Intervalle de caractères
^[a-d] commence par a,b,c ou d
[ ]
Ensemble de caractères
[0-9] contient un chiffre
[^]
Tout sauf un ensemble de caractères
^[^a] ne commence pas par a
+
1 fois ou plus
^(a)+ commence par un ou plusieurs a
?
0 ou 1 fois
^(a)? commence ou non par un a
*
0 fois ou plus
^(a)* peut ou non commencer par a
{x}
x fois exactement
a{2} deux fois « a »
{x,}
x fois au moins
a{2,} deux fois « a » au moins
{x, y}
x fois minimum, y maximum
a{2,4} deux, trois ou quatre fois « a »

 

Les équivalences

Alias
Correspondance
Equivalence
\n
Caractère de nouvelle ligne
\r
Caractère de retour à la ligne
\t
Caractère de tabulation
\s
Caractère d’espacement (espace, tabulation, saut de page, etc)
[\f\n\r\t\v]
\S
Tout ce qui n’est pas un espacement
[^\f\n\r\t\v]
\d
Un chiffre
[0-9]
\D
Tout sauf un chiffre
[^0-9]
\w
Un caractère alphanumérique
[a-zA-Z0-9]
\W
Tout sauf un caractère alphanumérique
[^a-zA-Z0-9]

 

Les filtrages

La syntaxe pour effectuer un filtrage est la suivante :
nouvelle_squence = [element_a_afficher for element in ancienne_squence if condition]

Exemple :

inventaire = [
        ("pommes", 22),
        ("melons", 4),
        ("poires", 18),
        ("fraises", 76),
        ("prunes", 51),
]
inventaire_inverse = [(qtt, nom_fruit) for nom_fruit,qtt in inventaire]
inventaire = [(nom_fruit, qtt) for qtt,nom_fruit in sorted(inventaire_inverse, reverse=True)]
print inventaire

>>>>
[('fraises', 76), 
('prunes', 51), 
('pommes', 22), 
('poires', 18), 
('melons', 4)]

 

Manipuler les fichiers

Pour manipuler un fichier il faut l’ouvrir avec la fonction Open qui prend en argument le chemin vers le fichier (relatif ou absolu) puis le mode d’ouverture :
r : ouverture en lecture (Read)
w : ouverture en écriture (Write). Le contenu du fichier est écrasé. Si le fichier n’existe pas, il est créé
a : ouverture en écriture en mode ajout (Append). On écrit à la fin du fichier sans écraser l’ancien contenu du fichier. Si le fichier n’existe pas, il est créé

Exemple :

fichier=open("fichiertest", "r")
contenu=fichier.read()
print contenu
fichier.close()

>>>>
contenu de mon fichier test

 

Les fonctions utiles

Join

La fonction join prend en paramètre un séparateur et une liste ; elle renvoie une chaîne de caractères comportant les éléments de la liste, concaténés et séparés par le séparateur.
chaine = « séparateur ».join(liste)

ma_liste = ['Bonjour', 'a', 'tous']
ma_chaine = " ".join(ma_liste)

 

Split

La fonction split prend en paramètres un séparateur et une chaîne de caractères ; elle renvoie la liste des éléments de la chaîne de caractères délimités par le séparateur.
liste = split(/séparateur/, chaîne );

ma_chaine = "Bonjour a tous"
ma_list = ma_chaine.split(" ")

Les classes et objets

Une classe est un « modèle » et un objet est une instance d’une classe.

Exemple avec la création de véhicule :

class vehicule:
        compteur = 0
        def __init__(self, nom, roues): ; # ne pas oublier "self" au début (convention de nommage)
                self.nom = nom
                self.roues = roues
                vehicule.compteur += 1
                print "Vehicules crees : ",vehicule.compteur


moto=vehicule("moto", 2)
print moto.nom
print moto.roues

camion=vehicule("camion", 8)
print camion.nom
print camion.roues

>>>>
Vehicules crees :  1
moto
2
Vehicules crees :  2
camion
8

Exemple avec des methodes, un tableau où l’on peut écrire dessus, le lire et l’effacer :

class TableauNoir:
    def __init__(self):
        self.surface = ""
    def ecrire(self, message_a_ecrire):
        if self.surface != "":
            self.surface += "\n"
        self.surface += message_a_ecrire
    def lire(self):
        print(self.surface)
    def effacer(self):
        self.surface = ""

>>> tab = TableauNoir()
>>> tab.lire()
>>> tab.ecrire("Salut")
>>> tab.ecrire("Petit test")
>>> tab.lire()
Salut
Petit test
>>> tab.effacer()
>>> tab.lire()
>>>