Vous êtes sur la page 1sur 97

Les opérateurs

33
Opérateurs arithmétiques

Opération Résultat
-x Opposé de x
x%y Reste de la division entière de x par y (mod)
x/y Division de x par y
x // y Division entière de x par y (div)
x*y Produit de x et y
x–y Différence de x et y
x+y Somme de x et y
x ** y x puissance y

34
Opérations sur les numériques

Opération Résultat

pow(x,y) x puissance y

divmod(x,y) La paire (x//y,x%y) a,b= divmod(x,y)

c.conjugate() Le conjugué de c (si c ℂ)

float(x) Conversion de x en flottant

long(x) Conversion de x en entier long

int(x) Conversion de x en entier

str(x) Conversion de x en chaîne de caractère

35
Opérateurs de comparaison

Opération Résultat
x<y, x<=y x inférieur (ou égal) à y
x>y, x>=y x supérieur (ou égal) à y
x == y x égal ? y (valeurs)
x != y x différent de y

37
Opérateurs logiques

Opération Résultat

x or y, x and y OU et ET logiques

x|y x ou y

x&y x et y

x^ y x ou exclusif y

38
Les entrées sorties

49
Les entrées
§ Il s’agit de réaliser une saisie à l’écran : la fonction standard input() interrompt le
programme, afficher une éventuelle invite et attend que l’utilisateur entre une
donnée et la valide par Entrée .

§ La fonction standard input() effectue toujours une saisie en mode texte (la saisie est
une chaîne) dont on peut ensuite changer le type (on dit aussi transtyper) :
§ Syntaxe:
Nom_variable = input("un texte qui invite l’utilisateur à entrer une donnée")

Ou bien on sépare, comme en algorithmique: d’abord Ecrire ensuite lire


Print ("un texte qui invite l’utilisateur à entrer une donnée")
Nom_variable = input()

50
Exemples

51
Les sorties
§ En mode « interactif», Python lit-évalue-affiche, mais la fonction print() reste
indispensable aux affichages dans les scripts :

52
Les structures conditionnelles
Structure conditionnelle

1ère forme de Si

2ème forme de Si

3ème forme de Si

60
Structure conditionnelle

61
If imbriqués

affiche“cas 1” quand a et b sont positifs, “cas 2” quand a


est positif et b négatif ou nul
Et N’affiche rien si a est négatif ou nul. Le else dépend
du second if.

Affiche “cas 1” quand a et b sont positifs, “cas 2” quand a


est négatif ou nul et donc rien quand
a est positif et b négatif ou nul. Le else dépend du premier
if.

62
Les structures répétitives
La boucle while
La boucle for

1
Le boucle While
§ Comme dans beaucoup d’autres langages, la boucle while exécute un
bloc tant que la condition d’arrêt est vérifiée.

§ Syntaxe:

Tanque(condition) faire
while <condition> :
<instructions>
<instructions>
Fintanque

Algorithmique Python
Exemple
Exemple (break)

68
Exemple (continue)

69
La boucle for
§ Syntaxe

for i in range(imin,imax+1,pas):
instructions

La valeur maximale de i sera imax

75
Exemple en mode interactif

77
Syntaxe générale

78
Les fonctions et les procédures en Python
Syntaxe de déclaration
Pour la déclaration d’une
procédure

def nomDeLaProcedure(par1,par2,…..parn):
" Cette ligne explique à quoi sert la procedure"
bloc d'instructions
...

Pour la déclaration d’une fonction

def nomDeLaFonction(par1,par2,…..parn):
"Cette ligne explique à quoi sert la fonction "
bloc d'instructions
return (resultat)
...

8
2
Exemple d’une procédure

8
4
Exemple d’une fonction

8
5
Les listes

7
Définition
§ Une liste est une structure de données qui contient une série de valeurs.

§ Python autorise la construction de liste contenant des valeurs de type différent (par
exemple entier et chaîne de caractères), ce qui leur confère une grande flexibilité.
§ Une liste est déclarée par une série de valeurs séparées par des virgules, et le tout
encadré par des crochets : maListeVide = []

maListeAvecUnSeulElement = [élément]
maListe = [élément1,élément2,...,élémentN]

§ s’il s’agit d’une valeur de type chaînes de caractères, il faut l’encadrer par des
guillemets, simples ou doubles.
§ les objets placés dans une liste sont accessibles par l'intermédiaire d'un index
(un nombre qui indique l'emplacement de l'objet dans la séquence)
8
§ La numérotation des index commence par 0
Exemple

9
Accéder aux éléments d'une liste
§ Pour accéder aux éléments d'une liste, on utilise les mêmes méthodes (index, découpage
en tranches) que pour accéder aux caractères d'une chaîne :

-6 -5 -4 -3 -2 -1

0 1 2 3 4 5

10
Modifier une liste
Les opérations sur les listes:

11
Modifier une liste

Méthodes permettant de modifier une liste :

12
Modifier une liste
Méthodes permettant de modifier une liste :

13
Modifier une liste

14
Modifier une liste

15
Les fonctions appliquées aux listes: Supprimer un élément ou une partie d’une liste

§ l'instruction del , permet d'effacer un ou plusieurs éléments à partir de leur(s) index :

§ la différence entre la méthode remove() et l'instruction del :

o del travaille avec un index ou une tranche d'index


o remove() recherche une valeur (si plusieurs éléments de la liste possèdent la même valeur,
seul le premier est effacé)
16
Les fonctions appliquées aux listes :La taille d’une liste

17
Techniques de « Slicing » avec
l’opérateur []

18
Techniques de « slicing » avancé pour modifier une liste

§ Insertion d'un ou plusieurs éléments n'importe où dans une liste


0 1 2 3 4

0 1 2 3 4

19
Règles à respecter
§ Si vous utilisez l'opérateur [] à la gauche du signe égale pour effectuer une insertion ou une
suppression d'élément(s) dans une liste, vous devez obligatoirement y indiquer une « tranche »
dans la liste cible (c'est-à-dire deux index réunis par le symbole : ), et non un élément isolé dans
cette liste.

§ L'élément que vous fournissez à la droite du signe égale doit lui-même être une liste. Si vous
n'insérez qu'un seul élément, il vous faut donc le présenter entre crochets pour le transformer
d'abord en une liste d'un seul élément.

§ l'élément nombres[2] n'est pas une liste alors que l'élément nombres[2:2] en est une.

20
Suppression / remplacement d'éléments
0 1 2 3 4 5 6 7

0 1 2 3 4 5

nous remplaçons la tranche [2:4[ par une liste vide, ce qui


correspond à un effacement

nous remplaçons la tranche [2,5[ par un seul élément. (Notez encore une
fois que cet élément doit lui-même être « présenté » comme une liste).
21
Suppression / remplacement d'éléments

nous remplaçons une tranche de 3 éléments par une autre qui en comporte 6.

22
Utilisation d’un pas dans le slicing

0 1 2 3 4 5 6 7 8

23
Utilisation d’un pas négatif dans le slicing
-9 -8 -7 -6 -5 -4 -3 -2 -1

24
Correction
liste= [ 1, 2, 3, 4, 5, 6,7,8 ]
liste.insert(4,0) [1, 2, 3, 4, 0, 5, 6, 7, 8]
liste
liste[::-1] [8, 7, 6, 5, 4, 3, 2, 1]
liste.pop() 8
liste[1:5]=[] [1, 6, 7, 8]
liste
liste[2:2]=22 error
liste
liste.index(1) 0
liste.remove(1) [2, 3, 4, 5, 6, 7, 8]
liste
del liste[1] [1, 3, 4, 5, 6, 7, 8]
liste

26
Création de liste avec range
§ La fonction range() génère une liste de nombres entiers de valeurs croissantes avec
un pas égal à 1 (par défaut)

§ range() attend toujours trois arguments:


o FROM est la première valeur à générer,
o TO est la dernière (ou plutôt la dernière + un),
o STEP le « pas » à sauter pour passer d'une valeur à la suivante.
S'ils ne sont pas fournis, les paramètres FROM et STEP prennent leurs valeurs par
défaut, qui sont respectivement 0 et 1.

27
Parcours d'une liste à l'aide de for, range() et len()

On peut parcourir une liste de deux manière:


soit en parcourant directement la liste :

soit en parcourant les indices de la liste :

28
Test d'appartenance

§ Nous pouvons déterminer si un élément fait partie d'une liste à l'aide de l'instruction in :

29
Exercice
1. Ecrire une fonction qui permet de créer une liste de n élément et la retourner
2. Ecrire une procédure qui permet d’afficher les éléments d’une liste

32
Solution 1

33
Solution 2

34
Les dictionnaires
Les dictionnaires
§ Les dictionnaires sont un type composite, semblables aux listes dans une certaine mesure (ils sont
modifiables comme elles), mais ce ne sont pas des séquences

§ Un dictionnaire est composé de paires (clé, valeur)


§ La clé permettra d’accéder à la valeur

§ Une clé pourra être:


§ Alphabétique

§ Numérique

§ Un type composite

§ Les valeurs associées à ces clés peuvent êtres de n’importe quel type
Création d'un dictionnaire
§ Puisque le type dictionnaire est un type modifiable, nous pouvons commencer par créer un
dictionnaire vide, puis le remplir petit à petit.

§ Du point de vue syntaxique, on reconnaît une structure de données de type dictionnaire au fait
que ses éléments sont enfermés dans une paire d'accolades

§ Exemple: fiche num nom prenom Date_naissance

12345678 Ziad Lina 12-05-1989


Remarque
§ Chaque clé d’un dictionnaire doit être unique
Opérations sur les dictionnaires
les méthodes spécifiques aux dictionnaires
§ keys() :renvoie la liste des clés utilisées dans le dictionnaire :

§ values() :renvoie la liste des valeurs mémorisées dans le dictionnaire :

§ items() : extrait du dictionnaire une liste équivalente de tuples :


les méthodes spécifiques aux dictionnaires
§ copy() :permet d'effectuer une vraie copie d'un dictionnaire

§ À ne pas confondre avec une affectation


Parcours d'un dictionnaire
§ Le parcours d’un dictionnaire pose quelques difficultés. Comme ce n’est pas une séquence, il
n’y a pas de relation d’ordre pré-établie entre les éléments afin de parcourir toutes les données
d’un dictionnaire.

§ Pour effectuer un traitement sur les valeurs, il suffit de récupérer chacune d'elles à partir de la clé
correspondante
Parcours d'un dictionnaire
§ Il est recommandé de faire appel à la méthode items()
Les chaines de caractères

2
Gestion des espaces
Méthode Effet
strip() Supprime les espaces en début et fin de chaine
rstrip() Supprime les espaces en fin de chaine
lstrip() Supprime les espaces en début de chaine
isspace() Renvoie True s’il n’y a que des espaces

38
Tests sur la nature de la chaîne
Méthode Effet
startswith(prefix) True si la chaine commence par prefix
endswith(prefix) True si la chaine se termine par prefix
isupper() True si la chaine ne contient que des majuscules
islower() True si la chaine ne contient que des minuscules
istitle() True si la chaine est formatée comme un titre
isdigit() True si la chaine ne contient que des caractères
numériques

isalpha() True si la chaine ne contient que des caractères


alphabétiques
isalnum() True si la chaine ne contient que des caractères
alphanumériques

39
Recherche et remplacement
Méthode Effet
index(sub) Renvoie l’index de la 1ère occurrence de la
chaine sub, exception si pas trouvée

rindex() Idem pour la dernière occurrence


find(sub) Comme index mais renvoie -1 si la chaine n’est
pas trouvée

rfind() Idem pour la dernière occurrence


count(sub) Retourne le nbr d’occurrence de la sous-chaine
replace(old, new [,max]) Remplace la sous-chaine old par new, au plus
max fois (par défaut, remplace toutes les
occurrences)

40
Découpage et collage
Méthode Effet
split(sep) Crée une liste de tous les mots de la chaîne en
utilisant sep comme séparateur

Lien.join(list) Fusionner les membres d’une liste avec le mot


de liaison lien

42
Exemple

43
Accès et extraction

44
Gestion des exceptions
Définition
§ Les exceptions sont les opérations qu’effectue un interpréteur ou un compilateur lorsqu’une erreur est
détectée au cours de l’exécution d 'un programme.
§ En règle générale, l’exécution du programme est alors interrompue, et un message d’erreur plus ou
moins explicite est affiché.

§ Exemple :

On dit:
une exception est levée

8
3
Exemple

Quand vous entrez un nombre, tout se déroule normalement :

Quand vous saisissez autre chose qu’un nombre, une exception de type ValueError est levée

8
4
Exemple

Quand vous saisissez 0 , une exception de type ZeroDivisionError est levé

8
5
Gestion des exceptions
§il est possible de gérer les exceptions pour éviter l'arrêt brutal du programme.
§on utilise conjointement les instructions try et except.
§L'instruction else est optionnelle :

8
6
Distinguer les différents types d'exceptions

8
7
Distinguer les différents types d'exceptions

8
8
Boucler le programme

8
9
Résultat

9
0
M atplotlib
Le module pyplot
§ il suffit d’importer un module appelé pyplot et d’utiliser une fonction de
graphique parmi les suivantes :

§ scatter(x, y) : affiche un graphique à points entre x et y


§ plot(x, y) : affiche un graphique ligne entre x et y
§ hist(x) : affiche un histogramme de x.
Exemple
Contrôler le style de vos graphiques Matplotlib

§ Pour conférer un style à vos graphiques, il suffit d’ajouter


certains arguments dans les fonctions plot() et scatter(). Parmi les
arguments les plus utiles, je vous conseille de retenir :

§ c : couleur du graphique (‘red’, ‘blue’, ‘black’, etc…)


§ lw : épaisseur du trait (pour les graphiques de lignes)
§ ls : style de trait (pour les graphiques de lignes)
§ marker :style de points (pour les graphiques de points)
§ alpha : transparence de la ligne ou des points
Exemple
Subplot : Diviser votre figure en plusieurs sous-figures

§ La fonction subplot() permet de diviser une figure en plusieurs parties,


créant ainsi une grille de sous-figures. Pour cela, il faut faire passer 3
nombres dans cette fonctions. Le nombre de lignes de la grille, le nombre de
colonne de la grille, et la sous-figure sur laquelle travailler. On écrit ainsi :
plt.subplot(#lignes, #colonnes, sous-figure)
Exemple
Matplotlib : Titres, Axes, Légendes
§ Pour créer des Titres, axes, et légendes dans Matplotlib, il suffit d’utiliser les
fonctions suivantes sur chacune de vos figures ou sous-figures:

§ plt.title() : ajoute un titre à la figure


§ plt.xlabel() plt.ylabel() : ajoute des axes à la figure
§ plt.lenged() : ajoute une légende (selon le label indiqué dans la fonction
plot() ou scatter()

§
Exemple
Les Fichiers
Fichier
Ouverture d’un fichier
Syntaxe de l’ouverture d’un fichier :

monFichier = open(‘NomDuFichier’,’mode’)

• Le nom du fichier contient également son extension (exp .txt, …).


• Le mode est la façon selon laquelle on va ouvrir le fichier.

§ Remarque :
• Par défaut on considère que le fichier est situé dans le même répertoire quenotre script.
• Dans le cas contraire, on devra préciser son emplacement, par exempleavec un chemin absolu (du
style C:\ … sous windows).
Fichier
Ouverture d’un fichier
Trois modes d’ouverture possibles :

• ‘r’ : lecture. On peut lire le contenu du fichier mais pas y écrire. Lefichier doit exister auparavant.

• ‘w’ : écriture. Si le fichier existait, son contenu est effacé, sinon il estcréé.

• ‘a’ : ajout. Si le fichier existait on peut écrire à la fin de celui-ci sanseffacer son contenu. Sinon il
est créé.
Fichier
Fermeture d’un fichier
Syntaxe de la fermeture d’un fichier :

monFichier.close()

• Cela permet de libérer la mémoire allouée à ‘monFichier’.

• Cela permet également à d’autres applications d’accéder au fichier enquestion.


FICHIER TEXTE
Accès séquentiel, non structuré

9
Lecture en bloc avec read() megane
clio
# -*- coding: utf -*- Fichier texte à lire : twingo
safrane
#ouverture en lecture « voiture.txt » laguna
f = open("voitures.txt","r") vel satis

#lecture •open() permet d’ouvrir un fichier, en lecture ici


s = f.read() avec l’option « r ». La fonction renvoie un objet de
type fichier stocké dans f
#affichage
print("** contenu de s **") • le curseur de fichier est placé sur la première ligne
print(s) • read() lit tout le contenu du fichier d’un bloc
print("** fin contenu **") • close() ferme le fichier (et donc le déverrouille)

#information sur s
print("type de s : ",type(s))
print("longueur de s : ", len(s))

#fermeture
f.close()

s est de type « str », on se rend mieux compte en mode console:

\n représente le caractère spécial « saut de ligne » (line feed),


c’est pour cela que print(s) fonctionne correctement.
Lecture en bloc avec readlines (avec « s »)
# -*- coding: utf -*-
#ouverture en lecture
f = open("voitures.txt","r")

#lecture
lst = f.readlines() Le contenu du fichier est stocké dans
#affichage une liste, une ligne = un élément.
print("** contenu de lst **") Le caractère \n est maintenu. Il n’est pas
print(lst)
print("** fin contenu **") présent sur la dernière ligne de notre
fichier exemple.
#information sur lst
print("type de s : ",type(lst))
print("longueur de s : ", len(lst))

#fermeture
f.close()

11
Remarque : saut de ligne ou pas sur la dernière ligne du fichier
Question : Comment savoir s’il y a un saut de ligne
Ouvrir le fichier dans Notepad++ ou pas à la dernière ligne de notre fichier texte ?

La ligne n°6 est la dernière ligne du fichier,


pas de saut ligne après « vel satis »

Il y a une ligne vide (la n°7) après « vel satis »

12
Lecture ligne par ligne avec readline (sans « s »)
# -*- coding: utf -*-

#ouverture en lecture
f = open("voitures.txt","r")
• readline() lit la ligne courante et place le
#lecture ligne itérativement curseur sur la ligne suivante.
while True: • la fonction renvoie la chaîne vide lorsque
s = f.readline()
if (s != ""): nous arrivons à la fin du fichier (Remarque :
print(s)
else:
s’il y a une ligne blanche entre 2 véhicules,
break; readline() renvoie le caractère « \n », ce n’est
#fermeture
pas une chaîne vide).
f.close()

Il y a une ligne vide entre chaque véhicule parce que


le caractère « \n » est toujours là, print() le prend en
compte [ Remarque : pour que print() n’en tienne pas
compte, il faudrait faire print(s,end="") ]

13
Lecture ligne par ligne en itérant sur l’objet fichier

# -*- coding: utf -*- C’est la forme la plus efficace – et la plus


concise – pour une lecture ligne à ligne.
#ouverture en lecture
f = open("voitures.txt","r") Le caractère \n est présent toujours,
noter la longueur de la chaîne (+1 pour
#lecture ligne itérativement
for s in f: toutes sauf la dernière)
print(s,len(s))

#fermeture
f.close()

14
Ecriture d’un fichier texte avec write()
# -*- coding: utf -*- •open() permet d’ouvrir un fichier en écriture avec
l’option « w ». La fonction renvoie un objet de type
#ouverture en écriture fichier référencée par f
f = open("moto.txt","w")
• avec « w », le fichier est écrasé s’il existe déjà
#écriture • write() permet d’écrire la chaîne de caractères
f.write("honda")
f.write("yamaha")
f.write("ducati")

#fermeture
f.close() Il manque les sauts de ligne pour distinguer chaque moto

# -*- coding: utf -*-

#ouverture en écriture Nous insérons le caractère saut de ligne « \n »


f = open("moto.txt","w") après chaque moto, sauf la dernière
#écriture
f.write("honda\n")
f.write("yamaha\n")
f.write("ducati")

#fermeture
f.close() 15
Ecriture d’un fichier texte avec writelines()
writelines() permet d’écrire
directement le contenu d’une liste.
# -*- coding: utf -*- Nous devons quand même insérer
le caractère « \n » pour que le saut
#ouverture en écriture
f = open("moto.txt","w") de ligne soit effectif dans le fichier.
#liste
lst = ["honda\n","yamaha\n","ducati"]

#écriture
f.writelines(lst)

#fermeture
f.close()

16
Ajout dans un fichier texte • open() avec l’option « a » permet d’ouvrir
un fichier en mode ajout
• write() permet d’écrire la chaîne de
# -*- coding: utf -*- caractères
#ouverture en ajout
• attention toujours au saut de ligne
f = open("moto.txt","a") • une ouverture en mode lecture / écriture
est possible avec l’option « r+ » mais se
#ajouter un saut de ligne
positionner sur telle ou telle ligne pour y
f.write("\n")
modifier ou insérer des informations est
#écriture compliqué.
f.write("laverda")

#fermeture
f.close()

17

Vous aimerez peut-être aussi