Vous êtes sur la page 1sur 44

Qui ne tente rien

n’a rien !
Proverbe Français

Python
Le language….

Part II
S.DARRAGI

S.Darragi
Le langage Python: L’affectation
Une affectation crée un 2nom (identificateur,
variable) qui référence un objet (les identifiants
au format __nom__ sont réservés à
l’interpréteur Python)
C’est l’objet qui porte le type et les données
(valeur, pour un objet numérique).
Un même objet peut être référencé sous
plusieurs noms (alias). x

>>>x=5
>>>y=5
y
5
505626168
>>> x,id(x),type(x),
(5, 505626168, <class 'int'>)
>>>y,id(y),type(y) z
(5, 505626168, <class 'int'>)

S.Darragi
Le Langage ….
L’affectation (suite)

Il s’agit d’attribuer une


étiquette à un objet !
L’objet 3 prend le nom
x

S.Darragi
Le Langage ….
L’affectation (suite)
4

Affectation multiples !!

Initialisation multiples !

Permuter le contenu de deux variables

S.Darragi
Le Langage ….
L’affectation (suite)
5

Autre Utilisation des opérateurs !


>>> x=8 >>> x%=2
>>> x+=5 #équivalent à x=x+5 >>> x
>>> x 1
13 >>> x/=3
>>> x-=2 >>> x
>>> x 0.3333333333333333
11 >>> Affichage scientifique
>>> x*=3 print("%5.3f"%x)
>>> x 0.333
33
>>> x**=2
>>> x
1089

S.Darragi
Le Langage ….

L’affectation (suite)
6

>>> x,y=45,23
>>> id(x),id(y)
(505626808, 505626456)
>>> x,y=y,x
>>> x,y
(23, 45)
>>> id(x),id(y)
(505626456, 505626808)
>>>

S.Darragi
Le Langage ….

Les opérations d’entrée/ sortie


7
Opération d’affichage : print() Afficher sur écran
>>> print('ceci est un message')
ceci est un message
>>> print("ceci est un message")
ceci est un message
>>> print("ceci un message \n avec retour à la ligne")
ceci un message
avec retour à la ligne
>>> print(""" Ceci est un message
sur plusieurs lignes
avec beaucoup d'espaces et des sauts de
ligne""")
Ceci est un message
sur plusieurs lignes
avec beaucoup d'espaces et des sauts de ligne
S.Darragi
Le Langage ….

Les opérations d’entrée/sortie (suite)


8

>>> x=10;y=10; z=10;


>>> print (x, y, z, sep=' ');
10 10 10
>>> print (x, y, z, sep=';');
10;10;10
>>> print (x, y, z , sep='\n');
10
10
10
>>> print ('x =',x,'y =',y, 'z =', z, sep= ' ' , end =';');
x = 10 y = 10 z = 10;
sep désigne le caractère de séparation
end désigne le caractère de marquage de fin

S.Darragi
Le Langage ….

Les opérations d’entrée/ sortie (suite)


9
 Opération de lecture : input()
>>> x=input("saisir : ")
Saisir : 3498392483
>>> print("la saisie",x, "est de type",type(x))
la saisie 3498392483 est de type <class 'str'>
Il est toutefois possible de convertir la quantité saisie
en entier, réel ou même booléen au moyen de int, float,
et bool
>>> x=int(input("saisir un entier"))
saisir un entier 12
>>> print(x, "de type", type(x))
12 de type <class 'int'>
Ou encore en réel
>>> x=float(input("saisir un réel"))
saisir un entier 12
>>>>>> print(x, "de type", type(x))
S.Darragi
Le Langage ….

Les structures conditionnelles


10
Attention à l’indentation !!!
if condition1:
instruction 1
elif condition2:
instruction 2
elif condition3:
instruction 3
instruction 4
else :
instruction 5
instruction 6

S.Darragi
Le Langage ….

Les structures conditionnelles (suite)


11
Ecrire un programme qui saisi un nombre et teste si l’entier
est nul, pair ou impair

S.Darragi
Le Langage ….
Les structures conditionnelles
Applications
12

Ecrire un programme qui saisi trois entiers


a, b et c et résout dans l’ensemble C
l’équation de second degré ax2+bx+c= 0.
On discutera tous les cas possibles pour a, b
et c !

S.Darragi
Application 2 Résolution d’équation de 2nd degré
13

S.Darragi
Les structures itératives
Les non conditionnelles : Boucle For
14
Syntaxe Une boucle for permet de
For i in range(a): répéter un ensemble
instructions
d’instruction un certain
For i in range(a,b): nombre de fois connu à
instructions l’avance !
For i in range(a,b,c):
instructions

For i in iter:
instructions

NB: range (a) désigne l’intervalle [0,a[


range (a,b) désigne l’intervalle [a,b[
range (a,b,c) désigne l’intervalle [a,b[ par pas entier égal à c

Le quatrième cas est un parcours par élément que nous pourrons effectuer
avec les itérables tel que les listes, les tuples, les chaînes de caractères ou
même les fichiers…
S.Darragi
Exemple:
A 15 B

Continue : saute l’itération


concernée
C D

S.Darragi
L’instruction for …. in
16
L’instruction for in : permet d’itérer sur le contenu d’une liste,
d’un tuple, les caractères d’une chaîne ou même un fichier …
>>>L=list(range(5))
>>>L
[0,1,2,3,4]
>>>L1=[]
>>>for k in L:
L1.append(k**2)
L1= =[0, 1, 4, 9, 16]
>>>ch=”azerty”
>>>ch1=''
>>>for c in ch:
ch1=ch1+c*2  aazzeerrttyy
S.Darragi
Construction de listes par compréhension !!
17

>>> L= [i for i in range(1,21,2)]


>>>L
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>>L=[(i,j) for i in range (1,5) for j in range (1,5)]
>>>L
[(1, 1), (1, 2), (1, 3), (1, 4), (2, 1), (2, 2), (2, 3), (2, 4), (3,
1), (3, 2), (3, 3), (3, 4), (4, 1), (4, 2), (4, 3), (4, 4)]
>>>L=[(i,j) for i in range (1,5) for j in range (1,5) if (i+j)
%2 ==0]
>>>L
[(1, 1), (1, 3), (2, 2), (2, 4), (3, 1), (3, 3), (4, 2), (4, 4)]
S.Darragi
Construction de dictionnaire par
compréhension
18

>>> Alphabet = {i:chr(i+65) for i in range(26)}


>>> Alphabet
{0: 'A', 1: 'B', 2: 'C', 3: 'D', 4: 'E', 5: 'F', 6: 'G', 7:
'H', 8: 'I', 9: 'J', 10: 'K', 11: 'L', 12: 'M', 13: 'N',
14: 'O', 15: 'P', 16: 'Q', 17: 'R', 18: 'S', 19: 'T', 20:
'U', 21: 'V', 22: 'W', 23: 'X', 24: 'Y', 25: 'Z'}

S.Darragi
Les structures itératives
conditionnelles : Boucle tant que
19
 Syntaxe
while condition :
instructions
 Exemple
i=1
while i<=5: La boucle tant que permet
print(i) d’exécuter un ensemble
i+=1 d’instructions tant que la
1 condition est vraie
2
3
4
5
S.Darragi
Deuxième forme de la boucle while
20

while True :
instructions
if instruction :
break
Exemple
while True :
x=int(input(‘donner un entier >0’))
if x>0:
break

S.Darragi
Application Jeu de devinette
21

Ecrire un programme devinette qui permet de deviner un


entier généré par le programme de façon aléatoire
(compris entre 1 et 100), on indiquera à l’utilisateur si
l’entier introduit est plus grand ou plus petit que l’entier
caché.
Un bravo sera affiché lorsqu’il aurait deviné l’entier, on lui
indiquera également au bout de combien de tentatives il est
parvenu à trouver le nombre.
Rque: pour générer un entier aléatoire il faut importer le
package random, puis utiliser la fonction randint(a,b) où a
et b désigne l’intervalle [a,b]dans lequel l’entier aléatoire
sera tiré
>>> import random as r
>>>x=r.randint(1,25) ici x sera un entier dans [1,25]

S.Darragi
Programme devinette version1
22

S.Darragi
Application 2
23

Modifier le programme précédant en


ajoutant 3 niveaux de difficulté (difficile
(4 tentatives), Moyen (7 tentatives) ou
facile (12 tentatives))
Le joueur choisi un niveau de difficulté, un
nombre d’essai lui est alors attribué, si ce
dernier épuise ses essais il aurait échoué
et un message sera affiché.
Remarque: On lui indiquera à chaque fois
le nombre de tentatives restantes

S.Darragi
24

S.Darragi
Les sous programmes
25
Un programme sous Python se déclare à l’aide de l’instruction
def :
Sytnaxe
def nom_programme(liste_paramètres d’entrée p1,p2…):
instructions
return(résultat)
Exemple
def saisi():
""" cette fonction permet de saisir un entier >0
et retourne cet entier
>>>N=saisi()
"""
while True :
x=int(input("saisir un entier >0"))
if x>0:
break
return(x)
S.Darragi
Les sous programmes (suite)
26

>>> x=saisi()
saisir un entier >0 -5
saisir un entier >0 45
>>> help(saisi)
Help on function saisi in module __main__:

saisi()
cette fonction permet de saisir un
entier >0
et retourne cet entier

S.Darragi
Les sous programmes: Passage d’arguments
27
 Les arguments non modifiables miment le
comportement du passage par valeur, mais ne
sont pas recopié (gain de temps ), c’est-à-dire
un argument non mutable modifié au sein du
programme n’aura aucune incidence sur le
paramètre effectif (les objets de types
élémentaires et les itérables non mutables tel
que le tuples et les chaînes )

S.Darragi
Les sous programmes: Passage d’arguments
28

 Les arguments modifiables se comportent comme


des arguments passés par référence ! C’est-à-
dire toute modification sur le paramètre formelle
aura une incidence sur le paramètre effectif.
Nous trouverons les itérables mutables tel que les
listes, les dictionnaires, les ensembles.

S.Darragi
Les sous programmes -exemples
29

>>> #trace d’éxécution


saisir un entier12
12
saisir un entier34
saisir un entier12
34 12
>>> A
12
>>> B,C
(34, 12)

S.Darragi
Les sous programmes -
Passage de paramètres: exemples
30

S.Darragi
Les sous programmes -
Passage de paramètres: exemples
31

S.Darragi
Les sous programmes -
Passage de paramètres par
32
valeur: exemples

S.Darragi
Les sous programmes -
Passage de paramètres: Exemples
33

>>>Saisir un entier > 0: 23


Traceback (most recent call last):
File "C:\Users\sousou\Desktop\livre python\Code Python\saisi.py", line
71, in <module>
A=double_4(A,B)
NameError: name 'B' is not defined
 On ne peut passer en entrée un paramètre non déjà défini

S.Darragi
Les sous programmes -
Passage de paramètres par référence :
Exemple
34

>>> #trace d’éxécution


[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5, 45]
Même si la fonction n’admet pas de return la liste (objet mutable passé par
réference) un fois modifié au sein du programme la modification se répercute
sur les paramètres effectifs

S.Darragi
Les sous programmes -
Passage de paramètres
35
par défaut:

S.Darragi
Variables locales vs variables globales
36

Variable Locale: Une variable locale est une


variable interne à la procédure et n’est visible
qu’à l’intérieur de celle-ci. Les valeurs des
variables locales ne sont donc pas
communiquées à l’extérieur. Une variable
locale n’a plus d‘existence à la terminaison du
programme.
Variable globale : toute variable définie à
l'extérieur des fonctions, connue et utilisable
partout dans le fichier où elle est définie, en
particulier dans n'importe quelle fonction de
ce fichier.

S.Darragi
Variables locales vs variables globales
37

S.Darragi
Fonction lambda
38
Lorsqu’il s’agit d’expression mathématique Python offre
un deuxième outil relatif à la déclaration de fonction
définie par une expression simple, cet outil est la
fonction lambda
f=lambda x:x**2
X=list(range(11))
Y=[]
for e in X:
Y.append(f(e))
print(X,'\n',Y)
>>>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

S.Darragi
Fonction map et filter
39

map
>>>L=[i for i in range(20)]
>>> f=lambda x:2*x
>>> list(map(f,L))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30,
32, 34, 36, 38]
filter
>>> L=[i for i in range(20)]
>>> g=lambda x:x>10
>>> list(filter(g,L))
[11, 12, 13, 14, 15, 16, 17, 18, 19]

S.Darragi
Gestion des erreurs
la clause TRY….EXCEPT
40
try:
instruction_à_faire
except <<type_exception_optionnel>>
instruction_à_exécuter_si_une_exception_se_déclenche

• D’abord, la clause d’essai (clause try : les


instructions entre les mots-clés try et
except) est exécutée.
• S’il ne se produit pas d’exception, la clause d’exception
(clause except) est ignorée, et l’exécution du try est
terminée.
• Si une exception se produit à un moment de l’exécution
de la clause d’essai, le reste de la clause try est ignoré.

S.Darragi
Gestion des erreurs
la clause TRY….EXCEPT
41
En cas d’exception, si son type correspond à
l’exception donnée après le mot-clé except, la
clause except est exécutée, puis l’exécution
reprend après l’instruction try.
–Si une exception se produit qui ne
correspond pas à l’exception donnée dans la
clause except, elle est renvoyée aux
instructions try extérieures, s’il n’y a pas de
prise en charge, il s’agit d’une exception non
gérée et l’exécution est arrêtée avec un
message, comme vu précédemment.
S.Darragi
Gestion des erreurs
la clause TRY….EXCEPT
42

Exemple 1
def saisi_controlée():
x=-1
while x<0:
try :
x=int(input("donner un entier"))
if x>0:
break
except:
print("erreur de saisie, saisissez un entier SVP")

x=saisi_controlée()

S.Darragi
Try… except
Exemple..
43

S.Darragi
44

S.Darragi

Vous aimerez peut-être aussi