0% ont trouvé ce document utile (0 vote)
188 vues57 pages

Cours Python Débutant PDF Gratuit

Transféré par

ted
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
188 vues57 pages

Cours Python Débutant PDF Gratuit

Transféré par

ted
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Le langage python

Mohamed Bouraoui

[email protected]

AU 2017 - 2018
1
Installation de l’environnement de
développement
• Pour vérifier s’il existe un version python déjà installée :

$ python --version

• Dans le cas échéant:


• Télécharger la dernière version python compatible avec votre système
d’exploitation à partie de:
https://www.python.org/downloads/
• Sous Linux:
• Télécharger le code source et faire un build ou utiliser l’utilitaire APT
• Sous Windows :
• S’assurer des choix:
• Add python 3.5 to PATH
• Add Python to environment variables
2
Installation de l’environnement de
développement (2)
• Références
https://docs.python.org/3/using/windows.html#excursus-setting-environment-variables

• Et c’est parti!

3
Installation de l’environnement de
développement (3)
• L’interpréteur interactif

• Utiliser l’IDE (Python IDLE)

4
Opérateurs arithmétiques
• Les opérateurs arithmétiques en Python sont:
• + Pour l’addition
• - Pour la soustraction
• * Pour la multiplication
• / Pour la division

• L’usage des parenthèses est important!

• ** est utilisé pour la puissance


• % opérateur « modulo »
• // est l’opérateur « div » 5
A votre IDE !

# Ecrire ce code pour tester et puis écrire vos propres expressions


print(2 + 1)
print(1 + 2 + 3 * 4)
print((1 + 2 + 3) * 4)
print(2**2)
print(9 % 2)

6
Types entier et réel
• Un autre type arithmétique existe en
python c’est le type « float »

• Une opération entre float et entier


retourne un float

• Un float contient un « . »

7
Les variables
• Pour Créer une variable en Python, il suffit d’utiliser l’opérateur
d’affecation « = »

• Il est possible de définir des opérations sur une variable ainsi:

• Incrémentation
• Décrémentation
• Multiplication
• Division
8
Application
# Valeur du volume courant d'eau dans le barrage du Bir Mcherga
reservoir_volume = 4.445e8
# Le quantité de pluie
precipitation = 5e6

# Décrémenter par 50% la quantité de la pluie

# Ajouter le nouveau volume d'eau au barrage

# Décrémenter par 5% le volume d'eau du barrage à cause de l'évaporation

# afficher la nouvelle valeur du volume d'eau

9
Les variables (2)
• Affectations multiples

• Conversion de types

10
Opérateurs de comparaison
• Il est possible d’utiliser des variables de type Booléen ( bool )

• On obtient un résultat de type booléen lors d’une opération de comparaison

• Les opérateurs de comparaison sont:


Inférieur < Supérieur >=
strictement
Supérieur > Egale ==
strictement
11
Inférieur <= Différent !=
Application
>>tomate_marche_x, pommes_de_terre_marche_x = 920, 870
>>tomate_marche_y, pommes_de_terre_marche_y = 890, 890

#Ecrire Le code permettant d'afficher "True" si l'achat des légumes du


#marche_x est une bonne affaire et "False" sinon

12
Les chaînes de caractères
• Le type string en python permet de manipuler les chaînes de caractères.

• L’opérateur + permet de concaténer deux chaînes de caractères

13
Les chaînes de caractères (2)
• Une méthode prédéfinie len permet de retourner la longueur d’une chaîne
de caractères

• Application:

Pour deux chaînes de caractères que vous saisissez appelées part1 et part2, écrire
le script permettant de retourner:
• True Si leur concaténation (Espace comme séparateur) est valide comme « Tweet »
• False Sinon
• Notes:
• Une Tweet ne dépasse pas 140 caractères
• La fonction input() permet d’enter des caractères
14
Types et conversion
• On vient d’utiliser des variables de types int, float, bool et str.
• On peut vérifier le type d’une variable par l’usage de la méthode type

• Il est possible de passer d’un type vers un autre, exemples:

15
Application
#Déclarer les variables suivantes

depenses_lundi = "30"
depenses_mardi = "65"
depenses_jeudi = "12"
depenses_vendredi = "45"
depenses_dimande = "20"

#Ecrire un programme qui affiche: « Durant cette semaine vous avez dépensé
#X dinars »

16
String : autres méthodes
• Il existe plusieurs méthodes
permettant de gérer les chaînes de
caractères, on cite:
• title, islower, count…

• Vous pouvez consulter la


documentation sur:

https://docs.python.org/3/library/stdtyp
es.html#string-methods

17
Application
• Consultez la documentation et gérez vos chaînes de caractères!

18
Le formatage des chaînes
• Une méthode particulièrement utile est .format.
• Elle permet de construire des chaînes de caractères tout en suivant
des « templates ».
• Exemple:

log_server_access = "IP address {} accessed {} at {}".format(user_ip, url, now)

19
Application
#Déclarer les variables suivantes
city = "Tunis"
temperature_max = 37
temperature_min = 12
unit_temp = "degrees Celsius"

notif = "Les prévisions pour aujourd\'hui pour" + city + ": Température entre " +
str(temperature_min) + " et " + str(temperature_max) + " " + temperature_unit + ".

#Simplifier cette chaîne de caractères en utilisant le formatage

20
Définir des fonctions
• On définit une fonction via le mot clé def.
• Exemple: une fonction pour le calcul du volume d’un cylindre

• Une fois la fonction est définit, on peut l’appeler ainsi:


>>>cylinder_volume(4,3)
• Une fonction peut ne pas avoir une valeur de retour. La valeur de
retour dans ce cas est None.
21
Définir des fonctions (2) : La documentation
• La documentation est le texte précédé par """
def cylinder_volume(height, radius):
"""
Calcule le volume d'un cylindre
height: flaot. Hauteur du cylindre
radius: float. Rayon du cylindre
"""
pi = 3.14159
return height * pi * radius ** 2

• Référence sur les standards de définition des documentations en


python: https://www.python.org/dev/peps/pep-0257/
22
Application
• Définir une fonction jours_semaine permettant de retourner pour
une valeur de jours donné une chaîne de caractères indiquant le
nombre de semaines et les jours restant.

23
Les arguments par défaut
• Il est possible de définir un fonction avec un argument par défaut.
Exemple:
def cylinder_volume(height, radius, unité = "m3"):
"""
Affiche le volume d’un cylindre
L’unité de mesure par défaut est m3
"""

24
Structures conditionnelles
if poids_en_kg < 25:
print("votre valise est acceptée")

• On utilise le mot clé if suivit par la condition et par :


• Les instructions dans le bloc « if » sont précédées par une
tabulations.
• Attention aux indentations dans vos scripts!
if number % 2 == 0:
print("Le numéro " + str(number) + " est pair.")
else:
print("Le numéro " + str(number) + " est impair.") 25
Structures conditionnelles (2)
if poids_en_kg < 25:
print("votre valise est acceptée")
elif poids >= 25 and poids < 40
print("Acceptée avec des frais")
else:
print("refusée" )

• On utilise les opérateurs booléen and, or et not pour composer les


conditions.

26
Application
• Implémenter la fonction cylinder_surface avec la signature suivante

def cylinder_surface(height, radius, hasTopAndBottom):


"""
Si le troisième paramètre est vrai alors on doit aussi calculer
les surfaces des parties supérieure et inférieure
"""
• Modifier la fonction pour que la valeur par défaut de l’argument
hasTopAndBottom soit True

27
Les listes
• Une collection de données peut être représentée en plusieurs
structures. Pour une suite ordonnée de valeur, on utilise Les listes.
Jours_semaine = ["Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "samedi" , "dimanche"]

• Accès au éléments d’une liste


>>> print(Jours_semaine[2])
Mercredi

>>> debut_semaine=Jours_semaine[0:3] • Il est possible partitionner


>>> print(debut_semaine) une liste en utilisant
['Lundi', 'Mardi', 'Mercredi'] l’opérateur :
28
« Mutable » vs « Non Mutables »
>>> dsen_groupes = ['dsen51', 'dsen52']
>>> dsen_groupes_str = 'dsen51 dsen52'
>>> dsen_groupes[1] • Une chaîne de caractères peut
'dsen52'
>>> dsen_groupes_str[5] être gérée comme étant une
'1' liste de caractères mais sans
>>> dsen_groupes[1] = 'dsen53' oublier qu’une chaîne de
>>> dsen_groupes_str[5] = '3' caractères n’est pas mutable
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
dsen_groupes_str[5] = '3'
TypeError: 'str' object does not support item
assignment

29
Les listes (2)
• Plusieurs fonctions nous permettent de manipuler les listes

>>> liste_notes = [11, 12.5, 16,9, 17]


>>> len(liste_notes)
5
>>> max(liste_notes)
17
>>> min(liste_notes)
9
>>> sorted(liste_notes)
[9, 11, 12.5, 16, 17]
>>> sorted(liste_notes, reverse= True)
[17, 16, 12.5, 11, 9] 30
Les listes (3)
• La méthode join permet de retourner une chaîne de caractères contenant
les éléments de la liste de chaînes ainsi que la caractère de jointure.

>>> liste_notes=["11","12.5","16","9","17"]
>>> "-".join(liste_notes)
'11-12.5-16-9-17'

• Pour ajouter un élément à une liste, on utilise la méthode append.

>>> liste_notes.append("19")
>>> print(liste_notes)
['11', '12.5', '16', '9', '17', '19']

• Plus de méthodes pour la manipulation des listes:


https://docs.python.org/3/tutorial/datastructures.html 31
Parcourir une liste
• Soit la liste suivante:

jours_semaine = ["Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "samedi" , "dimanche"]

• Pour la parcourir, on utilise une boucle ainsi:

for jour in jours_semaine:


print(jour)
for index,jour in enumerate(jours_semaine):
print(index,jour) 32
Application: Calculer les tags XML
• Ecrire une fonction « tag_counter » permettant de calculer le nombre
des tags XML dans une liste.
• Exemple:

>>> liste = ['<etudiant>', 'Ahmed Ben Amine', '</etudiant>']


>>> print(tag_counter(liste))
2

33
Application2: Construire une liste
• Définir une fonction « html_liste » qui permet de convertir une liste
de valeurs en une liste HTML.
• Exemple: >>> list_to_html = ['first string', 'second string']

>>> html_list(list_to_html)

<ul>
<li>first string</li>
<li>second string</li>
</ul>

• Indication: Pensez à utiliser la fonction range. 34


Appication3
• Définir la fonction affiche_liste dont les paramètres sont les suivants:
• L : liste des valeurs
• Numéroté: de type Booléen, False par défaut.

Exemple:
liste_menu_du_jours = [‘Spaghetti’, ‘Salade César’, ‘Escalope panné’]

affiche_liste(liste_menu_du_jours , True) affiche_liste(liste_menu_du_jours )


1. Spaghetti - Spaghetti
2. Salade Cesar - Salade César
3. Escalope panné - Escalope panné
35
Les boucles « while »
• Dans le cas ou le nombre d’itérations est inconnu, on peut avoir
recours à la boucle while.
• Exemple:
>>> bonus_jeu = [1,3,5,7]
>>> score = []
>>> while sum(score) < 10:
score.append(bonus_jeu.pop())
>>> print(score)
[7, 5]

• pop: Dépile le dernier élément d’une liste


• On quitte une boucle « while » par le mot clé break. 36
La collection « Set »
• Une autre structure de données en python qui permet d’avoir des
éléments non-dupliqués est la structure « set ».
• On peut créer une set:
• A partir d’une liste: my_set = set(ma_liste)
• Vide: my_empty_set = set()
• On peut ajouter un élément dans une « set » par le mot clé add.

37
Les dictionnaires
• Les dictionnaires sont une structure de données qui sauvegardent une paire
de données de la formé clé  valeur.
• Exemple: elements = {'hydrogen': 1, 'helium': 2, 'carbon': 6}

>>> print(elements['carbon'])
• Pour accéder à un élément: 6

• Pour ajouter un nouvel élément: >>> elements['lithium'] = 3

Une autre manière pour accéder à un élément est l’usage de la méthode get
>>> print(elements.get(‘carbon’))
6 38
Application
• On souhaite connaitre le nombre d’utilisateurs de notre site par pays.
On détient uniquement d’une liste contenant les pays des visiteurs.
• Ecrire un script permettant de:
• Créer un dictionnaire pays_count de la forme {pays, nombre de
visiteurs}
• Ecrire le script dans un fichier stats.py
• Afficher le résultat

• Télécharger le fichier python:


https://github.com/bouraouimed/samples-python
• Dans stats.py, vous importez la liste « country_list » en ajoutant:
from countries import country_list 39
Suite
• Utiliser une boucle « for » pour afficher un message de la forme:

Les visiteurs du pays X ont accédé Y fois.

• Ecrire un script qui retourne les clé(s) relatives à une valeurs donnée.
• Exemple:
• d = {'m': 1, 'n': 2, 'e': 4, 't': 1, 'v': 1}
• get_keys(d,1) retourne ['m', 't', 'v']

40
Les structures composites
• Selon notre besoin de représentation des données, il est possible de
construire des structures composites de données.
• Exemple, soit le dictionnaire suivant:
elements = {'hydrogen': {'number': 1, 'weight': 1.00794, 'symbol': 'H'},
'helium': {'number': 2, 'weight': 4.002602, 'symbol': 'He'}}
• Il est possible d’accéder aux données ainsi:
>>> print(elements.get('hydrogen'))
{'number': 1, 'weight': 1.00794, 'symbol': 'H'}
>>> print(elements.get('hydrogen').get('weight'))
1.00794
>>> print(elements['hydrogen']['weight'])
1.00794 41
Application
• Définir une fonction calcul_annuel qui permet de calculer les revenus
annuel.
• Les données sont représentés ainsi:
revenus_mensuels = {'Janvier': [54, 63], 'Février': [64, 60], 'Mars': [63, 49],
'Avril': [57, 42], 'Mai': [55, 37], 'Juin': [34, 32],
'Juillet': [69, 41, 32], 'Aout': [40, 61, 40], 'Septembre': [51, 62],
'Octobre': [34, 58, 45], 'Novembre': [67, 44], 'Décembre': [41, 58]}

• Ecrire un script qui retourne les clé(s) associées à chaque valeur


• d = {'m': 1, 'n': 2, 'e': 4, 't': 1, 'v': 1}
• get_keys(d) retourne {1: ['m', 't', 'v'], 2: ['n'], 4: ['e']}

42
Les « tuples »
• Il est parfois utile de sauvegardé un ensemble corrélé de données.
• Exemple latitude_longitude = (10.3271, 11.5473)
>>> latitude_longitude[0]
10.3271
>>> latitude_longitude[1]
11.5473
>>>

• Un « tuple » peut avoir n dimensions.


• Une fonction peut retourner un tuple de valeurs.
43
LA MANIPULATION DES FICHIERS
• Il est utile parfois de récupérer des données à partir des fichiers.
Python offre les fonctions nécessaires pour le faire.
• Ouvrir un fichier en mode lecture f = open('/my_path/my_file.txt','r')

• Lire à partir du fichier file_data = f.read()


f.close()
• Ecrire dans un fichier f.write("Hello World!")

• Pour fermer systématiquement après une opération, on utilise with


with open('/my_path/my_file.txt','r') as f:
file_data = f.read()
44
Documentation: https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files
Application

• Refaites l’exemple « pays_count » en écrivant le résultat dans un


fichier « stats_res.txt » ayant le format suivant:

45
La bibliothèque standard
• Python offre une bibliothèque standard « Python Standard Library » qui inclut
un ensemble de bibliothèques souvent utiles.
• Importer un module est via le mot clé import. Exemple: import math
print(math.factorial(3))

• En parcourant la bibliothèque standard (https://docs.python.org/3/library/),


on trouve:
• csv: Lire et écrire à partir des fichiers CSV
• Collections: Extension des structures de données prédéfinies.
• random: Génération de nombres aléatoires
• re: Manipulation des expressions régulières
• math: Les opérations mathématiques
• os: Intéragir avec le système d’exploitation
• os.path: Un sous module de os pour la manipulation des chemins.
• json: Lire et écrire à partir des fichiers JSON
46
Utiliser des modules
• On peut importer une classe à partir d’une librairie ainsi:
from collections import defaultdict
• De même pour des importations multiples
from collections import defaultdict, namedtuple
• Pour renommer un module importé: utiliser le mot clé as
from csv import reader as csvreader
• A éviter
from module_name import *

47
Application
• En utilisant la librairie « os » , écrire un script permettant d’afficher
les documents dans le répertoire courant.
• Ecrire un script permettant de renommer tous les fichiers dont
l’extension est « txt ».
• En utilisant la librairie collections, réécrire le script « pays_count »

48
Des modules « Tierce-partie »
• Mise à part la bibliothèque standard pour python, il existe des
bibliothèques dites « Third Party ».
Pour Parcourir: https://readthedocs.org
• Une sélection:
• requests – Un Outil d'accès à des Web APIs.
• Flask - Un Framework pour le Web "lightweight".
• Django - Un Framework le Web plus complet.
• NumPy - Pour l'algèbre linéaire.
• pandas - Bibliothèque à outils d'analyse de données
• matplotlib - Graphes 2D.
• Pillow - Traitement d'images.
• pyglet - Développement de jeux. 49
Les « prérequis » d’une librairie
• Une librairie tierces partie détient fréquemment des dépendances.
Ces dépendances sont généralement décrites dans un fichier
requirements.txt.
• Exemple: bs4==0.0.1
pytz==2016.7
requests==2.11.1
• Pour installer une librairie avec ses prérequis, on utilise

pip3 install -r requirements.txt

50
Environnement de développement: virualenv
• « Virtualenv »: Comme solution aux problèmes d’incompatibilité entres
des versions de librairies dans différents projets, python utilise les
environnements virtuels ou « virtualenv ».
• Installer: pip install virtualenv
• Créer: virtualenv <NOM_DE_VOTRE_ENV_V>
• Activer:
• Linux: source bin/activate
• Windows: Scripts\Activate

• Désactiver:
• La commande est: deactivate

51
Référence: https://virtualenv.pypa.io/en/stable/userguide/
Application
• Consultez les deux librairies suivantes:
• Requests
• http://docs.python-requests.org/en/master/
• BeautifulSoup
• https://www.crummy.com/software/BeautifulSoup/bs4/doc/
• Créer un virtualEnv « CrawlerEnv » intégrant les deux librairies
• On souhaite extraire les données de l’annuaire du « El Ghazela
Technopark » pour avoir toutes les données sur les entreprise au
pôle. Lien: http://www.elgazala.tn/annuaire/elgazala
• A vos IDE!
52
POO : Les classes
Geo.py • Rectangle représente le nom de la
classe.
• largeur et longueur sont les
attributs de la classe.
• __init__(self, largeur, longueur)
est le constructeur de la classe.
Test_class.py
• Rect = Rectangle(5,7) est l’instanciation
d’un objet de type Rectangle
• On accède à un attribut via
nom_objet.nom_attribut

Google Style Guide for Python: https://google.github.io/styleguide/pyguide.html 53


POO : Les classes (2)

• Qu’est-ce qu’il y’a derrière?


1. __init__ est appelée
rect = Rectangle(5,7) 2. self pointe sur l’objet rect
print(rect.largeur) 3. largeur 5
4. longueur 7
• Un objet en mémoire est crée avec les attributs
largeur et longueur qui sont des attributs
d’instance

54
Les variables de classe
• UNITS est une variable de
classe
• On accède une variable de
classe via:
NomClasse.NOMVARIABLE

55
Les variables prédéfinies

• On définit la documentation avec


"""
• On peut accéder à la
documentation de la classe en
utilisant la variable prédéfinie
__doc__
• Il existe d’autre méthodes
prédéfinies en python ( __dict__ ,
__name__ , __module__ )

Méthodes prédéfinies: https://docs.python.org/2/reference/datamodel.html 56


Les méthodes prédéfinies
• Python détient des méthodes prédéfinies pour la manipulation des classes,
exemples:
• __getattr__ : Accéder à un attribut par son nom
• __setattr__ : Modifier la valeur d’un attribut
• __str__ : Retourne une représentation de l’objet sous forme de chaîne de caractères
• __del__: Supprimer une instance
• …
• Il est possible de surcharger l‘opérateur en définissant une méthode
__add__

https://docs.python.org/3/reference/datamodel.html#specialnames 57

Vous aimerez peut-être aussi