Formation Programmation Python
Formation Programmation Python
Programmation
PYTHON
VERSION 0.20
BalacSoft - Introduction Programmation Python 1
SOMMAIRE
- Introduction
- Installation et outils Python
- Règles de codage et Types en Python
- Python – 1 – Objets et classes
- Python – 2 – Les fonctions
- Python – 3 – Les Boucles & Conditions
- Python – 4 – Les tableaux
- Python – 5 – Graphique
- Python – 6 – CI/CD
- Projet de développement
BalacSoft - Introduction Programmation Python 2
Introduction
- Langage Interprété
- Multiparadigme
- Multiplaforme
- Typage dynamique
- Garbage Collector
- Procédurale
- Orientée Objet
- Programmation Fonctionelle
- pyCharm : https://www.jetbrains.com/fr-fr/pycharm/
- Visual Studio Code : https://code.visualstudio.com/
$ python hello.py
- PYLINT est un outil qui permet l’analyse des règles de codage des scripts
Python. Il attribue une note sur 10 aux scripts.
Installation Linux: apt-get install pylint
- Utilisation:
$ pylint le_script.py
Ou simplement $ pylint *.py
Utilisation:
$ coverage run
$ coverage report
Utilisation:
$ pyinstaller --onefile mon_main.py
Règles
Règles (suite)
Exemple:
>>> import XXX
>>> dir(XXX)
Nombres:
Booleans:
- True ou False
BalacSoft - Introduction Programmation Python 26
Types élémentaires en Python - 2/2
Strings:
- Pour le nommage :
- Utiliser snake_case pour le nom du fichier
- Utiliser PascalCase pour le nom de classe
BalacSoft - Introduction Programmation Python 35
Définition d’une classe en Python
- Fichier ma_classe.py
- Exemple de contenu du fichier:
class MaClasse( ):
””” ceci est une classe Python “””
m_param = 0 # membre
def get_param(self) :
””” getter de la classe “””
return self.m_param
import ma_classe
(...)
ma_classe.set_param(5)
value = ma_classe.get_param()
class MaClasseCercle(MaClasseForme):
””” Cette classe derive de MaClasseForme “””
class MaClasseCercle(MaClasseForme):
””” Cette classe derive de MaClasseForme “””
m_rayon = 10
def __init__(self, le_rayon):
””” Constructeur de la classe “””
self.m_rayon = le_rayon
def deplacer_cercle(self, delta_x, delta_y):
””” Methode publique de la classe “””
(...)
BalacSoft - Introduction Programmation Python 39
Instancier une classe Python
import ma_classe_cercle
(…)
# instancier la classe - cela effectue l’appel au constructeur
le_cercle = ma_classe_cercle.MaClasseCercle()
# Il est possible d’utiliser maintenant les methodes
le_cercle.deplacer_cercle(10, 5)
Résultat :
class MaClasseForme( ):
class MaClasseCercle(MaClasseForme):
class MaClasseRectangle(MaClasseForme):
class MaClasseCarre(MaClasseRectangle):
BalacSoft - Introduction Programmation Python 41
Le Langage Python
- Les fonctions -
def function_name(arguments):
# ligne1
# ligne2
return xyz
Exemple:
Implémentation:
def first_function(x):
return x*2
Appel:
first_function(5)
def affiche_bonjour():
def affiche_bonjour():
- L’affichage de bonjour va se faire via """ Fonction qui affiche bonjour """
""" Fonction qui affiche bonjour """
une fonction désormais print("Bonjour")
print("Bonjour")
affiche_bonjour()
affiche_bonjour()
- Le main sera réduit à l’appel de la
fonction
paramètre
- Vérifier pylint
Exemple:
Implémentation:
def second_function(x):
return x*2, x*x
Appel:
my_double, my_square = second_function(5)
Exemple :
Implémentation:
def multiply(a, b=2):
return a*b
Appel:
multiply(2, 5) # le resultat est 10
multiply(4) # le resultat est 8 : 4*2
BalacSoft - Introduction Programmation Python 49
Fonction en Python – paramètre par défaut 2/2
Implémentation:
def multiply_new(a=1, b=2):
return a*b
Appel:
multiply_new(a=3, b=4) # le resultat est 12 (3*4)
multiply_new(3, 4) # le resultat est 12 (3*4)
multiply_new(2) # le resultat est 4 (2*2)
multiply_new(b=1) # le resultat est 1 (1*1)
multiply_new() # le resultat est 2 (1*2)
BalacSoft - Introduction Programmation Python 50
Manipulation : fonction à multiple retours
- Créer un fichier “f24_fonction_cercle.py” #!/usr/bin/python3
#!/usr/bin/python3
""" aire et perimetre d'un cercle """
""" aire et perimetre d'un cercle """
- On va créer une fonction qui calcul le import math
import math
périmètre et l’aire d’un cercle dont le rayon def calcul(le_rayon):
est passé en paramètre def calcul(le_rayon):
""" renvoi le perimetre et l'aire """
""" renvoi le perimetre et l'aire """
le_perimetre = 2 * le_rayon * math.pi
le_perimetre = 2 * le_rayon * math.pi
- On aura besoin de l’import de math pour la l_aire = math.pi * le_rayon * le_rayon
l_aire = math.pi * le_rayon * le_rayon
valeur de PI return le_perimetre, l_aire
return le_perimetre, l_aire
if __name__ == "__main__":
- Utiliser str(xx) pour convertir en string, on if __name__ == "__main__":
PERIMETRE, AIRE = calcul(3)
PERIMETRE, AIRE = calcul(3)
voit aussi toute la force du type dynamique print("Perimetre=" + str(PERIMETRE))
print("Perimetre=" + str(PERIMETRE))
(en float sans rien préciser) print("Aire=" + str(AIRE))
print("Aire=" + str(AIRE))
Attributs/Méthodes PROTECTED
self._my_protected_member=0
def _my_protected_function(self) :
# lignes...
Attributs/Méthodes PRIVATE
self.__my_private_member=0
def __my_private_function(self) :
# lignes...
Appel :
self.__my_private_function( )
BalacSoft - Introduction Programmation Python 54
Utilisation de ‘super’
- nous allons appeler les méthodes pour calculer les périmètres et les
aires du carré, du cercle et du rectangle
x = lambda a, b : a + b
print(x(5, 2))
=> affiche 7
BalacSoft - Introduction Programmation Python 58
Le Langage Python
- Boucles & Conditions -
if a==b:
# ligne1
elif a==c:
# ligne2
else:
# ligne3
Conditions :
>, <, >=, <= , ==, !=
value in table (ou not in)
Exemple : if ‘toto’ in m_string :
Operateurs: and / or
if a==b or a==c:
# ligne1
Pour un booléen:
if condition:
Boucle décroissante :
for index in range(10, 0, -1):
print(index)
Affichera : 10 9 8 7 6 5 4 3 2 1
def traduit_jour(le_jour):
def traduit_jour(le_jour):
""" Traduit un jour en anglais """
""" Traduit un jour en anglais """
for index in range(len(LA_SEMAINE)):
for index in range(len(LA_SEMAINE)):
if le_jour == LA_SEMAINE[index]:
if le_jour == LA_SEMAINE[index]:
return WEEK_DAYS[index]
return WEEK_DAYS[index]
return "Non trouve"
return "Non trouve"
if __name__ == "__main__":
if __name__ == "__main__":
BalacSoft - Introduction Programmation Python lance_traduction() 67
lance_traduction()
Manipulation : La boucle FOR 2/2
- En fait, l’exemple précédent fonctionne très bien mais génère un warning pylint
- C’est parce qu’il peut s’écrire de manière plus efficace avec un objet enumerate
Devient :
try:
x>3
except :
print(“un probleme…”)
else :
print(“Tout est ok”)
finally :
print(“le block try-except est termine”)
print(mon_tableau_2[1])
=> Cela donnera : [7, 8, 9]
print(mon_tableau_2[1][2])
=> Cela donnera : 9
BalacSoft - Introduction Programmation Python 73
L’utilisation de listes
- Il est aussi possible d’avoir des éléments non numériques avec les listes.
Par exemple :
mes_couleurs = ["blue", "red", "green", "yellow", "black"]
mes_couleurs.append("white")
print(mes_couleurs)
=> Cela donnera : ['blue', 'red', 'green', 'yellow', 'black', 'white']
Il est possible de parcourir la liste très facilement avec une boucle for :
for ma_couleur in mes_couleurs :
print(ma_couleur)
=> Cela donnera : blue red green yellow black white
- Il est possible d’utiliser les mêmes opérateurs : append, pop, remove, etc.
Manipulation : Tableau
""" ce script calcul la moyenne de notes sur 20 """
""" ce script calcul la moyenne de notes sur 20 """
def saisir_note():
def saisir_note():
""" Fonction qui saisie une note sur 20 """
""" Fonction qui saisie une note sur 20 """
la_note = int(input("Saisie note sur 20>"))
la_note = int(input("Saisie note sur 20>"))
- Créer un script qui permet de saisir des return la_note
return la_note
def calcul_moyenne(tableau_notes):
notes sur 20 et qui va effectuer la moyenne def calcul_moyenne(tableau_notes):
""" Fonction qui calcule la moyenne des notes """
""" Fonction qui calcule la moyenne des notes """
de toutes ces notes lorsque l’on ne saisira somme = 0
somme = 0
# effectue la somme
rien (valider sans saisie) # effectue la somme
for value in tableau_notes:
for value in tableau_notes:
somme = somme + value
somme = somme + value
return somme / len(tableau_notes)
- On utilisera “input” pour la saisie de la return somme / len(tableau_notes)
def mon_main():
print(mes_eleves[“Paul”]) => 16