Chap2 LE&BI PDF
Chap2 LE&BI PDF
Chap2 LE&BI PDF
6. Types élémentaires
8. Opérations d’entrée/sortie
Dr Zahra KODIA
3/76
AOUINA
1)Historique du langage
Classement TIOBE (Septembre 2016)
Septembre Avril Avril Langage de Ratings Evolution
2016 2015 2014 Programmation
C’est un langage qui inclut tous les types de données, les branchements
conditionnels, les boucles, l’organisation du code en procédures et
fonctions, objets et classes, découpage en modules.
Mode d’exécution : transmettre à l’interpréteur Python le fichier script
«.py »
Python est associé à de très nombreuses librairies très performantes,
notamment des librairies de calcul scientifique (Numpy, SciPy, Pandas,
etc.). De fait, il est de plus en plus populaire, y compris auprès des data-
scientists. Il est plus généraliste que R qui est vraiment tourné vers les
statistiques.
Python est un langage inter-opérable (avec C Cython, Java Jython, C++, Fortran F2Py…)
Python gère ses ressources (mémoire, descripteurs de fichiers...) sans intervention du
programmeur,
◦ par un mécanisme de comptage de références,
Dr Zahra KODIA
10/76
AOUINA
2)Présentation générale de Python
Avantages(3/4)
Python intègre, comme Java ou les versions récentes de C++, un système
d'exceptions,
◦ permettant de simplifier considérablement la gestion des erreurs,
◦ Lorsqu'une exception se produit, l'exécution normale du programme est interrompue et
l'exception est traitée !!
Evolutif, Python est un langage qui continue à évoluer, grâce à une communauté
d’utilisateurs très actifs
Dr Zahra KODIA
11/76
AOUINA
2)Présentation générale de Python
Avantages (4/4)
Langage polyvalent : Nous pouvons presque tout faire avec Python grâce à ses
bibliothèques variées
Utilisé par de grands acteurs dans le monde: La NASA, Google, Youtube,
Mozilla…
De plus en plus utilisé dans la recherche, l’enseignement et l’industrie.
Dr Zahra KODIA
12/76
AOUINA
2)Présentation générale de Python
Domaines d’applications
Python, est un langage de programmation de plus en plus populaire utilisé entre autres:
◦ WEB: Google (pure Python et Django*), Youtube, Mozilla, Yahoo, eBay (Plone**), Nokia (Plone**)
◦ Scientifique : la NASA (pure Python et Plone), la CIA (Plone)… la liste est bien trop longue.
◦ L’enseignement principalement dans plusieurs pays
Dr Zahra KODIA
13/76
AOUINA
3) Environnement de développement intégré
de Python
Plusieurs EDI sont disponibles,
IDLE : est un environnement de développement intégré fourni avec Python (bon
choix pour débutant), IDLE propose un certain nombre d'outils :
◦ un éditeur de texte (pour l’écriture de script) avec une coloration syntaxique, une indentation
automatique et l’auto-complétion*.
• winPython ,
• anaconda V3,
• Python(x,y)..
Dr Zahra KODIA
15/76
AOUINA
4) Mode interactif & mode script
Une fois installé Python (la dernière version 3.5.0) peut être utilisé en deux modes, mode
interactif ou en mode script:
Image extraite du cours de Jean-Luc Charles, Eric Ducasse, Art et Métiers Paris Tech
Dr Zahra KODIA
16/76
AOUINA
4) Mode interactif & mode script
Mode interactif
Les instructions tapées sont exécutées directement par l’interpréteur python, c’est
aussi le mode calculette .
Dr Zahra KODIA
17/76
AOUINA
4) Mode interactif & mode script
Mode script (1/2)
Une nouvelle fenêtre s’ouvre , vous écrivez votre code Python. Il faut enregistrer dans un fichier
d’extension « .py »
Dr Zahra KODIA
18/76
AOUINA
4) Mode interactif & mode script
Mode script (2/2)
Exécution :
Dr Zahra KODIA
19/76
AOUINA
5) Commentaires, Aide et modules en Python
Commentaires
Tout ce qui suit le caractère # est considéré comme un commentaire
et ne sera jamais évalué.
Dr Zahra KODIA
21/76
AOUINA
5) Commentaires, Aide et modules en Python
Import de modules (1/4)
Trois manières d’import de modules
1ère manière:
>>>import math
>>>dir(math)
['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh', 'atan',
'atan2', 'atanh', 'ceil', 'copysign', 'cos',………, 'pi', 'pow', 'radians', 'sin', 'sinh',
'sqrt', 'tan', 'tanh', 'trunc']
>>> math.ceil(7.8989) #partie entière supérieure
8
>>> math.floor(7.8989) #partie entière inférieure
7
>>>help(math.ceil)
Help on built-in function ceil in module math:
ceil(...)
ceil(x)
Return the ceiling of x as an int.
This is the smallest integral value >= x.
Dr Zahra KODIA
22/76
AOUINA
5) Commentaires, Aide et modules en Python
Import de modules (2/4)
2ème manière: Utilisation d’un alias
>>>import math as m
>>>dir(m)
['__doc__', '__name__', '__package__', 'acos', 'acosh', 'asin', 'asinh',
'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos',………, 'pi', 'pow',
'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
>>> m.sqrt(2)
1.4142135623730951
>>> m.tan(m.pi)
-1.2246467991473532e-16
Dr Zahra KODIA
23/76
AOUINA
5) Commentaires, Aide et modules en Python
Import de modules (3/4)
3ème Manière : Importation de toutes les fonctions d’un module
Dr Zahra KODIA
24/76
AOUINA
5) Commentaires, Aide et modules en Python
Import de modules (4/4)
La troisième manière représente l’avantage d’accéder directement aux fonctions mais
représente également l’inconvénient:
◦ d’encombrement de l’espace de noms réservé et,
◦ la possibilité de conflit entre deux fonctions ayant le même identificateur provenant de deux
modules différents !!!
Exemple
>>>from math import *
>>>from numpy import *
◦ Les deux contiennent la fonction sqrt , l’une définie pour les réels l’autre sur les tableaux!
◦ Laquelle sera utilisée ????
Dr Zahra KODIA
25/76
AOUINA
5) Commentaires, Aide et modules en Python
Module math
Parmi les fonctions les plus utiles du module math, on trouve :
Racine carrée : sqrt
Factorielle : factorial
Fonctions trigonométriques : cos, sin, tan, asin, acos, atan
Conversion des angles :degrees, radians
log, exp : log,log10, log2
fonctions d’arrondissement : floor, ceil
troncature : trunc
NB : Le module math stocke aussi la valeur de π et de e.
Non
Mutables
Mutables
Non
Ordonnés Ordonnés
Ordonnés
Tuples
Ensembles
Chaînes de Les listes
Dictionnaires
caractères
Python est un langage dont le typage est automatique. Cela signifie que bien que gérant différents
types, lorsqu'une variable est affectée, l'interpréteur trouvera automatiquement son type.
Dr Zahra KODIA
28/76
AOUINA
6) Les types élémentaires (3/9)
Un objet ne peut changé ni d’identité ni de type !
Quand un objet n’a plus de nom (nombre de référence nul), il est détruit automatiquement:
◦ mécanisme automatique de "ramasse miettes", ou garbage collector.
>>> x = 9 x 9
>>> y = x int
>>> y
>>> x = "abc" x
>>> 9 "abc"
int str
y
Dr Zahra KODIA
29/76
AOUINA
6) Les types élémentaires (4/9)
Dr Zahra KODIA
31/76
AOUINA
6) Les types élémentaires (6/9)
Le type entier : <class int>
>>> pow(x,y) # calcul de x à la puissance y
729
>>> x/y # division réelle
0.5
>>> x//y #quotient de la division entière
0
>>> x%y #reste de la division entière
3
Les opérateurs de comparaison <, <=, !=, ==, >, >=
>>>x==y
False
>>>x>=y
False
>>>x<=y
True
>>>x!=y
True
Dr Zahra KODIA
32/76
AOUINA
6) Les types élémentaires (7/9)
Le type réel: <class float>
>>> x=12/7; y=4.
>>> x;y
1.7142857142857142
4.0
>>> type(x); type(y)
<class 'float'> <class 'float'>
Dr Zahra KODIA
33/76
AOUINA
6) Les types élémentaires (8/9)
Le type réel: <class float>
>>> x**y
8.636401499375259
>>> x/y
0.42857142857142855
>>> x//y
0.0
>>> x%y
1.7142857142857142
>>> x=12/5
>>> x
2.4
>>>int(x)#Passage de réel en entier l’objet retourné est un nouvel objet
2
Dr Zahra KODIA
34/76
AOUINA
6) Les types élémentaires (9/9)
Le type booléen : <class bool>
La classe « bool » hérite de la classe « int »
Dr Zahra KODIA
35/76
AOUINA
7) Affectation des variables et mots réservés (1/4)
Une affectation crée un nom (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
>>>x,id(x),type(x)
(5, 505626168, <class 'int'>)
5
505626168
>>>y,id(y),type(y)
(5, 505626168, <class 'int'>) z
Dr Zahra KODIA
36/76
AOUINA
7) Affectation des variables et mots réservés (2/4)
Nom des variables
Les noms de variables sont des noms qu’on choisit assez librement
Quelques règles pour les noms de variables sous Python :
1. Un nom de variable est une séquence de lettres (a à z , A à Z) et de chiffres, qui doit toujours commencer par
une lettre.
2. Les lettres accentuées, les cédilles, les espaces, les caractères spéciaux tels que $, #, @, etc. sont interdits, à
l'exception du caractère _ (souligné).
3. La casse est significative, Attention : Mariem, mariem , MARIEM sont donc des variables différentes. Soyez
attentifs !
4. Prenez l'habitude d'écrire l'essentiel des noms de variables en caractères minuscules (y compris la première
lettre). Il s'agit d'une simple convention, mais elle est largement respectée. N'utilisez les majuscules qu'à
l'intérieur même du nom, pour en augmenter éventuellement la lisibilité, comme dans TableDesMatieres.
Dr Zahra KODIA
37/76
AOUINA
7) Affectation des variables et mots réservés (3/4)
Assignation
En Python comme dans de nombreux autres langages, l'opération d'affectation est représentée par le signe égal :
>>> msg = "Quoi de neuf ?" # affecter la valeur "Quoi de neuf ?" à msg
Dr Zahra KODIA
40/76
AOUINA
8) Les opérations d’entrée/sortie (2/4)
Opération d’affichage : print()
>>> 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;
Dr Zahra KODIA
41/76
AOUINA
8) Les opérations d’entrée/sortie (3/4)
Opération de lecture : input()
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'>
Dr Zahra KODIA
42/76
AOUINA
8) Les opérations d’entrée/sortie (4/4)
Opération de lecture : input()
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 réel 23
>>>>>> print(x, "de type", type(x))
23.0 de type <class 'float'>
Dr Zahra KODIA
43/76
AOUINA
9)Structures conditionnelles & Itératives
Principe d’indentation
De manière générale, un bloc contient tout le code avec une même indentation.
Dr Zahra KODIA
45/76
AOUINA
9)Structures conditionnelles & Itératives
Les structures conditionnelles (2/4)
Ecrire un programme qui saisit un nombre et teste si l’entier est nul, pair ou impair
Dr Zahra KODIA
46/76
AOUINA
9)Structures conditionnelles & Itératives
Les structures conditionnelles (3/4)
Application: Résolution d’équation de 2nd degré
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 !
Dr Zahra KODIA
47/76
AOUINA
9)Structures conditionnelles & Itératives
Les structures conditionnelles (4/4)
Dr Zahra KODIA
48/76
AOUINA
9)Structures conditionnelles & Itératives
Les structures itératives : Boucle For (1/5)
Syntaxe:
for i in range(a): for i in range(a,b,c):
instructions instructions
Dr Zahra KODIA
49/76
AOUINA
9)Structures conditionnelles & Itératives
Boucle For (2/5)
Exemples:
(a) (b)
(c) (d)
Dr Zahra KODIA
50/76
AOUINA
9)Structures conditionnelles & Itératives
Boucle For (3/5)
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 >>> a = [‘Zero', ‘Un', ‘Deux',
[0,1,2,3,4] ‘Trois', ‘Quatre']
>>>L1=[]
>>>for k in L:
L1.append(k**2) >>> for i in range(len(a)):
>>>L1 print(i, a[i])
L1[0, 1, 4, 9, 16] ...
>>>ch=”azerty” 0 Zero
>>>ch1=''
>>>for c in ch:
1 Un
ch1=ch1+c*2 2 Deux
aazzeerrttyy 3 Trois
4 Quatre
Dr Zahra KODIA
51/76
AOUINA
9)Structures conditionnelles & Itératives
Boucle For (4/5)
#utilisation de l’instruction « continue »
for num in range(2, 10):
if num % 2 == 0:
print("Un nombre paire", num)
continue
print("Un nombre impaire", num)
#utilisation de l’instruction « break» et « else »
for n in range(2, 10):
print("n=",n)
for x in range(2, n):
print("x=",x)
if n % x == 0:
print(n, ‘=', x, '*', n//x)
break
else: # exécuté à la fin normale de la boucle
print(n, ‘est un nombre premier')
Dr Zahra KODIA
52/76
AOUINA
9)Structures conditionnelles & Itératives
Boucle For (5/5)
Construction de listes par compréhension:
>>> 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)]
Dr Zahra KODIA
53/76
AOUINA
9)Structures conditionnelles & Itératives
Boucle tant que
Syntaxe:
Remarque:
while condition: Il existe l’instruction « pass » pour rien faire
instructions1
Exemple:
else: while True:
instructions2 pass # Busy-wait pour une
interruption clavier (Ctrl+C) ...
Exemple :
i=1
while i<=5:
print(i)
i +=1
else:
print("Fin boucle")
Dr Zahra KODIA
54/76
AOUINA
9)Structures conditionnelles & Itératives
Utilisation du break, continue, pass
Ces trois instructions permettent à l’utilisateur d’avoir un plus grand contrôle de
la boucle.
Comme en C, l’instruction « break » permet de sortir de la boucle
instantanément et de passer à la suite. Elle annule le passage dans la boucle
else.
L’instruction « continue » saute au début de la boucle la plus imbriquée.
« pass » : Si à un endroit on a syntaxiquement besoin d'un bloc mais qu'il n'y
a rien à faire, on peut utiliser l'instruction pass, qui justement ne fait rien
Exemple
if condition:
pass
else:
instruction ...
Dr Zahra KODIA
56/76
AOUINA
Application: Jeu de devinette (2/2)
print("Jeu de devinette")
from random import *
c=randint(1,100)
x=int(input("devinez un entier entre 1 et 100: "))
i=1
while x!=c:
if x<c:
print("votre entier est plus petit que
l'entier caché")
else:
print("votre entier est plus grand que
l'entier caché")
i+=1
x=int(input("devinez un entier entre 1 et 100:
"))
print("Bravoooo, vous avez deviné au bout de ", i,
"tentatives")
Dr Zahra KODIA
57/76
AOUINA
Application 2 (1/2)
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
Dr Zahra KODIA
58/76
AOUINA
Application 2 (2/2)
Dr Zahra KODIA
59/76
AOUINA