Cours 1 Python
Cours 1 Python
Dr Pascal FAYE
Introduction
Principales caractéristiques
• Interprété, multi-paradigme et multiplateformes.
• Favorise la programmation impérative structurée, fonctionnelle et orientée objet.
• Typage dynamique fort, d'une gestion automatique de la mémoire par ramasse-miettes
et d'un système de gestion d'exceptions ; il est ainsi similaire à Perl, Ruby, Scheme,
Smalltalk et Tcl.
Portable
Python est portable entre les différentes variantes de Unix ainsi que sur les S.E
propriétaires comme Mac OS et les différentes versions de Windows.
Gratuit
•Python est placé sous Général Public License. Il est facilement à télécharger sur www.python.org
•Sa première version est du 20 février 1991, par Guido van Rossum.
•Extension de fichier: py, pyc, pyd, pyo, pyw et pyz.
Modulable
Python permet de séparer les programmes en modules qui peuvent être réutilisés dans
d'autres programmes en Python
Orienté Objet
Python est orienté-objet. Il supporte l'héritage multiple et la surcharge des opérateurs.
Syntaxe aisée
La syntaxe de Python est très simple et, combinée à de nombreux types de données
évolués (comme les listes, dictionnaires, tuples...), ce qui conduit à des programmes à la
fois très compacts et très lisibles. De plus, Python ne nécessite aucune déclaration de
variable. Les variables sont créées lors de leur première assignation.
3 Dr Pascal FAYE 14/02/2024
Introduction
Peu d’erreurs…
Tout comme Java ou Ada, Python possède un système d’exception qui
facilite la gestion des erreurs.
Les instructions :
les expressions :
Il peut s’agir de simples équations, qu’on utilise avec des opérateurs arithmétiques,
ou de fonctions, qui sont appelées avec des parenthèses. Les fonctions peuvent ou
non accepter une entrée et retourner ou non une valeur.
>>> 3 - 5
-2
La fonction abs prend en entrée un nombre et
>>> abs(-7)
retourne sa valeur absolue.
7
>>> _ Le caractère souligné correspond à la dernière
7 expression évaluée.
>>>
Il existe 2 cas particuliers où une instruction peut s’étaler sur plusieurs lignes
sans avoir besoin de barres obliques inverses :
Lorsqu’elle utilise des opérateurs comme les parenthèses, les crochets
ou les accolades.
Lorsque le caractère de retour à la ligne est inséré dans une chaîne
entourée de guillemets triples.
>>> print '''Place >>> print """Place
aux guillemets triples.''' aux guillemets triples."""
Place Place
aux guillemets triples. aux guillemets triples.
>>> >>>
16 Dr Pascal FAYE 14/02/2024
Généralités et premiers pas avec Python
>>> -2 + 5; print 5 - 2
3
3
>>>
Avec la division: Si les opérandes sont tous deux des entiers, la partie entière du
résultat de la division sera retenue.
Autrement, il s’agira d’une véritable division réelle avec comme résultat une
valeur réelle.
18 Dr Pascal FAYE 14/02/2024
Généralités et premiers pas avec Python
Identificateur de variable
L’identificateur doit indiquer le rôle joué par cette variable; il faut éviter d’utiliser
des noms qui n’évoquent rien. Ex. : Rayon au lieu de x.
Règles à respecter pour les noms de variables
Une séquence de lettres (a → z, A → Z) et de chiffres (0 à 9) qui doit toujours
commencer par une lettre. Le symbole _ est considéré comme une lettre.
Aucune lettre accentuée, cédille, espace, caractère spécial à l’exception
du caractère souligné _.
Les minuscules et les majuscules sont des lettres différentes.
Éviter d’utiliser le symbole _ comme premier caractère car il peut être utilisé pour
définir des entités spéciales pour Python (nous y reviendrons plus loin).
23 Dr Pascal FAYE 14/02/2024
Généralités et premiers pas avec Python
Bien que la longueur des identificateurs ne soit plus un problème dans les
langages de programmation d’aujourd’hui, utilisez des noms de taille
raisonnable ayant une signification.
Il peut exister des limites qui peuvent changer d’un interpréteur à l’autre.
24 Dr Pascal FAYE 14/02/2024
Généralités et premiers pas avec Python
Opérateur d’affectation ( = )
Syntaxe : identificateur_de_variable = expression
Note : Les affectations ne sont pas des expressions; elles n’ont pas
de valeurs inhérentes mais, il est permis d’enchaîner
x plusieurs
affectations.
>>> x = 1
avant 1
>>> y = x = x + 1
>>> print x, y x y
22
>>> après 2 2
Opérateur d’affectation ( = )
Note : Pour définir le type des variables avant de pouvoir les utiliser, il suffit
d’assigner une valeur à un nom de variable pour que celle-ci soit
automatiquement créée avec le type qui correspond le mieux à la valeur
fournie. Python possède donc un typage dynamique et non un typage
statique (C++, JAVA).
>>> x = 5.0
>>> y = 10.0 >>> x, y = 10, 20
>>> x, y, z = x + y, x - y, 25 >>> print x, y
>>> print x, y, z 10 20
15.0 -5.0 25 >>> x, y = y, x
>>> u = v = 1. >>> print x, y
>>> u, v, w = u + w, v + w, 3.4 20 10
Traceback (most recent call last): >>>
File "<pyshell#6>", line 1, in <module> Permutation de variables sans
u, v, w = u + w, v + w, 3.4 utiliser de variable temporaire.
NameError: name 'w' is not defined
28 Dr Pascal FAYE 14/02/2024
Généralités et premiers pas avec Python
Opérateurs et expressions
>>> x, y = 3, 13
>>> x, y = x ** 2, y % x l’opérateur ** d’exponentiation,
>>> print x, y l’opérateur modulo % .
91
>>> a = 10
>>> a = a + 1
>>> print a
11
Dans une affectation parallèle avec des expressions,
>>>
l’évaluation de celles-ci se fait avec la valeur des
variables avant l’exécution de l’instruction.
>>> x = 5
>>> y = 3
>>> print x - 1 + y ** 2 * 3 / 6
8
>>>
29 Dr Pascal FAYE 14/02/2024
Généralités et premiers pas avec Python
Exemple : >>> x = 5
>>> x **= 2 # Équivaut à x = x ** 2.
>>> x
25
>>> x %= 3
>>> x
1
>>> x //= 2
>>> x
0
>>>
Note : Contrairement au C, Python ne renferme pas les opérateurs ++ et --.
30 Dr Pascal FAYE 14/02/2024
Généralités et premiers pas avec Python
Ces valeurs peuvent alors être stockées dans des variables dont le type correspond
à celui des données entrées.
>>> print "Entrez un entier positif :"
>>> n = input()
>>> print "Deux puissance ", n, " donne comme résultat : ", 2**n
Deux puissance 5 donne comme résultat : 32
La fonction input est soit, sans paramètre ou soit, avec un seul paramètre, une chaîne
de caractères, lequel est un message explicatif destiné à l’utilisateur.
>>> nom = input("Entrez votre nom (entre guillemets) :")
>>> print nom
La chaîne de caractères est entrée entre des apostrophes ou des guillemets.
31 Dr Pascal FAYE 14/02/2024
Généralités et premiers pas avec Python
Toutes les conversions ne sont pas possibles comme celle d’un réel en entier,
ou celle d’un nombre complexe en n’importe quel autre type non complexe.
Règles de conversion :
✓ Si l’un des arguments est un nombre complexe, l’autre est converti en complexe.
✓ Sinon, si l’un des arguments est un nombre réel, l’autre est converti en réel.
✓ Sinon, si l’un des arguments est un long, l’autre est converti en long.
✓ Sinon, tous deux doivent être des entiers ordinaires et aucune conversion n’est nécessaire.
pow(m, n) ou pow(m, n, p)
Gestion de la mémoire
Cependant, il n’est pas possible d’accéder à une variable avant qu’elle n’ait été créée et
initialisée :
>>> a
En Python, il n’y a pas non plus de spécification explicite de type. Cela se fait implicitement à
la première utilisation.
X = 3.4 X est alors une variable de type réel renfermant la valeur 3.4.
Gestion de la mémoire
La libération de l’espace mémoire d’une variable est sous la responsabilité de
l’interpréteur. Lorsqu’il n’y a plus de références à un espace mémoire, le « ramasse-miettes »
se charge de libérer cet espace mémoire.
>>> x = 3.4
>>> x = "La variable réelle est perdue."
>>> print x
La variable réelle est perdue.
Si vous souhaitez supprimer une référence, utilisez l’instruction del.
Après quoi, on ne peut plus utiliser le nom de variable à moins de l’affecter à une nouvelle
valeur.
>>> s = 1
>>> print s
1
>>> del s
>>> print s
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
print s
NameError: name 's' is not defined
38 Dr Pascal FAYE 14/02/2024
Généralités et premiers pas avec Python
Les chaînes
Une chaîne : séquence de caractères non modifiable c’est à dire que si nous
avons une chaîne s=‘salut’,
on ne peut pas faire s[0]=‘s’.
on devra faire s=‘s’+s[1:] (une réassignation) qui donne s=‘salut’.
OPERATION INTERPRETATION
_________________________________________ __________________________________________
Chaînes: concaténation-répétition
Exemple de concaténation
>>> mot = ‘help’ + ‘a’
>>>mot
’helpa’
# pour la répétition:
>>>mot*3
‘helpahelpahelpa’
l’extraction est le fait de sélectionner une partie de la chaîne ainsi, s[1:5] donnera
‘e su’ (le 5 n’est pas compris)
42 Dr Pascal FAYE 14/02/2024
Généralités et premiers pas avec Python
Chaînes: indexation et extraction
Une valeur laissée vierge prend la valeur 0 à gauche et la taille de la chaîne à droite
s[:5] <=> s[0:5]
Un index qui est trop grand est remplacé par la taille de la chaîne, un index de fin
inférieur à l’indice de début retourne une chaîne vide:
s[1:100] donnera 'e suis en tp‘
s[2:1] donnera ‘ ’
s[-100] # erreur
Remarques…
Les listes
Déclaration:
une liste de valeurs (ou éléments) entre crochets séparés par des virgules. Les
éléments de la liste n’ont pas nécessairement le même type.
Voici une liste de 4 éléments:
>>>a = [‘spam’, ‘eggs’,100,1234]
>>>a
[‘spam’, ‘eggs’,100,1234]
Comme les indices des chaînes, les indices des listes commencent à 0, et les
listes peuvent étre découpées, concaténée.
Les listes sont modifiables, on peut donc changer les éléments individuellement:
remplacement, destruction,... (c’est l’utilité d’une liste! Important lors des
passages de paramètres des fonctions )
45 Dr Pascal FAYE 14/02/2024
Généralités et premiers pas avec Python
Exemples
>>> a = ['spam', 'eggs', 100, 1234]
>>> a
['spam', 'eggs', 100, 1234]
>>> a[0]
'spam'
>>> a[3]
1234
>>> a[-2]
100
>>> a[1:-1]
['eggs', 100]
>>> a[:2] + ['bacon', 2*2]
['spam', 'eggs', 'bacon', 4]
>>> 3*a[:3] + ['Boe!']
['spam', 'eggs', 100, 'spam', 'eggs', 100, 'spam', 'eggs', 100, 'Boe!']
insert(i, x)
Insère un élément à une position donnée d’une liste L. Le premier argument est
l'indice de l'élément avant lequel il faut insérer, donc L.insert(0, x) insère au début de
la liste, et L.insert(len(a), x) est équivalent à L.append(x).
append(x)
Equivalent à L.insert(len(L), x).
index(x)
Retourne l'indice dans la liste du premier élément dont la valeur est x. Il y a erreur si
cet élément n'existe pas.
remove(x)
Enlève le premier élément de la liste dont la valeur est x. Il y a erreur si cet élément
n'existe pas.
reverse()
Renverse l'ordre des éléments à l'intérieur de la liste.
count(x)
Renvoie le nombre de fois que x apparaît dans la liste.
Les Tuples
Définition: Comme une liste, un tuple est une collection ordonnée d’objets;
mais le tuple n’est pas modifiable .
Tuple unpacking
Les dictionnaires
Déclaration: des couples clé:valeur séparés par des virgules et entre accolades
>>> dico = {`japon' :'japan', `chine' :'china'}
Un exemple
Les fichiers
if <test1>:
<instructions>
elif <test2>:
<instructions>
.....
!!! ATTENTION à l’indentation !!!!
else:
<instructions>
Comme dans beaucoup d’autres langages, la boucle while éxecute un bloc tant que la
condition d’arrêt est vérifiée. La particularité de ce while est qu’il peut y avoir un else
optionnel dont le bloc sera éxecuté lorsqu’on sort de la boucle
while <test> :
<instructions>
else :
<instructions>
y=0
While y<6:
if y==4:
break
else:
print « Dans la boucle while, y vaut : », y
y=y+1
else:
print « dans le else y vaut : », y
La boucle for fonctionne sur les chaînes, les listes, les tuples et d’autes objets issus
de classes.
Elle commence par une ligne d’en-tête qui spécifie une cible d’affectation, ainsi
qu’un objet qui sera itéré :
Ici encore, le else est mis en fin de boucle pour la même raison que dans la boucle
while vue précédemment.
Ex : for i in range(10,20,2):
print i
Ce qui donne: 10
12
14
16
18
L’indentation
identifie les
blocs
L’indentation
identifie les
blocs
Illustration de la remarque
#contenu du module mon_module
num=12
#fin du module mon_module (.py)
#on est dans l’invite interactive
>>>from mon_module import num
>>> print num
12
>>>num=24
>>>print num
24
>>>from mon_module import num #équivalent du reload
>>>print num
12 # ne fonctionne pas avec les types modifiables
Il est possible d’écrire des programmes qui prennent en charges des exceptions
spécifiques.
Ex : try:
print 1.0 / 0
except ZeroDivisionError:
print '*** n'a pas d'inverse ***
else : pass
Lorsque l’instruction « try » est rencontrée, on execute d’abord la « clause
d’essai ».
Si une exception se produit, le reste de la clause try est ignorée. Dans le
cas contraire, on ignore la clause d’exception.
Si une exception se produit qui ne correspond pas à l’exception dans la
clause except, elle est renvoyée aux instructions « try » extérieures. S’il n’y
a pas de prise en charge, Python affichera un message d’erreur.
83 Dr Pascal FAYE 14/02/2024
2. Gestion des exceptions
L’instruction « else » est une clause par défaut qui doit suivre toutes les clauses
d’exeptions. Elle permet d’executer la suite du programme dans le cas où aucune
exception ne serait survenue.
Quand une exception survient, elle peut avoir une valeur associée, appelé argument de
l’exeption.
Ex : try :
spam()
except NameError, x:
print ‘nom’, x,’non défini’
ce qui affichera : nom spam non défini.
Numarray permet une manipulation efficace des tableaux. Présence de tout un panel
numarray
de fonctions, de l'algèbre linéaire etc. Numarray est une réimplantation de Numeric.
matplotlib Matplotlib est une bibliothèque pour tracer des graphes 2D.
Prérequis: il faut installer d’abord NumPy
MySQLdb MySQLdb permet la manipulation des bases de données MySQL.
Cette bibliothèque permet de construire des scènes 3D de façon très simple avec des
VPython élements très simples: Cube, Cône, Pyramide, Sphère ... De nombreux exemples
permettent de se familiariser rapidement avec cette bibliothèque.
D’autres librairies très utiles sont disponibles et vous pouvez trouver plus d’informations au niveau des sites:
• https://docs.python.org/fr/3/library/index.html
• https://python.developpez.com/outils/BackupOutils/Librairies/
def alert():
menu2.add_command(label="Copier", command=alert)
showinfo("alerte", "Bravo!") menu2.add_command(label="Coller", command=alert)
menubar.add_cascade(label="Editer", menu=menu2)
fenetre.config(menu=menubar)
fenetre.mainloop()
100 Dr Pascal FAYE 14/02/2024
TPE :
1-conversion d’un nombre décimal en base 2