Intro Python DakarTech
Intro Python DakarTech
ENVIRONNEMENT DE du langage
2 Atef Boujelben
Caractéristiques de base de
Langage Python PYTHON(1)
3 Atef Boujelben 4 Atef Boujelben
Python:
Python 1.0 – Janvier 1994
Python 2.0 – Octobre 2000 est portable sur différentes plateformes tels que Unix et
Windows.
Python 2.5 – Septembre 2006
Python 2.6 - Octobre 2008, est libre (free): utilisation sans restriction dans les projets
commerciaux
Python 2.7 – Juillet 2010
Révolution du langage python et apparition de la version 3 :
est dynamiquement typé: tout objet manipulable par le
Python 3.0 - Décembre, 2008
programmeur possède un type bien définit à l'exécution, qui n'a pas
Python 3.4 – Mars, 2014
besoin d'être déclaré à l'avance. Python gère lui-même l’espace
Python 3.6.3- Octobre, 2017
mémoire disponible.
Python 3.6.6-Mars 2018
Caractéristiques de base de Caractéristiques de base de
PYTHON (2)
5
PYTHON (3)
6
Atef Boujelben Atef Boujelben
III Fortran, C, Pascal Il existe des compilateurs en Python qui produisent un code
V Python
Quel Environnement de développement
Domaines d’applications intégré IDE choisir ? (1)
9 Atef Boujelben 10 Atef Boujelben
Python, est un langage de programmation de plus en plus populaire Plusieurs IDE sont disponibles
utilisé entre autres: IDLE: IDLE est un environnement de développement intégré pour
le langage Python (bon choix pour débutant).
WEB: google (pure Python et Django), youtube, mozilla, yahoo, ebay
(Plone), Nokia (Plone) IDLE propose un certain nombre d'outils :
Scientiphique : la NASA (pure Python et Plone), la CIA (Plone), CBS un éditeur de texte (pour l’écriture de script) avec une coloration
(Zope), etc. syntaxique et une indentation automatique.
L’enseignement principalement dans plusieurs pays un interpréteur (pour exécuter le programme)
Un débogueur (pour tester le programme) Les différentes versions de Python (pour Windows, Linux, etc.),
son tutoriel original, son manuel de référence, la documentation
Il existe d'autres IDE pour Python : Eclipse/Pydev, NetBeans, des bibliothèques de fonctions, etc. sont disponibles gratuitement,
Spyder, Eric... à partir du site officiel: [Link] .
Exemple :
Exécution: chift+entrée
Un objet ne peut changer ni d’identité ni de type Les types élémentaires intrinsèques (built- in)
Le NONETYPE: seule valeur possible None (c’est la valeur
Un même objet peut être référencé sous
retournée par une fonction qui ne retourne rien)
plusieurs noms
Le type BOOL : deux valeurs possibles True et False (1/0)
>>> x=3
Les types numériques int, float, complex
>>> y=3
>>> x,id(x),type(x) Le type chaine de caractère : la classe str
(3, 505626136, <class 'int'>)
x
>>> y,id(y),type(y) 3
(3, 505626136, <class 'int'>) y 505626136 Le type d’un objet détermine :
>>> x is y
les valeurs : domaine de définition
True
>>> x==y les opérations
True
Les types élémentaires(3) Les types élémentaires(4)
29 Atef Boujelben 30 Atef Boujelben
Le type de données entiers: le type int n’est limité en taille que par la Le type entier : <classe int> Les opérations arithmétiques +,
,*,**,/,//, %, divmod
mémoire de la machine >>> x=3
Exemple: >>> y=6 >>> z=x+y
9
>>> type(x),type(y) >>> z
(<class 'int'>, <class 'int'>) 9
>>> x-y
-3
>>> x*y
18
>>> x**y
729
Une instruction se termine par un retour à la ligne.
Le type booléen : class Bool Les opérations logiques and, or, not…
La classe Bool hérite de la classe int >>> B and E
>> x=3 ; y=4 False
>>> B=x==y >>> B or E
>>> B True
False >>>int(True)
>>> E=x<y 1
>>> E >>>int(False)
True 0
Les types élémentaires(11) Import de modules(1)
37 Atef Boujelben 38 Atef Boujelben
>>> [Link](5.7889) #partie entière supérieur 2eme manière : Utilisation d’un alias
6 Syntaxe:
>>> [Link](7.8989) #partie entière inférieur >>>import nom_module as alias
7 Exemple:
>>> [Link](2)
1.4142135623730951
Import de modules(4) Import de modules(5)
41 Atef Boujelben 42 Atef Boujelben
3eme Manière : Importation de toutes les fonctions d’un module La troisième manière représente l’avantage d’accéder directement
- Identité
- Type Exemple:
- Données >>> a, b = 4, 8.33
>>> a
- L’identité et le type d’un objet sont inchangeables.
- Une fois l’objet n’est plus référencé, il est détruit automatiquement. 4
- Les identificateurs au format __nom__ sont réservés à l’interpréteur >>> b
Python 8.33
Instructions Elémentaires: Instructions Elémentaires:
Affectation(3) Affectation(4)
45 Atef Boujelben 46 Atef Boujelben
Exemple :
>>> x = y = 7
>>> x
7
>>> y
7
Syntaxe
>>> n = 7 # donner à n la valeur 7
nom Opérateur= valeur ou expression 48
>>> msg = "Quoi de neuf ? " # affecter la valeur "Quoi de neuf ?" à msg
Exemple : >>> k = 3.6 # assigner sa valeur à la variable k
Mémoire
@
n 7 en binaire
@
msg « quoi de neuf » en binaire…
@
k 3,6 en binaire
.
.
.
Afficher la valeur d'une variable(1) Afficher la valeur d'une variable(2)
49 Atef Boujelben 50 Atef Boujelben
Paramètres Optionnels
Le descripteur vers lequel
print envoie ces données print('Ceci est une chaine')
(par défaut : l’écran)
print( "Ceci est une chaine")
print(value,
< ..., sep=' ', end='\n', file=[Link]) print( """Ceci est une chaine""") ou print('''Ceci est une chaine''')
Ecrire l’instruction qui permet de saisir un entier x. On procéde de la même manière pour la saisie de valeurs de
Diviser x par 2. Qu’est ce que vous remarquez? types booléen (bool) ou réel (float).
En utilisant : int
Array
séquence(1) séquence(2)
61 Atef Boujelben 62 Atef Boujelben
Pour recevoir une copie de liste indépendante, plusieurs manières [Link](x) ajouter un élément à une liste
existent:
>>> L2=L[:] [Link](L) ajouter des éléments à une liste
>>> id(L),id(L1),id(L2) [Link](i,x) insérer un élément à une place précise
(46713952, 46713952, 37856880)
[Link](x) supprimer la première occurrence d’un élément
Ou encore
>>>from copy import * [Link](i) retirer un élément en position donnée et le retourner
>>> L3=copy(L) [Link](x) avoir la position de la première occurrence d’un élément
>>> id(L), id(L1),id(L2), id(L3),
[Link](x) avoir le nombre d’occurrences d’un élément
(46713952, 46713952, 37856880, 46752632)
Ou encore [Link]() trier les éléments d’une liste
>>>L4=deepcopy(L) [Link](reverse=True) trier les éléments d’une liste dans l’ordre inverse
>>> id(L),id(L4)
(46713952, 48780672) [Link]() inverser l’ordre dans la liste
L3=copy(list) Copier le liste
Les chaînes de caractères(1) Les chaînes de caractères(2)
73 Atef Boujelben 74 Atef Boujelben
Une chaine de caractères est une séquence de caractères unicode. >>> ch="bonjour"
>>> len(ch)
la classe str, >>> ch_vide=""
7
Syntaxe: C’est une séquence de caractères entre simple, double ou >>> ch_n_vide=" "
>>> ch[:3]
triple côtes . >>> ch_vide==ch_n_vide
'bon‘
Exemple: False
>>> ch1=‘Bonjour' >>> ch[3:]
>>> ch[0]
>>> type(ch1) 'jour'
<class 'str'> 'b'
>>> ch_vide=" >>> ch[2:5]
>>> ch[-1]
>>>ch_vide1= "" 'njo'
>>> ch=''' ''' 'r‘
>>>ch_vide==ch_vide1 >>> ch[::-1]
True 'ruojnob'
strip(chars='\t\n\r\x0b\x0c')
upper() : retourne une chaîne de caractères dans laquelle ont été supprimés
permet de convertir la chaine en majuscule tous les caractères spécifiés par l’argument chars, en début et fin
>>> [Link]() # le résultat est une nouvelle chaîne de chaîne. Par défaut, chars contient tous les espaces
'TOTOTITI‘ >>> ch='bonjour tout le monde \n'
>>> ch >>> [Link]()
'TotoTiTi‘ 'bonjour tout le monde‘
split () La méthode split transforme une chaine de caractères en
lower(): liste.
permet de convertir la chaine en minuscule >>> [Link]()
>>> [Link]() ['bonjour', 'tout', 'le', 'monde']
'tototiti' eval(): sert à évaluer une chaine de caractère comme une
>>> ch=[Link]() expression python
>>> ch a=3
'TOTOTITI’ >>> print (eval("a == 2"))#False
>>> print (eval("2 + 4"))# 6
Méthode/fonction Signification
Méthodes pour les chaînes(4) isupper() , islower() retournent True si la chaîne ne contient respectivement que des majuscules/
minuscules
istitle() retourne True si seule la première lettre de chaque mot de la chaîne est en
79 Atef Boujelben 80 Atef Boujelben
majuscule
isalnum(), isalpha(), retournent True si la chaîne ne contient respectivement que des caractères
Les méthodes (split, join): split permet de découper une chaîne en isdigit() et isspace() alphanumériques, alphabétiques, numériques ou des espaces
une liste de sous-chaînes. La méthode join est l’inverse de la upper() , lower() permet de convertir la chaine en majuscule et en minuscule
méthode split. strip() retourne une chaîne dans laquelle ont été supprimés tous les caractères
>>> t = "être ou ne pas être, là est la question" spécifiés par l’argument chars, en début et fin de chaîne
split () La méthode split transforme une chaine de caractères en liste.
join La méthode join est l’inverse de la méthode split.
[Link](suffix) Renvoie True si la chaine str se termine par la chaine suffix
[Link](prefix) Renvoie True si la chaine str commence par la chaine prefix
# joint: joindre les chaînes de la liste, avec un séparateur vide [Link](old,new[,n]) Renvoie une chaine obtenue en remplaçant old par new, au plus n fois
[Link](sub) Indice de la première occurrence de sub(-1 si non trouvé)
[Link](sub) Comme find , mais erreur ValueError si non trouvé
# joint: joindre les chaînes de la liste en séparant par * [Link](sub) Comme index, mais de la dernière occurrence
[Link](sub) Indice de la dernière occurrence de sub (et -1 si non trouvé)
eval() sert à évaluer une chaine de caractère comme une expression python
Les séquences : Les tuples Les séquences : Les tuples (2)
81 Atef Boujelben 82 Atef Boujelben
# un tuple défini en compréhension Les chaînes et les Tuples n’étant pas modifiable, mais il est possible
>>> t = tuple(x*x for x in range(1,9)); t ; id(t) de migrer vers des listes au moyen de l’instruction suivante list:
(1, 4, 9, 16, 25, 36, 49, 64)
>>> t=(1,2,3)
53220816 >>> t=list(t)
>>> type(t)
# concaténation de deux tuples <class 'list'>
(1,2,3)+(4,5) >>> [Link](5)
(1, 2, 3, 4, 5) >>> t
[1, 2, 3, 5]
Remarque: Les méthodes appliquées à un tuple T sont : >>> ch=‘’Bonjour ‘’
len (T), a in T, [Link](a), [Link](a) >>>list (ch)
['b', 'o', 'n', 'j', 'o', 'u', 'r']
ARRAY(1) ARRAY(2)
85 Atef Boujelben 86 Atef Boujelben
Syntaxe
array(object, dtype=None, copy=True, order=None, subok=False,
ndmin=0) order : (optionnel) (C (par défaut), F ou A) concerne l’ordre de
parcours du tableau dans la mémoire.
object : le tableau
Un dictionnaire(3) Un dictionnaire(4)
91 Atef Boujelben 92 Atef Boujelben
>>> d
>>> help([Link])
{1: 'janvier', 2: 'février', 3: 'mars'}
Help on method_descriptor:
>>> len(d)
keys(...)
3
[Link]() -> a set-like object providing a view on D's keys
>>> [Link]()
>>> d.__setitem__(4,'avril')
dict_items([(1, 'janvier'), (2, 'février'), (3, 'mars')])
>>> d
>>> [Link]()
{1: 'janvier', 2: 'février', 3: 'mars', 4: 'avril'}
dict_keys([1, 2, 3])
>>> [Link](6)
Traceback (most recent call last): >>> from copy import *
File "<pyshell#58>", line 1, in <module> >>> d2=copy(d)
[Link](6) >>> d2
KeyError: 6 {1: 'janvier', 2: 'février', 3: 'mars'}
>>> [Link](4)
'avril'
len(dic) Renvoie la longueur du dictionnaire
Un dictionnaire(5) dic[cle] Renvoie la valeur associée à la clé (KeyError si la clé est absente)
dic[cle]=val Crée (ou modifie) une paire clé/valeur
93 Atef Boujelben del
94 dic[cle] Efface une paire clé/valeur Atef Boujelben
cle in dic Renvoie True si la clé est présente dans le dictionnaire, False sinon
Un dictionnaire en “compréhension”, cle not in dic Renvoie True si la clé est absente du dictionnaire, False sinon
[Link]() Efface le contenue du dictionnaire
[Link]() Renvoie une copy du dictionnaire
>>> D = {x:x*2 for x in range(10)}
[Link](cle) Renvoie la valeur associée à la clé, et renvoie None si la cle est absente
>>> D
[Link](cle,def) Renvoie la valeur associée à la clé, et renvoie def si la cle est absente
{0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}
[Link]() Renvoie un itérable pour décrire les couples (clé,valeur) dans une boucle for
[Link]() Renvoie un itérable pour décrire les clés du dictionnaire dans une boucle for
Méthodes/Fonction Méthodes/Fonction
Les structures de contrôle sont les groupes d'instructions qui
[Link](ens2) Renvoie True si ens1 et ens2 sont disjoints
ens1<=ens2 Renvoie True si ens1 est inclus dans ens2
déterminent l'ordre dans lequel les actions sont effectuées dans
ens1<ens2 Renvoie True si ens1 est inclus strictement dans ens2 le programme.
vrai
if condition :
L’instruction if faux
instructions_si_vrai
L’instruction if ..else
if conditions :
L’instruction if .. elif and / or / not
instructions_si_vrai
if conditions : instructions_si_vrai
Le bloc if est comporte une seule
instruction : une seule ligne
L’instruction else L’instruction elif
105 Atef Boujelben 106 Atef Boujelben
vrai
if conditions : C’est l’instruction else : if
else :
instruction(s)_si_faux
if conditions : instruction
else : instruction
Attention à l’Indentation
C’est l’instruction else : if La condition évaluée après l'instruction «if» peut contenir les
opérateurs de comparaison suivants :
La solution doit être : Une des méthodes pour programmer les tâches répétitives est
l'instruction while.
Syntaxe:
while (condition(s)):
Instruction(s)
Exemple:
Commentaires
1. Entrer les commandes ci-dessous
1. Dans notre exemple, si la condition a < 7 est encore vraie, le
>>> a = 0
>>> while (a < 7): # (n'oubliez pas le double point !) corps de la boucle est exécuté une nouvelle fois et le bouclage
... a = a + 1 # (n'oubliez pas l'indentation !) se poursuit.
... a
2. La variable évaluée dans la condition doit exister au préalable (Il
2. Frappez sur <Enter>
faut qu'on lui ait déjà affecté au moins une valeur)
3. Que se passe-t-il ?
4. Changez la valeur a par 8
Structures itératives : Structures itératives :
l'instruction while(4) La Boucle For(1)
117 Atef Boujelben 118 Atef Boujelben
3. Si la condition est fausse au départ, le corps de la boucle n'est La boucle for fonctionne sur les chaînes, les listes, les tuples et
Syntaxe:
Exemple:
for <cible> in <objet>:
>>> for caractere in "bonjour":
<instructions>
print(caractere)
L’instruction break permet de sortir de la boucle instantanément et successifs compris dans une certaine borne dépendant du nombre
L’instruction « continue » saute au début de la boucle la plus 1 paramètre : entiers compris entre 0 et le paramètre
imbriquée. Syntaxe:
« pass » ne fait rien du tout mais, comme on ne peut avoir une for i in range(a):
expression qui n’est suivie de rien, « pass » peut être utilisé pour instructions
combler ce vide.
Le Range(2) Le Range(3)
123 Atef Boujelben 124 Atef Boujelben
Exemple3 :
Exemple2 : >>>L=list(range(5))
>>>L
for i in range(10,20,2): [0,1,2,3,4]
print( i) >>>L1=[]
>>>for k in L:
[Link](k**2)
Ce qui donne: 10 >>> L1
12 [0, 1, 4, 9, 16]
14 >>>ch= ‘azerty’
16 >>>ch1=‘’
18 >>>for c in ch:
ch1=ch1+c*2
>>>ch1
aazzeerrttyy
Le Range(6)
127 Atef Boujelben