Programmation avec Python - La programmation procédurale

publicité
Programmation avec Python
La programmation procédurale
Adel Daouzli
LOL (LyonOpenLab)
Mél : [email protected]
Web : http://lyonopenlab.net/programmation
Adel Daouzli
Programmation - Python
1 / 39
Introduction
Programmation
B
Sujet vaste et abondamment traité
B
Permet de développer des programmes informatiques (jeux, graphismes,
traitement de texte, multimédia, industrie, web,...)
B
Actuellement la POO (Programmation Orientée Objet) est très en vogue
B
De nombreux langages pour différentes applications (C/C++, Python, Perl,
PHP, Assembleur, Java,...)
Adel Daouzli
Programmation - Python
2 / 39
Introduction
Python
B
Le nom est un clin d’oeil aux Monthy Python
B
Langage interprété (scripts)
B
Langage entièrement Orienté Objet
B
Tout à fait possible de faire abstraction de l’Objet!
B
Syntaxe simple et purifiée
B
Permet de se concentrer sur l’essentiel
B
Langage très riche et performant malgré sa simplicité apparente
Adel Daouzli
Programmation - Python
3 / 39
Introduction
Python
B
Le nom est un clin d’oeil aux Monthy Python
B
Langage interprété (scripts)
B
Langage entièrement Orienté Objet
B
Tout à fait possible de faire abstraction de l’Objet!
B
Syntaxe simple et purifiée
B
Permet de se concentrer sur l’essentiel
B
Langage très riche et performant malgré sa simplicité apparente
Objectifs de ce cours
B
Apprendre les bases de la programmation
B
Apprendre le langage Python
B
Connaı̂tre les subtilités du langage
Adel Daouzli
Programmation - Python
3 / 39
Plan
1
Démarrage
2
Les variables
3
Les structures de contrôle
4
Les listes
5
Les Entrées/Sorties
6
Les fonctions
7
Les décorateurs
8
Bilan
Adel Daouzli
Programmation - Python
4 / 39
La programmation en Python
Au préalable
B
Il vous faut évidemment Python d’installé (normalement c’est fait sous
Linux, pour les autres OS voir http://www.python.org/download)
B
Vous pouvez utiliser l’éditeur que vous préférez. Je vous conseille sous
GNU/Linux vim ou Geany, sous windows Notepad++. Pour ceux qui aiment
Eclipse vous pouvez utiliser le module PyDev.
B
Ce cours essaie d’être indépendant de la version de Python que vous
utilisez mais il y aura forcément des différences notament entre les versions
antérieur à la version 3 et cette dernière. Je m’efforcerais de préciser les
différences lorsqu’il y en a. Mais il est préférable d’apprendre à utiliser
Python 3 étant la nouvelle version.
B
Normalement, ce qui est codé ici devrait fonctionner sur Linux et d’autres
systèmes mais je vous conseille vivement de coder sous Linux qui sera plus
adapté à la programmation et qui est le système que j’utilise pour ce cours.
Adel Daouzli
Programmation - Python
5 / 39
La programmation en Python
Pour commencer...
B
Lancez l’interpréteur Python dans un terminal (sous windows cmd ou
command.com) en tapant python
B
Vous pouvez lire le numéro de version dans la première affichée à la
console à côté de ”Python”. Vous pouvez aussi depuis un terminal taper
python − −version
B
B
Une fois Python lancé, vous aurez un prompt indiquant >>> et un curseur
clignotant après lequel vous pourrez entrer vos commandes.
Pour information, lorsqu’on entre un nombre ou une chaı̂ne de caractères
ou un nom de variable et qu’on valide par Entrée, l’interpréteur affiche le
nombre ou la chaı̂ne saisi ou la valeur de la variable.
Adel Daouzli
Programmation - Python
6 / 39
La programmation en Python
Afficher un message
B
Pour afficher un message dans la console, comme nous venons de le voir
l’interpréteur le fait automatiquement. Mais il est possible de le faire de
façon volontaire, il faut alors utiliser la fonction print. Ceci est indispensable
si vous exécutez votre programme en dehors de l’interpréteur (vous pouvez
depuis le terminal taper python nom de mon script.py).
B
En Python 3 il faut mettre le message à afficher entre parenthèses ce qui
n’étais pas obligatoire dans les versions précédentes.
B
Exemples:
print("Hello world!")
print (15)
print " coucou vous" (ne marche plus à partir de Python 3!)
Adel Daouzli
Programmation - Python
7 / 39
La programmation en Python
Afficher un message
B
On peut afficher plusieurs éléments (texte, variables, valeurs) en les
concaténant de deux manières. L’opérateur + permet de concaténer des
chaı̂nes.
print("Hello " + "toi")
B
On peut afficher des éléments de types différents en utilisant la virgule
print("J’ai", 15, "ans et", 10, " dents ")
B
On peut utiliser une chaı̂ne formatée. On indique par {} un élément à insérer
dans la chaı̂ne qu’on fournit dans la fonction format() qui suit un point
après la chaı̂ne.
print("J’ai {} ans et {} dents ". format (15 , 10))
Adel Daouzli
Programmation - Python
8 / 39
Plan
1
Démarrage
2
Les variables
3
Les structures de contrôle
4
Les listes
5
Les Entrées/Sorties
6
Les fonctions
7
Les décorateurs
8
Bilan
Adel Daouzli
Programmation - Python
9 / 39
Les variables
Les différents types
Les variables permettent de stocker des données qui peuvent être de différents
types. Cela permet de mémoriser une information pour la traiter, l’afficher,
l’initialiser, ...
Il en existe différents types:
B
Les nombres (âge du capitaine, rayon d’un cercle, nombre de pommes dans
un panier...)
B
Les chaı̂nes de caractères (nom, citation, discours,...)
B
Les booléens (vrai/faux)
B
Les conteneurs (liste de course, coordonnées GPS, coordonnées d’une
personne (nom/prénom/adresse..))
B
Les objets (tout et n’importe quoi!)
Adel Daouzli
Programmation - Python
10 / 39
Les variables
Nommage/Affectation
B
Le nom est quelconque et peut contenir des lettres minuscules/majuscules,
chiffres (ne doit pas commencer le nom), et le caractère underscore . Il ne
doit pas contenir de caractères spéciaux ni d’espaces.
B
Pour mettre une valeur dans une variable on utilise le caractère =
B
Pour afficher le contenu d’une variable utilisez print : print(ma variable)
B
Exemples:
age_du_capitaine = 58
print( age_du_capitaine )
super_nom = ’toto ’
print( super_nom )
ma_liste = [’poireaux ’, ’carottes ’, ’endives ’, ’lessive ’]
print( ma_liste )
Adel Daouzli
Programmation - Python
11 / 39
Les variables
Nommage/Affectation
B
Le nom est quelconque et peut contenir des lettres minuscules/majuscules,
chiffres (ne doit pas commencer le nom), et le caractère underscore . Il ne
doit pas contenir de caractères spéciaux ni d’espaces.
B
Pour mettre une valeur dans une variable on utilise le caractère =
B
Pour afficher le contenu d’une variable utilisez print : print(ma variable)
B
Exemples:
age_du_capitaine = 58
print( age_du_capitaine )
super_nom = ’toto ’
print( super_nom )
ma_liste = [’poireaux ’, ’carottes ’, ’endives ’, ’lessive ’]
print( ma_liste )
Remarque
B
Python reconnaı̂t tout seul le type de donnée qu’on manipule! (pas de
typage explicite)
B
Pour connaı̂tre le type d’une variable on utilise la fonction type() comme
suit: type(ma variable)
Adel Daouzli
Programmation - Python
11 / 39
Les variables
Les chaines de caractères
B
Pour stocker tous ce qui peut être affiché.
B
Ce qui définit une chaı̂ne:
◦
◦
◦
◦
B
Des délimiteurs qui sont soit ’, soit ”, soit 3 fois l’un ou l’autre
Les ”’ et ” ” ” permettent d’écrire des chaı̂ne de caractères sur une ou
plusieurs lignes
Tout ce qui se trouve entre les délimiteurs est la chaı̂ne de caractères
Le délimiteur pour indiquer la fin de chaı̂ne doit être le même que celui
indiquant le début de chaı̂ne
On peut à peu près tout convertir en chaı̂ne de caractères (nombres, listes,
divers objets,..)
Adel Daouzli
Programmation - Python
12 / 39
Les variables
Les chaines de caractères
B
Pour stocker tous ce qui peut être affiché.
B
Ce qui définit une chaı̂ne:
◦
◦
◦
◦
B
Des délimiteurs qui sont soit ’, soit ”, soit 3 fois l’un ou l’autre
Les ”’ et ” ” ” permettent d’écrire des chaı̂ne de caractères sur une ou
plusieurs lignes
Tout ce qui se trouve entre les délimiteurs est la chaı̂ne de caractères
Le délimiteur pour indiquer la fin de chaı̂ne doit être le même que celui
indiquant le début de chaı̂ne
On peut à peu près tout convertir en chaı̂ne de caractères (nombres, listes,
divers objets,..)
Remarque
B
On ne pourra pas utiliser l’apostrophe lorsque celle-ci sert de délimiteur
sinon il faut l’échapper avec le caractère spécial \ou alors utiliser les
guillemets comme délimiteur. Le corollaire est vrai.
B
L’avantage des délimiteurs ”’ et ” ” ” est qu’on peut écrire sans problème les
caractères ’ et ” sans les échapper.
Adel Daouzli
Programmation - Python
12 / 39
Les variables
Chaı̂nes
Exemple d’affectation de chaı̂nes:
chaine = "c’est une chaine "
chaine2 = ’voici une autre chaı̂ne ’
chaine3 = """ encore un exemple de chaine
qui peut être écrite sur plusieurs lignes """
chaine4 = ’’’idem pour celle -ci
qui peut s’écrire sur
plusieurs lignes
’’’
Conversion:
B
une variable de n’importe quel type → chaı̂ne : chaine = str(une variable)
B
nombre → chaı̂ne : chaine nb = str(235)
B
nombre entier → chaı̂ne hexadécimale : chaine hexa = hex(1045235)
(donnera ’0xff2f3’)
Adel Daouzli
Programmation - Python
13 / 39
Les variables
Les nombres
B
Nombres entiers (-15, 12384,..), à virgule flottante (12.5, -79.8789,
1.5e-12,..)
B
Opérateurs utilisables pour faire des calculs :
◦
◦
◦
◦
◦
◦
◦
◦
B
// : division entière en Python3
/ et % : division et modulo
∗ et ∗∗: multiplication et puissance
+ et − : addition et soustraction
| et ˆ: OU inclusif et OU exlusif
& : ET
˜: inversion de bits
<< et >> : décalages à gauche et à droite
Convertible en chaı̂ne de caractères et vice-versa
Adel Daouzli
Programmation - Python
14 / 39
Les variables
Nombres
Exemple de calculs:
nombre = 4
moyenne = (5 + 12.75 + 18 + 10.5) / nombre
carre_de_nombre = nombre ** 2
Conversion:
B
mon nombre = −8.123
B
entier → chaı̂ne : chaine = str(mon nombre)
B
ma chaine = ”25”
B
chaı̂ne → entier : nb = int(ma chaine)
B
ma chaine = ”15.725”
B
chaı̂ne → flottant : nb = f loat(ma chaine)
B
ma chaine hexa = ”AF1B30” (ou ”0xAF1B30”)
B
chaı̂ne hexadécimale → entier : nb = int(ma chaine hexa, 16)
Adel Daouzli
Programmation - Python
15 / 39
Les variables
Les booléens
B
Les deux valeurs possible sont True et False.
Exemple d’affectation :
mon_booleen = True
B
Les booléen sont utiles pour les tests conditionnels que nous verrons plus
loin.
Adel Daouzli
Programmation - Python
16 / 39
Les variables
Les listes, tuples et dictionnaires
Voici un simple aperçu. Nous verrons ces objets plus tard dans ce cours.
B
Les listes permettent de stocker plusieurs éléments de types différents ou
de même type.
Exemple d’affectation :
ma_liste = [’toto ’, 15, ’0x125 ’, 156.25 , "c’est super !!"]
B
Les tuples sont des listes constantes, dont on ne peut pas modifier les
données une fois initialisées. Exemple d’affectation :
mon_tuple = (2.3e5 , 25, ’toto ’)
B
Les dictionnaires permettent de stocker des données associées à des clés.
Les clées et les données peuvent être de types différents. Exemple
d’affectation :
mon_dico = {’nom ’:’toto ’, ’age ’:15 , ’adr ’:’1 rue Jolie ’}
Adel Daouzli
Programmation - Python
17 / 39
Les variables
Lire depuis le clavier
Il serait intéressant d’affecter une variable avec des données demandée à
l’utilisateur. Ceci rajoutera de l’interaction avec l’utilisateur et rendra nos
programmes plus dynamiques.
B
La fonction input() permet de lire des informations depuis le clavier:
nom = input(’entre ton nom:’)
print(nom)
age = input(’entre ton age:’)
age = int(age)
print(age)
B
En réalité les données sont lues depuis l’entrée standard (par défaut le
clavier).
Attention
B
Avec les anciennes version de Python il faut utiliser raw input() pour lire
une chaı̂ne de caractères.
B
input() permettait de lire des données que Python peut évaluer (nombres,
listes, expressions,..). Pour obtenir un comportement similaire à partir de
Python3, il faut utiliser eval(input())
Adel Daouzli
Programmation - Python
18 / 39
Plan
1
Démarrage
2
Les variables
3
Les structures de contrôle
4
Les listes
5
Les Entrées/Sorties
6
Les fonctions
7
Les décorateurs
8
Bilan
Adel Daouzli
Programmation - Python
19 / 39
Les structures de contrôle
Blocs d’instruction
B
Pour l’instant nous savons récupérer des données saisies depuis le clavier,
les stocker dans des variables. Nous savons faire quelques manipulations
avec les variables et les afficher à l’écran.
B
Il peut être nécessaire de regrouper des instructions dans des blocs. Par
exemple si on veut qu’une suite d’instructions s’exécutent à une certaine
condition et qu’une autre suite sous une autre condition. Cela est
nécessaire aussi si on veut répéter une certaine suite d’instruction un
certain nombre de fois.
Pour délimiter un bloc d’instruction en Python, nous utilisons l’indentation!
En effet il suffit que l’ensemble des instructions regroupées soient alignées
sur une même colonne (même nombre d’espaces ou de tabulations à
gauche)
Adel Daouzli
Programmation - Python
20 / 39
Les structures de contrôle
Blocs d’instructions
si UNE_CONDITION :
instruction_1a
instruction_2a
instruction_3a
...
si AUTRE_CONDITION :
instruction_1b
instruction_2b
instruction_3b
...
boucle_tant_que CONDITION :
instruction_1c
instruction_2c
...
Notez qu’il faut être uniforme dans les séparations d’un même bloc en utilisant
exactement les même séparateurs. Il est fortement conseillé d’utiliser des
espaces (de préférence au nombre de 4).
Adel Daouzli
Programmation - Python
21 / 39
Les structures de contrôle
Les tests conditionnels
B
Il s’agit d’éxécuter des instructions uniquement si une condition est vérifiée.
B
Les conditions sont des tests dont le résultat est un booléen True ou False
B
Tests de comparaisons:
◦
◦
◦
◦
B
Tests d’appartenance à une séquence (liste, dictionnaire, tuple, chaı̂ne):
◦
◦
B
a == b → a égal b
a != b → a différent de b
a < b / a > b / a <= b / a >= b → a inférieur/supérieur / ou égal b
a is b → a est un objet de type b
a in b → a est dans la séquence b
a not in b → a n’est pas dans la séquence b
Faire plusieurs tests:
CONDITION A or CONDITION B → il faut qu’au moins une des
conditions soit vraie pour que le test soit vrai
◦ CONDITION A and CONDITION B → il faut que les deux conditions
soit vraies pour que le test soit vrai
◦ On peut enchaı̂ner plusieurs conditions dans le même test et utiliser
des parenthèses si nécessaire. On peut utiliser not pour inverser un
Adel Daouzli
Programmation - Python
22 / 39
résultat.
◦
Les structures de contrôle
Les tests
Pour effectuer un test on utilise les mots clés if elif else:
age = input(" Donnez votre âge : ")
if age < 15:
print("tu devrais être couché !")
elif age >= 15 and age < 18:
print("tu es un adolescent ")
elif age <= 30:
print("vous êtes un jeune homme ")
else:
print("Vous avez de la bouteille !")
permis_valide = True
if (age < 18 or age > 80) and permis_valide == True:
print("Vous êtes sûr que votre permis est valide ?")
chaine = "abcde"
if "d" in chaine :
print("La lettre d est dans la chaine ")
liste = ["toto", "foo", "jean -luc"]
if " dadel" not in liste:
print("Vous n’êtes pas inscrit sur la liste ")
Adel Daouzli
Programmation - Python
23 / 39
Les structures de contrôle
Les boucles
Il peut être utile de pouvoir répéter une suite d’instructions en fonction d’une
condition ou en parcourant un certain nombre d’éléments.
B
Boucle for → pour un certain nombre de fois
B
Boucle while → tant qu’une condition est valide
Adel Daouzli
Programmation - Python
24 / 39
Les structures de contrôle
Boucle for
B
On va répéter des instructions un certain nombre de fois. Cette répétition va
consister à parcourir une séquence et pour chaque élément de la séquence
les instructions sont exécutées.
B
Nous utiliserons le mot clé in mais qui indiquera cette fois-ci la séquence
que l’on parcours en récupérant à chaque fois l’élément dans la variable de
parcours.
sequence = [’toto ’, ’jean -luc ’, ’rms ’, ’foobar ’]
for element in sequence :
print( element )
if ’-’ in element :
print("est un nom composé !")
else:
print("n’est pas un nom composé ")
for i in range (5):
print(i)
Adel Daouzli
# la fonction range produit une liste de nombres démarrant à
Programmation - Python
25 / 39
Les structures de contrôle
Boucle while
B
On va répéter des instructions qu’une condition est vérifiée.
B
Nous pouvons utiliser les mêmes tests qu’avec if.
nb_essais = 10
nombre = 8
reponse = input("A quel nombre je pense (1 -10): ")
while reponse != nombre and nb_essais > 0:
print(" Mauvaise reponse . Nombre d’essais restant :", nb_essais )
reponse = input("A quel nombre je pense (1 -10): ")
nb_essais = nb_essais - 1
if reponse == nombre :
print("Bravo!")
Adel Daouzli
Programmation - Python
26 / 39
Plan
1
Démarrage
2
Les variables
3
Les structures de contrôle
4
Les listes
5
Les Entrées/Sorties
6
Les fonctions
7
Les décorateurs
8
Bilan
Adel Daouzli
Programmation - Python
27 / 39
Les listes
Parcours des listes
-créer une liste : liste = [] -ajouter un élément à une liste: liste.append(”elem”)
liste.append(5)
Adel Daouzli
Programmation - Python
28 / 39
Les listes
Compréhension de liste
La compréhension de liste est une technique avancée de Python permettant de
générer des listes. Ceci peut être assimiler à de la programmation fonctionnelle.
Adel Daouzli
Programmation - Python
29 / 39
Les listes
Les itérateurs
Adel Daouzli
Programmation - Python
30 / 39
Plan
1
Démarrage
2
Les variables
3
Les structures de contrôle
4
Les listes
5
Les Entrées/Sorties
6
Les fonctions
7
Les décorateurs
8
Bilan
Adel Daouzli
Programmation - Python
31 / 39
Les Entrée/Sorties
Introduction
C’est sympathique de pouvoir stocker des données dans des variables mais il
serait plus intéressant de pouvoir les lire depuis depuis un fichier.
Tant qu’à faire, autant pouvoir les enregistrer aussi dans un fichier.
Adel Daouzli
Programmation - Python
32 / 39
Plan
1
Démarrage
2
Les variables
3
Les structures de contrôle
4
Les listes
5
Les Entrées/Sorties
6
Les fonctions
7
Les décorateurs
8
Bilan
Adel Daouzli
Programmation - Python
33 / 39
Les fonctions
Fonction simple
Adel Daouzli
Programmation - Python
34 / 39
Les fonctions
Affectation du nom de fonction à une variable
Adel Daouzli
Programmation - Python
35 / 39
Les fonctions
Listes et dictionnaires de paramètres
Adel Daouzli
Programmation - Python
36 / 39
Plan
1
Démarrage
2
Les variables
3
Les structures de contrôle
4
Les listes
5
Les Entrées/Sorties
6
Les fonctions
7
Les décorateurs
8
Bilan
Adel Daouzli
Programmation - Python
37 / 39
Plan
1
Démarrage
2
Les variables
3
Les structures de contrôle
4
Les listes
5
Les Entrées/Sorties
6
Les fonctions
7
Les décorateurs
8
Bilan
Adel Daouzli
Programmation - Python
38 / 39
Bilan
Merci mon ’tit Python ;-)
B
Nous avons appris les bases de la programmation procédurale
B
Nous avons appris particulièrement Python
B
La prochaine fois
◦
◦
Nous apprendrons l’approche Orientée Objet
Nous verrons la puissance de Python
Adel Daouzli
Programmation - Python
39 / 39
Téléchargement
Study collections