Professional Documents
Culture Documents
Licence Professionnelle:
Systèmes d’Information et Génie Logiciel
Introduction à
Plan
• Caractéristique du langage
• Environnement de développement
• Le langage Python
– Variables
– Commentaires
– Opérateurs
– Affectations
– Type de données
– Manipulation de chaines de caractères
– Fonctions d’entrée/sortie
– Blocs d’instruction
– Structures de controles
– Les listes, tuples, Sets, Dictionnaires
• Gestion des exceptions
2
Caractéristiques du langage
• Python
– Simple et puissant
– Interprété
– Multi-paradigme
– Multiplateformes
– Typage dynamique fort
– Gestion automatique de la mémoire
– Système de gestion d'exceptions
– Distribué sous licence libre
– Très utilisé:
• Web: Python + le Framework Django
• Administration
• Prototypage
– Richesse en librairie: calcul, réseau, jeux vidéos (2d et 3D), ...
– Première version sortie le 1990 par « Guido van Rossum »
– Principalement inspiré du :
• Langage ABC pour l’indentation
• Modula-3 pour la gestion des exceptions
• C pour les outils UNIX
– En deux releases: Version 2 et Version 3
– Dernières versions: 2.7.11 (la plus stable) et 3.5.1
3
Multiplateforme et multi-environnement
• Multiplateforme: Windows, MacOS, Linux, ...
• Multi-Environnement: par le biais des
implémentations:
– Cpython: en C (plus utilisée Windows, Mac, Linux)
– IronPython: en .Net en Mono
– Jython: en Java
– ...
4
Environnement de développement
• Linux:
– Souvent préinstallé. Pour le vérifier taper la commande
«python» dans un terminal
– Sinon, installer le package de la distribution
• Windows:
– Utiliser un assistant d’installation à télécharger à partir du
site officiel « www.python.org »
• Mac OS:
– Préinstallé mais en version incomplète; télécharger et
installer la version complète à partir du site www.python.org
5
Environnement de développement
• 2 modes d’utilisation
– Interactif: un invite de commande qui interprète
immédiatement les commande saisies et affiche le résultat
calculateur
>>> print "salut"
salut
>>> 5 + 6
11
>>>
– Programmation (script): code écrit dans des fichiers *.py et
interprétés par l’interpréteur Python
• Editeurs Python:
– IDLE: installé par défaut
– Bluefish
– Eric3
– PyDev
Pour une liste d’IDEs python
– .... https://wiki.python.org/moin/IntegratedDevelopmentEnvironments
6
Interpréteur de commandes
• Pour lancer l’interpréteur de commandes python (Windows) :
Démarrer > Tous les programmes > Python > Python (Commande Line).
(Démarrer + R) > Taper Python > Python (Commande Line).
• L'objectif principal est de tester et comprendre les bases de
Python en testons directement des instructions
• la série de trois chevrons qui se trouve en bas à gauche des
informations signifient qu’il est prêt à recevoir des instructions
Python .
>>> tax = 12.5 / 100
>>> price = 100.50 «_» contient le
>>> price * tax résultat
12.5625 d’exécution. en
>>> price + _
lecture seule
113.0625
>>> round(_, 2)
113.06
Les variables
Le nom de la variable ne peut être composé que des lettres,
majuscules ou minuscules, de chiffres et du symbole souligné.
Le nom de la variable ne peut pas commencer par un chiffre.
Affectation: avec =
Le langage Python est sensible à la casse, ce qui signifie que des
lettres majuscules et minuscules ne constituent pas la même
variable.
>>> tva=50
>>> print(tva)
50
>>> print (Tva) # génére une erreur ”name 'Tva' is not defined”
Les mots réservés ne sont pas utilisables comme identifiants
Les commentaires
• Commentaires mono-ligne :
commence par le caractère # et s’étend jusqu’à la fin de la ligne.
>>> tva =5 #Ceci est un commentaire
• Commentaires multi-lignes :
Utiliser trois quottes/double-quottes au début et à la fin de la partie
à commenté :
' ' ' ceci est un commentaire ' ' ‘ ou “”” ceci est un commentaire”””
Opérateurs
• Opérateurs logiques :
And - Or - Not
• Opérateurs de comparaison :
> , >= , == , < , <= , !=
• Opérateurs Mathématiques :
3+2 #5
3-2 #1
3*2 #6
3**2 #6(puissance)
3/2 #1(division entière)
3%2 #1(modulo)
3.5//2 #1 (division entière forcée)
Opérations d’affectation
>>> a=2 #Affectation
>>> a+=2 #a=a+2 si a déjà référencé
>>> C=d=8 #cibles multiples (affection de droite à gauche )
>>> e,f=2,9 #affectation de tuple (par position)
>>> e,f=f,e #permutation entre e et f
>>> g,h=[‘G’,’H’] #affectation de liste (par position)
Type de données
• Pas de déclaration explicite du type d’une variable (langage non
typique).
• Tout est basé sur l’objet: objet avec identifiant, type et valeur
• Utiliser des primitives pour identifier les attributs d’un objet
– id(): identifiant d’un objet
– type(): le type
– dir(): liste l’ensemble des fonctionnalités de l’objet
>>> tva =5
>>> id(tva) # affiche l’identifiant (équivalent à une adresse)
19845880
>>> type(tva) # affiche le type
<type 'int'>
>>> dir(tva)
['__abs__', '__add__', '__and__', '__class__'
>>> tva="la TVA“ # on change de type sans problème
>>> type(tva) 12
<type 'str'>
Les types
- Les types entiers :
Peuvent être d’une taille quelconque.
- Les types flottants(réels)
Notés avec un point décimal (3.2)
- Les types booléens qui prennent deux valeurs
True
False
- Les nombres complexes:
Les complexes sont écrits en notation cartésienne de la forme a+bj avec a et b
des flottants
Exemples:
1j #1j
(4+1j)+(2+3j) #(6+4j)
(5+7j).real #5.0
(5+7j).imag #7.0
Abs(3+4j) #5.0 ;module
Les chaines de caractères (str)
• Similaire aux chaines de caractères des autres langages
(tableau de caractères)
• Accès aux caractères par index, ie: pour une chaine s, s[i]
retourne le ième caractère
• Sont immuables (on ne peut changer leurs valeurs), il est
donc interdit d’écrire par exemple s[0]='a'
• Les constantes sont écrites entre "", ou entre ' '
• On peut écrire des " " dans les chaines délimitées par ' ' et
des ' dans les chaines délimitées par " ""
• Exemple:
S= " Je m’appelle Ahmed"
S= ' le mot " Oni" signifie démon en japonais '
Les opérations sur les str
• Concatenation
>>> " Hello" + " World" # Hello World
>>> "Hello"*3 # HelloHelloHello
16
Les opérations sur les str
s.isalnum() # retourne vrai si tous les caractères sont alphanumériques
s.isalpha() #retourne vrai si tous les caractères sont alphabétiques
s.isdigit() # retourne vrai si tous les caractères sont des chiffres
s.replace(old, new)
"""retourne une chaine où toutes les occurrences de old dans s sont
remplacées par new """
s.index(c) #retourne la position de c dans s, -1 s’il n’y existe pas
Formater une chaine de caractères
Pour formater une chaine de caractères on
utilise sa fonction format
La chaine en question doit contenir des {}
Exemple:
a=8.58
b=2
print "{:.2f} + {} = {:.1f} " .format(a, b, a+b) # 8.58 + 2 = 10.6
Entrées clavier :input()
L’instruction input() permet de saisir une entrée au
clavier
Elle effectue un typage dynamique (détecté le type
de la valeur entrée)
Accepter une syntaxe input(message) exemple:
>>>n=input("Entrez un entier") # la valeur tapée sera affectée à n
Attention :
Elle attend en réalité une instruction Python
N’existe plus à partir de Python 3.x
Lui préférer la fonction raw_input()
Entrées clavier :raw_input()
Même chose que input(), sauf qu’elle lit une chaine de
caractères
Pour lire une variable d’un autre type, il faut faire un
transtypage(cast)
>>> a=raw_input()
8
>>> type(a)
<type 'str'>
>>> b=int(raw_input())
5
>>> type(b)
<type 'int'>
Sortie écran (print)
L’instruction print permet d’afficher la valeur d’une variable à l’écran
>>> print "salut"
salut
>>> print ("salut") # En version 3.X c’est une fonction
Salut
>>> a="Sabri"
>>> print (a)
Sabri
Remarque:
Elle fait un saut de ligne après l’affichage de la valeur
Pour l’empêcher de sauter de ligne; rajouter une virgule à la fin (elle écrira
un espace au lieu d’un saut de ligne)
print ("salut"),
print ("Prof") # affiche Salut Prof
Python 3.X: rajouter un paramètre end=" "
print ("salut " ,end=" ")
Les littéraux
• des constantes définissant une valeur:
– Alphanumériques: chaines de caractères entourées par des
guillemets simples ou doubles, ou dans une série de trois
guillemets (triple-quoted) simples ou doubles
>>> print ("salut") # affiche salut de même que print ('salut')
>>> print ('salut j'en suis') #affiche erreur de meme que print ("salut j"en suis")
>>> print ("salut j'en suis") #affiche salut j'en suis
>>> print ("""salut j"en suis""") #affiche salut j"en suis
22
Les littéraux
– Alphanumériques: Préfixer une chaine
• r ou R pour indiquer que le contenu est du texte brut, ainsi
le caractère antislash (\) n’a plus le même usage
>>> print ('c:\nombre')
c:
ombre
>>> print (r'c:\nombre')
c:\nombre
• u ou U pour le texte en caractères Unicode
• b ou B pour le texte en bytes
23
Notion de bloc d’instruction
Les blocs d’instruction sont identifiés par leur indentation (espace
entre le de marge bu bloc et les instructions)
Il ne faut JAMAIS mélanger les tabulations et les espaces au
risque d’avoir l’erreur suivante:
IndentationError: unindentdoesnot match anyouterindentation level
Utiliser dans les boucles, conditions, fonctions, exceptions ...
La convention est d’utiliser 4 espaces par niveau au lieu d’une
tabulation
Notion de bloc d’instruction
if condition_1: if condition:
BLOC 1 BLOC d’instruction à exécuter si condition vérifiée
elif condition_2: #Equivalent à else if 2éme ligne du bloc. 4 espaces pour indentation
BLOC 2 else:
else: bloc de else
BLOC 3 Fin du bloc. Pas d’accolade mais indentation
Fin du bloc
26
Structures de contrôle
# -*- coding: UTF-8 -*-
a= input("saisir a: ")
b= input("saisir b: ")
if (a>b):
print "{} est > a {}".format(a,b)
else:
print "{} est > a {}".format(b,a)
print ("Fin")
i=0
while i<5: 12345
i=i+1 Fin
print i,
print "\nFin"
i=0
while i<5: 5
i=i+1 Fin
print i,
print "\nFin" 28
Structures de contrôle
• Boucle for:
for el in struc:
BLOC d’instruction à exécuter pour tous les « el » de struc
n=5
for i in range(n) :#Equivalent à for (i=0; i<n; i++ ) 01234
print i,
n=5
for i in range(2,n) :#Equivalent à for (i=2; i<n; i++ ) 234
print i,
n=5
for i in range(-1,n, 2) :#Equivalent à for (i=-1; i<n; j=j+2 ) -1 1 3
print i,
for cc in "Python":
Python
print (cc), 29
Les instructions break, continue
L'instruction break permet d'arrêter une boucle avant sa fin.
i=1
while i<5:
1
if i%2==0:
Fin
break
print i,
i=i+1
print "\nFin"
31
Les listes
Ce sont des tableaux hétérogènes de taille variable
Accès par position
Les objets de la liste peuvent être de types différents
La taille de la liste change à chaque suppression ou
insertion
Ils ne sont pas immuables contrairement aux str, on
peut faire :
l[0]=val
On peut créer des matrices sous forme de liste de listes
Exemple: M=[[1, 2, 3], [4, 5, 6]]
Les opérations sur les listes
Créer une liste (vide) : l=[] ou bien l=list()
l=[1 , -58, "SIGL", 'S', True]
l[0] retourne le premier élément
L3= l1+ l2 #Concaténer deux listes
l.append(v) : Insère un élément v à la fin de l
l.insert(i, v): Insère un élément v à la position i de l
l.pop() retourne la valeur du dernier élément et le supprime de la liste (on le
dépile)
l.pop(i) retourne la valeur du ième élément et le supprime de la liste
l.remove(v): supprime la première occurrence de v dans l
l.count(v): retourne le nombre d’occurrence de v dans l
l.expend(l2): insère tous les éléments de l2 à la fin de l1 (concaténation)
On peut créer des matrices sous forme de liste de listes
M=[[1, 2, 3], [4, 5, 6]]
Les opérations sur les listes
• Exemple
l=list()
l=[1 , 1, -58, "SIGL", 'S', True]
print l[2]
l2=[0.25, "T"] -58
l3= l + l2 [1, 1, -58, 'SIGL', 'S', True, 0.25, 'T']
print l3 1 1 -58 SIGL S True 0.25 T
for lis in l3:
print lis, 1 1 -58 SIGL S True 0.25 T ajout a la fin
l3.append("ajout a la fin") 1
print("\n")
for lis in l3:
print lis,
print "\n", l3.count('T')
36
Les opérations sur les listes
l.sort(): Trie une liste (si les objets ne sont pas des types
standards il faut rajouter une fonction qu’on verra plus
tard)
l.reverse(): retourne une liste dont les éléments sont ceux
de l mais d’ordre inversé
len(l): retourne la taille de l.
l[i:j] donne la sous-liste composée des valeurs aux
positions i, i+1, …, j-1
l[:j] donne la sous-liste composée des valeurs aux
positions 0, 1, …, j-1
l[j:] donne la sous-liste composée des valeurs aux
positions j, j+1, …, n-1
Les opérations sur les listes
• Exemple
l=[1, 1, -58, 18, 500, 0]
l.sort()
[-58, 0, 1, 1, 18, 500]
print l [500, 18, 1, 1, 0, -58]
l.reverse() [0, -58]
print l
print l[2:4]
38
Tuple
Même déclaration que les listes, mais avec parenthèses
tpl=() # tuple vide
Tupl=tuple() # tuple vide
tple=(2, 3) # tuple avec deux éléments
Même méthodes d’accès que les listes ( par index )
Sont immuables !
N’ont pas de méthodes
Ils sont plus rapides que les listes.
Peuvent servir comme clés des dictionnaires
Sont utilisées pour formater les strings (lui préférer la méthode format):
n_ag=("Ahmed", 25)
S= "Nom: %s et age: %s" % n_ag
print S # affiche « Nom: Ahmed et age: 25 »
Liste <-> Tuple
Passage d’un tuple à une liste:
L=list(myTuple)
Passage d’une liste à un tuple :
myTuple=tuple(list)
Set
Ensemble au sens mathématique: collection d’objets sans doublons
Ne sont pas ordonnés et donc pas d’accès par index
On peut itérer les éléments: for x in set
Existe en version immuable frozenset
Déclaration d’un set:
set={} # vide
Set={1,5}
Quelque méthodes des Set :
len(set) : retourne le cardinal du set
set.isdisjoint(set2) retourne True si l’intersection de set et set2 est vide
set.issubset( set2 ) (ou set <= set2) retourne True si set ⊂ set2
set.union(set2) (ou set | set2) : retourne set ∪ set2
set.intersection(set2) (ou set & set2) : retourne set ∩ set2
set. difference(set2) ( ou set –set2)
Les dictionnaires
Tableaux associatifs: l’accès se fait par clés
Ensemble de couples (key, value)
La clé doit être de type immuable (str, tuple, frozenset)
Création d’un dictionnaire vide:
Dict={}
Déclaration d’un dictionnaire initialisé:
Dict={key1: value1, key2: value2 ….}
Accès à la valeur value associée à la clé key;
Dict[key]
Ajout d’un élément new Key , newVal:
Dict[newKey]=newVal
Les dictionnaires
del(dict[key]): Suppression d’un élément de clé key:
dict.values(): retourne la liste des valeurs du dictionnaire
dict.keys(): retourne la liste des clés du dictionnaire
dict.clear(): supprime tous les éléments du dictionnaire.
dict.items(): retourne les éléments du dictionnaire (tuples(clé,
valeur))
dict.has_key(key): retourne True si la clé key appartient au dict
len(dict): retourne le nombre d’éléments du dictionnaire
Exercice
• Ecrire un code python qui
– Déclare un tuple dont tous les éléments sont des entiers
– Décaler un dictionnaire vide
– Affiche la somme de ces éléments et l’insère dans le
dictionnaire avec la clés « Somme»
– Afficher la valeur maximale et l’insère dans le dictionnaire
avec la clés « Min»
– Afficher la valeur minimale et l’insère dans le dictionnaire
avec la clés « Min»
44
Gestion des exceptions
Une exception est un événement qui se produit pendant
l'exécution d'un programme qui interrompt le déroulement
normal des instructions du programme.
En général, quand un script Python rencontre une situation
qui ne peut pas faire face, elle soulève une exception. Une
exception est un objet Python qui représente une erreur.
Si vous avez un suspect code qui peut soulever une
exception, vous pouvez défendre votre programme en
plaçant le code suspect dans un Try: bloc. Après l'essai:
bloc, inclure une except: déclaration, suivie par un bloc de
code qui gère le problème le plus élégamment possible.
Gestion des exceptions
• quelque sexceptions
Nom d’exception Description
try:
bloc d’instructions ......................
finally:
bloc d’instructions ......................
Exception
• Exemples
try:
try:
print foo
print 5/0
except NameError, e:
except ZeroDivisionError, e:
print e #
print e
name 'foo' is not defined
try:
foo = [0,1,2]
print 5%0
try:
except ZeroDivisionError, e:
print foo[3]
print e
except IndexError, e:
print e list index out of range