0% ont trouvé ce document utile (0 vote)
11 vues301 pages

Cours de Programmation en Python

Le cours de programmation en Python vise à consolider les connaissances fondamentales en programmation et à concevoir des interfaces graphiques. Il est structuré en quatre chapitres, abordant l'algorithmique, les bases de Python, les bibliothèques NumPy et matplotlib, ainsi que PyQt pour les interfaces visuelles. Les méthodes pédagogiques incluent des cours magistraux, des travaux pratiques et une évaluation basée sur des examens et la participation en classe.

Transféré par

mouhamadoulhadyboye
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
11 vues301 pages

Cours de Programmation en Python

Le cours de programmation en Python vise à consolider les connaissances fondamentales en programmation et à concevoir des interfaces graphiques. Il est structuré en quatre chapitres, abordant l'algorithmique, les bases de Python, les bibliothèques NumPy et matplotlib, ainsi que PyQt pour les interfaces visuelles. Les méthodes pédagogiques incluent des cours magistraux, des travaux pratiques et une évaluation basée sur des examens et la participation en classe.

Transféré par

mouhamadoulhadyboye
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Programmation

Informatique
(Python)
Prof. M. Lahlou
Département de Statistique et de
d'Informatique Appliquées

[Link]@[Link]
Objectif du cours

Consolidé les connaissances des concepts


fondamentaux de la programmation.

Apprendre à programmer en Python.

Apprendre à concevoir une interface


graphique et à lui associer des procédures
évènementielles.

31 janvier 2022 Programmation structurée 2


Thèmes traités

• Le cours est présenté en 4 chapitres :

• Le 1er concerne un rappel des éléments de l’Algorithmique

• Le 2ème Les bases de programmation en Python,

• Le 3ème présente les bibliothèques NumPy ou matplotlib


pour le calcul numérique et la création de graphiques,

• Le 4ème présente la bibliothèque PyQt pour les interfaces


visuelles.

31 janvier 2022 Programmation structurée 3


Didactique du cours
• Méthodes pédagogiques :
• volume horaire : 36 ; cours : 22 ; TP : 12 et Examen 2;
• Le cours est donné sous forme de cours magistraux et d’exercices.

• Moyens pédagogiques :
• Copie de la présentation

• Evaluation
• Examen TP (33%)
• Examen Général (57%)
Seules les instructions étudiées dans ce cours seront acceptées
comme éléments de réponses dans un examen écrit.
• Participation en classe (10%)

31 janvier 2022 Programmation structurée 4


Pourquoi apprendre à programmer ?

• Programmer est fondamental pour tous les métiers,

• Toutes les industries (tous les domaines confondus)


sont désespérées à essayer de trouver des
programmeurs, partout dans le monde,

• C’est l’industrie qui évolue le plus rapidement,

• C’est très bien payé.

31 janvier 2022 Programmation structurée 5


Partie I
Rappel des éléments de l’Algorithmique

Programmation structurée 31 janvier 2022 6


Objectifs de l’écriture d’un programme

 Résoudre des problèmes «par une machine»


 savoir expliciter son raisonnement à une machine
 savoir formaliser son raisonnement dans un langage
compréhensible par la machine

 Concevoir (et écrire) des programmes:


 séquence d’instructions qui décrit comment résoudre
un problème particulier
31 janvier 2022 Programmation structurée 7
Ecriture d’un programme informatique

• Décomposition d'un problème en étapes élémentaires.

• Ecrire une suite finie d'actions à entreprendre en respectant


une chronologie imposée

• Pour qu'un algorithme soit exécutable par un processeur il doit


être écrit dans un langage compréhensible par ce processeur.

31 janvier 2022 Programmation structurée 8


Recette de cuisine
Michel GUERARD [3, pp. 176-177] donne la recette des artichauts Mélanie comme suit:
artichauts Mélanie
Marché pour 4 personnes
Ingrédients 3 fonds d'artichauts
principaux 12 pointe d'asperges
100 g de carotte râpée
40 g de salade de laitue
1 cuillère de persil haché
Ingrédients 40 g de champignons de Paris
de garniture 30 g de queues d'asperges
50 g de pomme fruits
50 g de tomate concassée crue
Sauces Sauce mayonnaise (voir recette p. 127)
d'assaisonnement Sauce vinaigrette (voir recette n°1 p. 126)
Ustensiles 1 casserole de préparation
1 bol de présentation
4 assiettes plates

01/09/2024 Prof. M. LAHLOU 9


Les objets

• Les objets utilisés lors de l'exécution de l'algorithme sont


décrits dans la partie déclarations. Ces objets sont:
• des valeurs (ou ingrédients) correspondant à la notion de constante
en Informatique.
• ou des contenants (casserole, bol, ...) correspondant à la notion de
variable en Informatique (à la différence de la notion de variable en
Mathématique, le contenue ou valeur d'une variable informatique
peut changer).
• Les objets sont de types différents (ingrédients principaux,
ingrédients de garniture, sauces, ...). Le type d'un objet
détermine a priori la nature des opérations que l'on peut
effectuer sur cet objet.

01/09/2024 Prof. M. LAHLOU 10


Instructions

1. Si elles sont fraîches, cuire les pointes d'asperges, vertes de préférence de 3 à


5 minutes selon leur grosseur (voir recette P. 59).
2. Cuire les artichauts entiers à l'eau salée et citronnée (voir recette P. 151).
Leur enlever les feuilles, le foin; récupérer les fonds que l'on coupe en quatre
3. Dans le bol, mélanger délicatement, à l'aide d'une fourchette, les ingrédients
de garniture et 2 cuillères à soupe de sauce mayonnaise. Assaisonner de sel et
poivre.
4. Disposer dans le fond de chaque assiette la salade lavée, essorée et ciselée en
lanières. Dresser au centre et en rond 3 morceaux de fond d'artichaut relevés
de sauce vinaigrette n°1. Les recouvrir de la garniture assaisonnée
équitablement répartie et décorer des pointes d'asperges. Eparpiller sur
l'ensemble la carotte râpée également relevée de sauce. Parsemer le tout de
persil fraîchement haché.

01/09/2024 Prof. M. LAHLOU 11


Le type d’opérations

• Le type d’opérations à effectuer sur les objets est


décrit dans la partie instruction:
• Certaines opérations sont des instructions élémentaires
directement exécutables par le processeur (c'est-à-dire le
cuisinier) comme par exemple «disposer dans le fond
d'une assiette la salade lavée, essorée et ciselée en
lanières».
• Les autres opérations sont des appels de modules qui
renvoient à des recettes précédentes. Nous reviendrons
sur cette notion.

01/09/2024 Prof. M. LAHLOU 12


L'enchaînement des opérations

 On peut distinguer trois sortes d'enchaînement d'opérations.


 Premièrement l'enchaînement séquentiel d'opérations, qui consiste à
effectuer ces opérations les unes après les autres, en séquence. Par
exemple il faut cuire les artichauts puis les parer.
 Deuxièmement l'enchaînement conditionnel, qui consiste à exécuter
une opération si une condition est vraie. Par exemple si les pointe
d'asperges sont fraîches alors il faut les cuire (sinon les sortir de leur
boite de conserve).
 Troisièmement l'enchaînement itératif, qui consiste à répéter plusieurs
fois la même opération. Par exemple l'opération de dressage doit être
répétée pour les quatre assiettes.

01/09/2024 Prof. M. LAHLOU 13


Propriétés d’un programme informatique
1. Finalité
Un algorithme doit toujours se terminer après un nombre fini d'étapes.

2. Définition
Toutes les étapes d'un algorithme doivent être clairement définies; toutes les
actions doivent être spécifiée rigoureusement et d'une manière précise.

3. Entrées
Un algorithme à zéro ou plusieurs entrées, on appelle entrées les quantités qui
sont initialement fournis à un algorithme avant qu'il commence. Ces entrées
sont prises dans des ensembles d'objets bien spécifiés.

4. Sorties
Un algorithme à une ou plusieurs sorties, on appelle sortie les quantités qui
ont une relation avec les entrées.
01/09/2024 Prof. M. LAHLOU 14
Propriétés d’un programme informatique
5. Efficacité
• Un algorithme est généralement requit pour être efficace. Ceci
entend que toutes les opérations à effectuer dans l'algorithme
doivent être suffisamment de base pour qu'ils puissent, en
principe, être faites correctement et dans un laps de temps fini
par un homme utilisant un crayon et un papier.
En informatique, le problème du voyageur de commerce, ou problème du commis
voyageur, est un problème d'optimisation qui, étant donné une liste de villes, et des
distances entre toutes les paires de villes, détermine un plus court chemin qui visite chaque
ville une et une seule fois et qui termine dans la ville de départ.
Une approche de résolution naïve mais qui donne un résultat exact est l'énumération de
tous les chemins possibles par recherche exhaustive. La complexité en temps de cet
algorithme est en O (n!) (plus exactement = (n - 1)! / 2), ce qui devient vite impraticable
même pour de petites instances. Par exemple, si le calcul d'un chemin prend une
microseconde, alors le calcul de tous les chemins pour 10 points est de
181 440 microsecondes soit 0,18 seconde mais pour 15 points, cela représente déjà
43 589 145 600 microsecondes soit un peu plus de 12 heures et pour 20 points de
6 × 1016 microsecondes soit presque deux millénaires (1 901 années). Pour 25 villes, le temps
de calcul dépasse l'âge de l'Univers. Prof. M. LAHLOU
01/09/2024 15
Qu'est-ce que la programmation ?

• Pourquoi ?
• Faire exécuter des tâches à l’ordinateur
• Quand ?
• Une fois l’analyse terminé et l’algorithme écrit.
• Comment ?
• Choix du langage de programmation en fonction de:
• La plateforme utilisé Unix / Linux / Mac OS / Windows (win32 ou .NET)
• Le compilateur disponible
• Compétences du programmeur
• Écrire un programme
• Traduire ce programme en langage machine
• Exécuter ce programme

Algorithmique et Programmation 16
Langage de programmation
•Langage machine
• Directement utilisable  Rapidité d'exécution
• Codage binaire : mauvaise lisibilité
• Dépend du processeur donc de la machine
•Langage évolué
• Règles syntaxiques et sémantiques strictes : plus lisible
et plus structuré
• Portable
• Pas compréhensible directement par la machine 
traduction

Algorithmique et Programmation 17
Compilation vs Interprétation (1)

Interpréteur

Opération répété à chaque exécution

Programme Processeur

Exécution
Programme
Compilateur en langage
"machine"

Opération effectué une seule fois

Algorithmique et Programmation 18
Compilation vs Interprétation (2)
•Programme Interprété (PHP, Python ...)
•Portable
•Plus lent
•On passe toujours par l'interpréteur (lourd)
•Programme Compilé (Java, C, Pascal ...)
•Plus rapide
•Une compilation pour N exécutions
•Autonomie vis à vis du langage d'origine
•Code exécutable non portable

Algorithmique et Programmation 19
Illustration de l’avec le langage Python
• Python est un langage:
• portable,
• dynamique,
• extensible,
• gratuit,
• permet une approche modulaire et orientée objet de la programmation.
• Python a été développé depuis 1989 par Guido van Rossum et de
nombreux contributeurs bénévoles.
• Téléchargement: On recommande l’installation de la suite Anaconda
disponible sur le lien suivant:
[Link]
• Interpréteur en ligne:
[Link] ou
[Link]
• Sur Android:
Pydroid 3

01/09/2024 Prof. M. LAHLOU 20


Bases de Python
Règles générales d’écriture

Wednesday, October 7, 2020 Prof. M. LAHLOU 44


Un premier exemple de programme Python
Explications des règles générales
d'écriture respectées dans ce code :
• Lisibilité :
• Utilisation d'une indentation
cohérente (4 espaces).
• Noms de variables et de
fonctions significatifs.
• Modularité :
• Le programme est divisé en
fonctions bien définies qui
effectuent des tâches .
• Documentation :
• Chaque fonction est
documentée avec une
docstring qui explique son
objectif, ses arguments et ce
qu'elle retourne.
• Gestion des erreurs :
• Utilisation d'un bloc try-except
pour gérer les erreurs
potentielles lors de l'entrée
utilisateur.
Sunday, September 22, 2024 Prof. M. LAHLOU 22
Règles générales d’écriture d’un programme
Un programme est composé de:
• Les identificateurs
Un identificateur est une suite de caractères servant à désigner les différentes entitées
manipulées par un programme : variables, fonctions, classes…
En Python, un identificateur est formé de lettres ou de chiffres. Il ne contient pas
d’espace. Le premier caractère doit obligatoirement être une lettre. Il peut contenir le
caractère « _ » (underscore, en français « souligné »). Il est sensible à la casse
(distinction entre majuscule et minuscule).
• Les mots-clés
Les mots réservés par le langage Python (if, for, etc.) ne peuvent pas être utilisés
comme identificateurs.
• Les commentaires
Les commentaires usuels:

Les commentaires en fin de ligne:

Wednesday, October 7, 2020 Prof. M. LAHLOU 13


Bases de Python
Variables & Principaux types de données
Python est un langage à typage dynamique, ce qui signifie qu’il n’est pas nécessaire de
déclarer les variables avant de pouvoir leur affecter une valeur. La valeur que l’on affecte
possède un type qui dépend de la nature des données (nombre entier, nombre à virgule,
chaîne de caractères, etc.). Le type du contenu d’une variable peut donc changer si on
change sa valeur.

Wednesday, October 7, 2020 Prof. M. LAHLOU 44


Variables
• Une variable est une zone de la mémoire de l'ordinateur dans laquelle une valeur
est stockée. Aux yeux du programmeur, cette variable est définie par un nom, alors
que pour l'ordinateur, il s'agit en fait d'une adresse, c'est-à-dire d'une zone
particulière de la mémoire.
• En Python, la déclaration d'une variable et son initialisation (c'est-à-dire la
première valeur que l'on va stocker dedans) se font en même temps. Pour vous en
convaincre, testez les instructions suivantes après avoir lancé l'interpréteur :

• Ligne 1. Dans cet exemple, nous avons déclaré, puis initialisé la variable x avec la
valeur 2. Notez bien qu'en réalité, il s'est passé plusieurs choses :
• Python a « deviné » que la variable était un entier. On dit que Python est un langage au typage
dynamique.
• Python a alloué (réservé) l'espace en mémoire pour y accueillir un entier. Chaque type de variable
prend plus ou moins d'espace en mémoire. Python a aussi fait en sorte qu'on puisse retrouver la
variable sous le nom x.
• Enfin, Python a assigné la valeur 2 à la variable x.

Wednesday, October 7, 2020 Prof. M. LAHLOU 45


Variables (suite)

• Lignes 2 et 3. L'interpréteur nous a permis de connaître le contenu de la


variable juste en tapant son nom. Retenez ceci car c'est une spécificité de
l'interpréteur Python, très pratique pour chasser (debugger) les erreurs
dans un programme. Par contre, la ligne d'un script Python qui contient
seulement le nom d'une variable (sans aucune autre indication) n'affichera
pas la valeur de la variable à l'écran lors de l'exécution (pour autant, cette
instruction reste valide et ne générera pas d'erreur).
• Sachez par ailleurs que l'opérateur d'affectation = s'utilise dans un certain
sens. Par exemple, l'instruction x = 2 signifie qu'on attribue la valeur située à
droite de l'opérateur = (ici, 2) à la variable située à gauche (ici, x). D'autres
langages de programmation comme R utilisent les symboles <- pour rendre
l'affectation d'une variable plus explicite, par exemple x <- 2.
• Enfin, dans l'instruction x = x - 3, l'opération x - 3 est d'abord évaluée et
ensuite le résultat de cette opération est affecté à la variable x.
Wednesday, October 7, 2020 Prof. M. LAHLOU 46
Noms de variables
• Les noms de variables sont des noms qu’on choisit assez librement
• De préférence assez courts, mais aussi explicites que possible, pour exprimer
clairement ce que la variable est censée contenir:
• altitude, altit ou alt (au lieu de x ) pour exprimer une altitude
• prix_unit pour exprimer un prix unitaire, etc.
• 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 (0 à 9),
qui doit toujours commencer par une lettre.
2. Seules les lettres ordinaires sont autorisées. 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 (les caractères majuscules et minuscules sont distingués).
Attention : Altitude, altitude, ALTITUDE 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.
Algorithmique et Programmation 39
Mots réservés
• En plus de ces règles, il faut encore ajouter que vous ne pouvez
pas utiliser comme noms de variables les 29 «mots réservés» au
langage ci-dessous :
and assert break class continue def
del elif else except exec finally
for from global if import in
is lambda not or pass print
raise return try while yield

Algorithmique et Programmation 40
Typage des variables

Sous Python, il n'est pas nécessaire d'écrire des lignes


de programme spécifiques pour définir le type des
variables avant de pouvoir les utiliser. Il vous suffit en
effet d'assigner une valeur à un nom de variable pour
que celle-ci soit automatiquement créée avec le type qui
correspond au mieux à la valeur fournie. On dira à ce
sujet que le typage des variables sous Python est un
typage dynamique, par opposition au typage
statique qui définie à l’avance le type de la variable.

Algorithmique et Programmation 41
Les types des données
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.

Liste des types


int Nombre entier optimisé
long Nombre entier de taille arbitraire
float Nombre à virgule flottante
complex Nombre complexe
str Chaîne de caractère
list Liste de longueur variable
dict dictionnaire
bool Booléen
Algorithmique et Programmation 42
La fonction type()
Pour connaître le type d’une donnée ou le type de la valeur d’une variable, il
suffit d’utiliser la fonction type().

Exemples :

Wednesday, October 7, 2020 Prof. M. LAHLOU 47


Le type int (entier) et le type float (réelle)
Le type int est utilisé pour stocker un entier, en anglais integer. Pour cette
raison, on appelle ce type int.

Le type float est utilisé pour stocker des nombres à virgule flottante,
désignés en anglais par l’expression floating point numbers. Pour cette
raison, on appelle ce type : float. En français, on parle de flottant.
Exemples :

Wednesday, October 7, 2020 Prof. M. LAHLOU 48


Opérations sur les types numériques
• Les quatre opérations arithmétiques de base se font de manière simple sur
les types numériques (nombres entiers et floats) :

• Remarquez toutefois que si vous mélangez les types entiers et floats, le


résultat est renvoyé comme un float (car ce type est plus général). Par
ailleurs, l'utilisation de parenthèses permet de gérer les priorités.
• L'opérateur / effectue une division. Contrairement aux opérateurs +, - et *,
celui-ci renvoie systématiquement un float :

Wednesday, October 7, 2020 Prof. M. LAHLOU 49


Opérations sur les types numériques (suite)
L'opérateur puissance utilise les symboles ** :

Pour obtenir le quotient et le reste d'une division entière (voir ici pour un petit rappel sur
la division entière), on utilise respectivement les symboles // et modulo % :

Les symboles +, -, *, /, **, // et % sont appelés opérateurs, car ils réalisent des opérations
sur les variables.
Enfin, il existe des opérateurs « combinés » qui effectue une opération et une affectation
en une seule étape :
L'opérateur += effectue une addition puis affecte le résultat à la
même variable. Cette opération s'appelle une « incrémentation ».
Les opérateurs -=, *= et /= se comportent de manière similaire
pour la soustraction, la multiplication et la division.

Wednesday, October 7, 2020 Prof. M. LAHLOU 50


Opérateurs mathématiques

symbole effet exemple


+ addition 6+4 == 10
- soustraction 6-4 == 2
* multiplication 6*4 == 24

/ Division réelle 6/4 == 1.5

** élévation à la puissance 12**2 == 144


// division entière 6//4 == 1
% reste de la division entière 6%4 == 2

Algorithmique et Programmation 47
Le type str (chaîne de caractères)
Sous Python, une donnée de type str est une suite quelconque de caractères
délimitée soit par des apostrophes (simple quotes ' '), soit par des guillemets
(double quotes " "). str est l’abréviation de string, qui veut dire chaîne de
caractères .

Wednesday, October 7, 2020 Prof. M. LAHLOU 51


Opérations sur les chaînes de caractères
Pour les chaînes de caractères, deux opérations sont possibles,
l'addition et la multiplication :

• L'opérateur d'addition + concatène (assemble) deux chaînes de caractères.


• L'opérateur de multiplication * entre un nombre entier et une chaîne de caractères
duplique (répète) plusieurs fois une chaîne de caractères.

Attention
Vous observez que les opérateurs + et * se comportent différemment s'il s'agit
d'entiers ou de chaînes de caractères : 2 + 2 est une addition alors que "2" + "2" est
une concaténation. On appelle ce comportement redéfinition des opérateurs.
Wednesday, October 7, 2020 Prof. M. LAHLOU 52
Opérateurs de chaînes

symbole effet exemple

Concaténation de deux chaînes de


+
caractères

La fonction len() retourne la longueur


len()
(length) de la chaîne de caractères

* Répetition d’une chaîne de caractère

\ Séquence d'échappement

Indique si une sous-chaine de caractères


in
est contenu dans une chaine de caractères
Algorithmique et Programmation 50
Opérateurs de chaînes

• Extraction de sous-chaînes

• La méthode find(): recherche une chaîne de caractères passée en


argument.

Algorithmique et Programmation 51
Opérateurs de chaînes
• La méthode split(): découpe un texte en éléments dans un tableau, en
utilisant comme séparateur les espaces ou les tabulations. Il est possible de
modifier le séparateur de champs.

Séparateur « : »

Algorithmique et Programmation 52
Le type bool (booléen)
Le type bool est utilisé pour les booléens. Un booléen peut prendre les
valeurs True ou False.

Remarque : la fonction not est un opérateur logique qui renvoie l’opposé de


la valeur booléenne transmise. Pour True, on obtient False. Réciproquement,
il renvoie False quand on lui transmet True.

Wednesday, October 7, 2020 Prof. M. LAHLOU 54


Opérateurs logiques
• Les expressions avec un opérateur
logique sont évaluées à True ou
False
• X or Y : OU logique, si X évalué à True,
alors l'expression est True et Y n'est
pas évalué. Sinon, l'expression est
évaluée à la valeur booléenne de Y.
• X and Y : ET logique, si X est évalué à
False, alors l'expression est False et Y
n'est pas évalué. Sinon, l'expression
est évaluée à la valeur booléenne de Y.
• not X : évalué à la valeur booléenne
opposée de X.

Algorithmique et Programmation 54
Opérateurs de comparaisons
• Tout comme les opérateurs logiques, les opérateurs de comparaison
renvoient une valeur booléenne True ou False. Les opérateurs de
comparaisons s'appliquent sur tous les types de base.
• < strictement inférieur
• > strictement supérieur
• <= inférieur ou égal
• >= supérieur ou égal
• == égal
• != différent
• X is Y : X et Y représentent le même objet.
• X is not Y : X et Y ne représentent pas le même objet
• Il est possible d'enchaîner les opérateurs : X < Y < Z, dans ce cas, c'est Y
qui est pris en compte pour la comparaison avec Z et non pas
l'évaluation de (X < Y) comme on pourrait s'y attendre dans d'autres
langages.

Algorithmique et Programmation 55
Conversion de types
• En programmation, on est souvent amené à convertir les types, c'est-à-dire
passer d'un type numérique à une chaîne de caractères ou vice-versa. En
Python, rien de plus simple avec les fonctions int(), float() et str(). Pour vous en
convaincre, regardez ces exemples :

• Conversions sont essentielles dans le cas de l’utilisation de fichiers ou de


l’instruction input(). En effet, lorsqu'on lit ou écrit des nombres dans ces deux
cas, ils sont considérés comme du texte, donc des chaînes de caractères.
• Toute conversion d'une variable d'un type en un autre est appelé casting en
anglais, il se peut que vous croisiez ce terme si vous consultez d'autres
ressources.
Wednesday, October 7, 2020 Prof. M. LAHLOU 53
Le type complex (complexe)
Python possède par défaut un type pour manipuler les nombres complexes.
La partie imaginaire est indiquée grâce à la lettre « j » ou « J ». La lettre
mathématique utilisée habituellement, le « i », n’est pas utilisée en Python
car la variable i est souvent utilisée dans les boucles.
Exemples :

Wednesday, October 7, 2020 Prof. M. LAHLOU 55


Ordre d'évaluation des expressions

Algorithmique et Programmation 58
Priorité des opérations

• Lorsqu'il y a plus d'un opérateur dans une expression, l'ordre dans lequel les
opérations doivent être effectuées dépend de règles de priorité. Sous Python, les
règles de priorité sont les mêmes que celles qui vous ont été enseignées au cours de
mathématique. Vous pouvez les mémoriser aisément à l'aide d'un « truc »
mémotechnique, l'acronyme PEMDAS :
1. P pour parenthèses. Ce sont elles qui ont la plus haute priorité. Elles vous permettent donc
de « forcer » l'évaluation d'une expression dans l'ordre que vous voulez.
Ainsi 2*(3-1) = 4, et (1+1)**(5-2) = 8.
2. E pour exposants. Les exposants sont évalués ensuite, avant les autres opérations.
Ainsi 2**1+1 = 3 (et non 4), et 3*1**10 = 3 (et non 59049 !).
3. M et D pour multiplication et division, qui ont la même priorité. Elles sont évaluées avant
l'addition A et la soustraction S, lesquelles sont donc effectuées en dernier lieu.
Ainsi 2*3-1 = 5 (plutôt que 4), et 2/3-1 = -1 (Rappelez-vous que par défaut Python effectue
une division entière).
4. Si deux opérateurs ont la même priorité, l'évaluation est effectuée de gauche à droite.
Ainsi dans l'expression 59*100/60, la multiplication est effectuée en premier, et la machine
doit donc ensuite effectuer 5900/60, ce qui donne 98. Si la division était effectuée en
premier, le résultat serait 59(rappelez-vous ici encore qu'il s'agit d'une division entière).

Algorithmique et Programmation 59
Remarques
• Lors de mélange de types numériques lors d’une opération, la
réponse sera du type de l’opérande la plus complexe.

• En Python, vrai signifie n’importe quel nombre différent de zéro


ou un objet non vide; faux signifie zéro, none ou un objet vide

Algorithmique et Programmation 60
Bases de Python
Les instructions simples entrées, sorties et affectation

Wednesday, October 7, 2020 Prof. M. LAHLOU 14


Instruction d’entrée - input

• Fonction : Instruction permettant de placer en mémoire les informations


fournies par l'utilisateur.

• Syntaxe : Nom_de_variable = input(‘Message’)


• Nom_de_variable : La variable qui va
accueillir la valeur saisie au clavier qui sera
considérer systématiquement une chaîne
de caractères, ainsi, si l’utilisateur tape
l’entier 25, la valeur qui sera stocké
dans la variable est ’25’

• ‘Message’: Le message d’invite qui


s’affiche à l’écran avant la saisie.
31 janvier 2022 Programmation structurée 20
Entrée de l’utilisateur

• Nous pouvons
demander à Python de
faire une pause et de
lire les données de
l’utilisateur à l’aide de
la fonction input()
• La fonction input()
renvoie une chaîne de
caractères

01/09/2024 Prof. M. LAHLOU 51


Entrée de l’utilisateur

• Nous pouvons
demander à Python de
faire une pause et de
lire les données de
l’utilisateur à l’aide de
la fonction input()
• La fonction input()
renvoie une chaîne de
caractères

01/09/2024 Prof. M. LAHLOU 52


Conversion des entrées utilisateur

• Si nous voulons lire un


nombre de l’utilisateur, nous
devons le convertir d’une
chaîne de caractères en un
nombre à l’aide d’une
fonction de conversion de
type
• Plus tard, nous traiterons
des mauvaises données
d’entrée

01/09/2024 Prof. M. LAHLOU 53


Les entrées: des exemples d’utilisation

Monday, January 31, 2022 Prof. M. LAHLOU 63


Instruction d’affichage - print

• Fonction: Instruction permettant de visualiser les informations placées en


mémoire

• Syntaxe: print(expression)
A noter que l’instruction print provoque un saut de ligne
après l’affichage de l’expression (comportement par défaut).

• Exemple
print(3) → Valeur numérique
print(Prix) → Contenu d'une variable
print(Prix+Taux) → Le résultat d’une expression
print("Prix") → Chaîne de caractère, message
print("Le prix est", Prix) → Expression mixte

31 janvier 2022 Programmation structurée 21


Instruction d’affectation

• Fonction : Instruction permettant d’attribuer à la variable identifiée par l'élément


placé à gauche du symbole = la valeur de l'élément placé à droite de ce symbole

• Syntaxe: Nom_de_variable = Expression


Exemple: maVar = monAutreVar

Avant l’affectation Après l’affectation

• Exemples:
A = 3.14; B = 5; C = 8; B = A+1; B = B+1; C = B
31 janvier 2022 Programmation structurée 22
Affectation simple
• Le symbole d’affectation est le signe "=".

• Dans cet exemple, a=5 crée la variable a et lui affecte


la valeur 5.

• Ensuite, b=a crée une variable b et lui affecte la valeur


contenu actuellement dans a, c’est-à-dire 5.

• La commande a="IAV Hassan II" remplace le contenu


de la variable a par cette chaîne de caractères. On peut
alors vérifier que la variable b est inchangée.

• Enfin, le résultat de l’opération 22/7. remplace la


chaîne de caractères dans la variable a par le
flottant 3.142857142857143.

01/09/2024 Prof. M. LAHLOU 57


Affectations simultanées

• Sous Python, on peut assigner une valeur à plusieurs variables


simultanément.

• La commande x = y = 7 affecte simultanément la valeur 7 à x et à y.

01/09/2024 Prof. M. LAHLOU 58


Affectations parallèles
• Voici quelques exemples :

• La commande a,b=3,4 affecte simultanément la valeur 3 à a et la


valeur 4 à b.
• Dans une cas, on pourrait aussi bien remplacer cette instruction
par a=3 et b=4.
• Par contre l’instruction a,b=b,a est plus intéressante car elle permet de
permuter les valeurs de a et b, ce qui ne peut se faire autrement qu’en
utilisant une troisième variable

01/09/2024 Prof. M. LAHLOU 59


Exemples
• Écrire un programme qui affiche "Bonjour le monde"

• Écrire un programme qui permet de saisir le nom de


l'utilisateur et de renvoyer "Bonjour", suivi de ce nom

• Écrire un programme qui demande à l'utilisateur la saisie


de a et b et affiche la somme de a et de b.

Algorithmique et Programmation 68
Exemples
• Écrire un programme qui demande à l'utilisateur son année de naissance et qui affiche
son âge. L'année courante sera mise dans une variable.

• Écrire un programme qui demande à l'utilisateur les coordonnées de deux points dans le
plan et qui calcule puis affiche la distance entre ces deux points selon la formule :

Algorithmique et Programmation 69
Exercices
• Ecrire un programme qui calcule à partir d’un prix hors taxe fournis par l’utilisateur la taxe et le prix TTC
(La valeur de la taxe étant de 20%).
• Écrivez un programme qui convertisse en radians un angle fourni au départ en degrés, minutes,
secondes.
• Écrivez un programme qui convertisse en degrés, minutes, secondes un angle fourni au départ en
radians.
• Écrivez un programme qui convertisse en degrés Celsius une température exprimée au départ en degrés
Fahrenheit, ou l'inverse. La formule de conversion est : TF=TC×1,8+32.
• Écrivez un programme qui calcule les intérêts accumulés chaque année pendant 20 ans, par
capitalisation d'une somme de 1000 dh placée en banque au taux fixe de 4,3%
• Une légende de l'Inde ancienne raconte que le jeu d'échecs a été inventé par un vieux sage, que son roi
voulut remercier en lui affirmant qu'il lui accorderait n'importe quel cadeau en récompense. Levieux
sage demanda qu'on lui fournisse simplement un peu de riz pour ses vieux jours, et plus précisément un
nombre de grains de riz suffisant pour que l'on puisse en déposer 1 seul sur la première case du jeu qu'il
venait d'inventer, deux sur la suivante, quatre sur la troisième, et ainsi de suite jusqu'à la 64ème case.
Écrivez un programme Python qui affiche le nombre de grains à déposer sur chacune des 64 cases du
jeu. Calculez ce nombre de deux manières :
• Le nombre exact de grains (nombre entier)
• Le nombre de grains en notation scientifique (nombre réel)

Algorithmique et Programmation 70
Exercices
• Écrivez un script qui détermine si une chaîne contient ou non le
caractère «e».
• Écrivez un script qui compte le nombre d'occurrences du caractère
«e» dans une chaîne.
• Écrivez un script qui recopie une chaîne (dans une nouvelle
variable), en insérant des astérisques entre les caractères. Ainsi
par exemple, «python» devra devenir «p*y*t*h*o*n»
• Écrivez un script qui recopie une chaîne (dans une nouvelle
variable) en l'inversant. Ainsi par exemple, «zorglub» deviendra
«bulgroz».
• En partant de l'exercice précédent, écrivez un script qui détermine
si une chaîne de caractères donnée est un palindrome (c'est-à-dire
une chaîne qui peut se lire indifféremment dans les deux
sens),comme par exemple «radar» ou «s.o.s».

Algorithmique et Programmation 71
Bases de Python
Tests (Instructions conditionnelles)
Les tests sont un élément essentiel à tout langage informatique si on
veut lui donner un peu de complexité car ils permettent à l'ordinateur
de prendre des décisions. Pour cela, Python utilise l'instruction if ainsi
qu'une comparaison que nous avons abordée au chapitre précédent.

Wednesday, October 7, 2020 Prof. M. LAHLOU 14


Instruction if
Syntaxe

condition est une expression booléenne, c’est-à-dire une


expression qui prend pour valeur True (Vrai) ou False (Faux).
L’instruction A n’est exécutée que si la condition est vérifiée
(c’est-à-dire si elle prend pour valeur True).
L’instruction if est une instruction composée. Le : (deux-points) à la fin de la ligne
introduit le bloc d’instructions qui sera exécuté si la condition est vérifiée.
Exemple 1 avec condition vraie : Exemple 1 avec condition fausse :

Affichage après exécution :

Wednesday, October 7, 2020 Prof. M. LAHLOU 16


Instruction if (suite)
Exemple 2 avec condition vraie : Exemple 2 avec condition fausse :

Dans ces exemples, le bloc après le if contient deux instructions. L’instruction


print("Fin") ne fait pas partie du bloc car elle n’est pas indentée.

Affichage après exécution :

Wednesday, October 7, 2020 Prof. M. LAHLOU 29


Instruction if … else
Syntaxe

Exemple avec condition vraie : Exemple avec condition fausse :

Affichage après exécution :

Wednesday, October 7, 2020 Prof. M. LAHLOU 30


Bloc d’instructions - Indentation
• L’instruction if est la structure de test la plus simple. Sa syntaxe en Python
fait intervenir la notion de bloc. Nous allons d’abord étudier cette notion
plus en détail.

• Un bloc est défini par une indentation obtenue en décalant le début des
instructions vers la droite grâce à des espaces en début de ligne
(habituellement 4 espaces mais ce n’est pas obligatoire). Toutes les
instructions d’un même bloc doivent être indentées exactement au même
niveau (c’est-à-dire décalées à droite d’un même nombre d’espaces).

• Un bloc peut contenir une ou plusieurs instructions, et notamment des


instructions composées (tests, boucles, etc.).

Wednesday, October 7, 2020 Prof. M. LAHLOU 15


Quelques bases rapides en Python
(suite)
• Les blocs d’instructions
Un bloc d'instructions est une suite d'instructions qui est alignée sur la même
tabulation. Les blocs d'instructions sont créés par les instructions de contrôles comme
if, while et for, ainsi que par les instructions permettant de déclarer des fonctions.
Sous Python, toutes les instructions composées ont toujours la même structure : une
ligne d'en-tête terminée par un double point, suivie d'une ou de plusieurs instructions
indentées sous cette ligne d'en-tête.

S'il y a plusieurs instructions indentées sous la ligne d'en-tête,


elles doivent l'être exactement au même niveau. Ces instructions
indentées constituent ce que nous appellerons désormais un bloc
d'instructions. Un bloc d'instructions est une suite d'instructions
formant un ensemble logique, qui n'est exécuté que dans certaines
conditions définies dans la ligne d'en-tête.

Monday, January 31, 2022 Prof. M. LAHLOU 35


Exemple animé d’une structure
conditionnelle

x = int(input("x? "))
y = int(input("y? "))
if(x>=y):
max = x
else:
max = y
print("max = ", max)

mémoire affichage

Algorithmique et Programmation 17
Exemple animé d’une structure
conditionnelle

x = int(input("x? "))
y = int(input("y? "))
x?
if(x>=y):
max = x
else:
max = y
print("max = ", max)

mémoire affichage

Algorithmique et Programmation 17
Exemple animé d’une structure
conditionnelle

x = int(input("x? "))
y = int(input("y? "))
if(x>=y): x? 5

max = x y?
else:
max = y
x 5
print("max = ", max)

mémoire affichage

Algorithmique et Programmation 17
Exemple animé d’une structure
conditionnelle

x = int(input("x? "))
y = int(input("y? "))
if(x>=y): x? 5

? max = x y? 19
y 19
else:
? max = y
x 5
print("max = ", max)

mémoire affichage

Algorithmique et Programmation 17
Exemple animé d’une structure
conditionnelle

x = int(input("x? "))
y = int(input("y? "))
max 19 x? 5
if(x>=y):
max = x y? 19
y 19
else:
max = y
x 5
print("max = ", max)

mémoire affichage

Algorithmique et Programmation 17
Exemple animé d’une structure
conditionnelle

x = int(input("x? "))
y = int(input("y? "))
max 19 x? 5
if(x>=y):
max = x y? 19
y 19
else: max = 19
max = y
x 5
print("max = ", max)

mémoire affichage

Algorithmique et Programmation 17
Exemple: Equation de second degrés

Algorithmique et Programmation 82
Exemple: Equation de second degrés

Algorithmique et Programmation 82
La structure conditionnelle:
instructions imbriquées
• Pour traiter le cas des notes invalides (<0 ou >20), on peut imbriquer des instructions
conditionnelles :

Algorithmique et Programmation 83
La structure conditionnelle:
l'instruction elif
• Une instruction elif (contraction de else if) est toujours associée à une instruction if
• Syntaxe

• Si l'expression 1 est vraie alors le bloc d'instructions 1 est exécuté, et on passe à la suite
du programme.
• Si l'expression 1 est fausse alors on teste l'expression 2 :
• si l'expression 2 est vraie on exécute le bloc d'instructions 2, et on passe à la suite du programme.
• si l'expression 2 est fausse alors on teste l'expression 3, etc...
• Le bloc d'instructions 4 est donc exécuté si toutes les expressions sont fausses (c'est le
bloc "par défaut").

Algorithmique et Programmation 84
Example 9: Conversion de température
(avec else)
• Programme Python

• Exemple d’exécution

01/09/2024 Prof. M. LAHLOU 80


Example 9: Conversion de température
(avec elif)
• Programme Python

• Exemple d’exécution

01/09/2024 Prof. M. LAHLOU 81


La structure conditionnelle:
l'instruction elif
• Exemple

Algorithmique et Programmation 85
Exercice
• a=7
b=12
if a>5:
b=b-4
if b>=10:
b=b+1

Que vaut la valeur finale de la variable b ?

• a=3
b=6
if a>5 or b!=3:
b=4
else:
b=2

Que vaut la valeur finale de la variable b ?

Algorithmique et Programmation 86
Exercice
• a=10
if a<5:
a=20
elif a<100:
a=500
elif a<1000:
a=1
else:
a=0

Que vaut la valeur finale de la variable a ?

• Le numéro de sécurité sociale est constitué de 13 chiffres auquel s'ajoute la clé de contrôle (2
chiffres).
La clé de contrôle est calculée par la formule : 97 - (numéro de sécurité sociale modulo 97)
Ecrire un script qui contrôle la validité d'un numéro de sécurité sociale.

Algorithmique et Programmation 87
Exercice
• Un patron décide de calculer le montant de sa participation au prix du
repas de ses employés de la façon suivante :
• S'il est célibataire participation de 20%

• S'il est marié participation de 25%

• S'il a des enfants participation de 10% supplémentaires par enfant

• La participation est plafonnée à 50%

• Si le salaire mensuel est inférieur à 6000dh la participation est majorée de


10%

• Écrire le programme qui lit les informations au clavier et affiche pour un


salarié, la participation à laquelle il a droit.

Algorithmique et Programmation 88
Bases de Python
Boucles
Les boucles s’utilisent pour répéter plusieurs fois l’exécution d’une partie du
programme. En programmation, on est souvent amené à répéter plusieurs fois une
instruction. Incontournables à tout langage de programmation, les boucles vont
nous aider à réaliser cette tâche de manière compacte et efficace.

Wednesday, October 7, 2020 Prof. M. LAHLOU 32


Boucles bornées et non bornées
• Boucle bornée
Quand on sait combien de fois doit avoir
lieu la répétition, on utilise généralement
une boucle for.

• Boucle non bornée


Si on ne connait pas à l’avance le nombre de
répétitions, on choisit une boucle while.

Wednesday, October 7, 2020 Prof. M. LAHLOU 33


Choisir entre for… et while…

Boucle while

Nombre
d’itérations
connu ?

Boucle for

31 janvier 2022 Programmation structurée 31


Boucle for
• L’instruction for est une instruction composée, c’est-à-dire une instruction
dont l’en-tête se termine par deux-points :, suivie d’un bloc indenté qui
constitue le corps de la boucle.
• On dit que l’on réalise une itération de la boucle à chaque fois que le corps
de la boucle est exécuté.
• Dans l’en-tête de la boucle, on précise après le mot-clé for le nom d’une
variable (i dans l’exemple ci-dessus) qui prendra successivement toutes les
valeurs qui sont données après le mot-clé in. On dit souvent que cette
variable (ici i) est un compteur car elle sert à numéroter les itérations de la
boucle.
• Il est possible d’obtenir le même résultat sans donner la liste des valeurs,
mais en utilisant la fonction range().

Affichage après exécution :

Wednesday, October 7, 2020 Prof. M. LAHLOU 34


Boucle for (suite)
• Pour parcourir les indices d’une liste, il est possible de combiner range() et
len() comme ci-dessous :

Affichage après exécution :

Rappel : La fonction len() renvoie le nombre d’éléments :

Wednesday, October 7, 2020 Prof. M. LAHLOU 35


Boucle for (suite)
• Dans l’exemple suivant, nous allons illustrer que la variable indiquée après
for parcourt toutes les valeurs de la liste donnée après in :

Wednesday, October 7, 2020 Prof. M. LAHLOU 36


La notion de séquences
• Un objet itérable est une séquence de données auxquelles il
est possible d'accéder à l'aide d'un indice. Voyons ça avec
l'aide d'un petit schéma d'une séquence de N éléments :

• Une séquence est une suite de données placées en mémoire


dans un ordre bien précis. Dans le schéma ci-dessus, on peut
voir l'indice associé à chaque donnée dans la séquence.
• Les indices commencent à 0 ! Ainsi, les indices d'une
séquence de longueur N iront de 0 à N-1 !

Algorithmique et Programmation 156


Les séquences: la fonction range()
• La fonction range() permet de créer une liste correspondant à une
suite de nombres, en voici quelque exemples.

Algorithmique et Programmation 157


Exemple animé de l’instruction for

n = int(input("Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n"))


somme = 0
for i in range(1, n+1):
somme = somme + i
print (" La somme des ",n,"premiers entiers = ",somme)

mémoire

affichage

Algorithmique et Programmation 31
Exemple animé de l’instruction for

n = int(input("Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n"))


somme = 0
for i in range(1, n+1):
somme = somme + i
print (" La somme des ",n,"premiers entiers = ",somme)

n 5 Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n 5

mémoire

affichage

Algorithmique et Programmation 31
Exemple animé de l’instruction for

n = int(input("Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n"))


somme = 0
for i in range(1, n+1):
somme = somme + i
print (" La somme des ",n,"premiers entiers = ",somme)

n 5 Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n 5

somme 0
mémoire

affichage

Algorithmique et Programmation 31
Exemple animé de l’instruction for

n = int(input("Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n"))


somme = 0
for i in range(1, n+1):
somme = somme + i
print (" La somme des ",n,"premiers entiers = ",somme)

n 5 Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n 5

i 1

somme 0
mémoire

affichage

Algorithmique et Programmation 31
Exemple animé de l’instruction for

n = int(input("Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n"))


somme = 0
for i in range(1, n+1):
somme = somme + i
print (" La somme des ",n,"premiers entiers = ",somme)

n 5 Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n 5

i 1

somme 1
mémoire

affichage

Algorithmique et Programmation 31
Exemple animé de l’instruction for

n = int(input("Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n"))


somme = 0
for i in range(1, n+1):
somme = somme + i
print (" La somme des ",n,"premiers entiers = ",somme)

n 5 Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n 5

i 2
somme 1
mémoire

affichage

Algorithmique et Programmation 31
Exemple animé de l’instruction for

n = int(input("Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n"))


somme = 0
for i in range(1, n+1):
somme = somme + i
print (" La somme des ",n,"premiers entiers = ",somme)

n 5 Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n 5

i 2
somme 3
mémoire

affichage

Algorithmique et Programmation 31
Exemple animé de l’instruction for

n = int(input("Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n"))


somme = 0
for i in range(1, n+1):
somme = somme + i
print (" La somme des ",n,"premiers entiers = ",somme)

n 5 Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n 5

i 3
somme 3
mémoire

affichage

Algorithmique et Programmation 31
Exemple animé de l’instruction for

n = int(input("Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n"))


somme = 0
for i in range(1, n+1):
somme = somme + i
print (" La somme des ",n,"premiers entiers = ",somme)

n 5 Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n 5

i 3
somme 6
mémoire

affichage

Algorithmique et Programmation 31
Exemple animé de l’instruction for

n = int(input("Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n"))


somme = 0
for i in range(1, n+1):
somme = somme + i
print (" La somme des ",n,"premiers entiers = ",somme)

n 5 Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n 5

i 4
somme 6
mémoire

affichage

Algorithmique et Programmation 31
Exemple animé de l’instruction for

n = int(input("Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n"))


somme = 0
for i in range(1, n+1):
somme = somme + i
print (" La somme des ",n,"premiers entiers = ",somme)

n 5 Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n 5

i 4
somme 10
mémoire

affichage

Algorithmique et Programmation 31
Exemple animé de l’instruction for

n = int(input("Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n"))


somme = 0
for i in range(1, n+1):
somme = somme + i
print (" La somme des ",n,"premiers entiers = ",somme)

n 5 Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n 5

i 5
somme 10
mémoire

affichage

Algorithmique et Programmation 31
Exemple animé de l’instruction for

n = int(input("Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n"))


somme = 0
for i in range(1, n+1):
somme = somme + i
print (" La somme des ",n,"premiers entiers = ",somme)

n 5 Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n 5

i 5
somme 15
mémoire

affichage

Algorithmique et Programmation 31
Exemple animé de l’instruction for

n = int(input("Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n"))


somme = 0
for i in range(1, n+1):
somme = somme + i
print (" La somme des ",n,"premiers entiers = ",somme)

n 5 Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n 5

i 6
somme 15
mémoire

affichage

Algorithmique et Programmation 31
Exemple animé de l’instruction for

n = int(input("Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n"))


somme = 0
for i in range(1, n+1):
somme = somme + i
print (" La somme des ",n,"premiers entiers = ",somme)

n 5 Donner la valeur de l'entier n pour lequel vous voulez calculer : 1+2+...+n 5

La somme des 5 premiers entiers = 15


i 6
somme 15
mémoire

affichage

Algorithmique et Programmation 31
Example 12: La moyenne d’une série de nombres
(Version 1)

• Programme Python

• Exemple d’exécution

01/09/2024 Prof. M. LAHLOU 109


Exercices
1. L'utilisateur donne un entier supérieur à 1 et le programme
affiche, s'il y en a, tous ses diviseurs propres sans
répétition ainsi que leur nombre. S'il n'y en a pas, il
indique qu'il est premier. Par exemple :
Entrez un entier strictement positif : 12
Diviseurs propres sans répétition de 12 : 2 3 4 6 (soit 4 diviseurs propres)
Entrez un entier strictement positif : 13
Diviseurs propres sans répétition de 13 : aucun ! Il est premier

2. Écrire un programme qui approxime par défaut la valeur


de la constante mathématique e, pour n assez grand(56),
en utilisant la formule : 𝑛
1
𝑒≈෍
𝑖!
𝑖=0

Monday, January 31, 2022 Prof. M. LAHLOU 109


Boucle while
Syntaxe

Le mot-clé while signifie tant que en anglais.


Le corps de la boucle (c’est-à-dire le bloc d’instructions
indentées) sera répété tant que la condition est vraie.
Dans l’exemple ci-dessous, x sera multiplié par 2 tant que sa valeur reste
inférieure à 10.
Remarque : Si la condition est fausse au départ, le corps de la boucle n’est jamais
exécuté. Si la condition reste toujours vraie, alors le corps de la boucle est répété
indéfiniment.
Exemple de programme : Affichage après exécution :

Wednesday, October 7, 2020 Prof. M. LAHLOU 37


Exemple animé de l’instruction while

print("Somme d'entiers positifs")


valeur = int(input ("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1):
somme = somme + valeur
valeur = int(input ("Valeur suivante (ou -1 pour arrêter)"))
print("La somme des valeurs saisies est : ", somme)

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

print("Somme d'entiers positifs")


valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
somme = somme + valeur
valeur = int(input ("Valeur suivante (ou -1 pour arrêter)"))
print("La somme des valeurs saisies est : ", somme)

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur 8
print("Somme d'entiers positifs")
valeur = int(input ("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)"))


print("La somme des valeurs saisies est : ", somme)

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur 8
print("Somme d'entiers positifs")
somme 0
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)"))


print("La somme des valeurs saisies est : ", somme)

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur 8
print("Somme d'entiers positifs")
somme 0
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
? somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)"))


? print("La somme des valeurs saisies est : ", somme)

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur 8
print("Somme d'entiers positifs")
somme 8
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)"))


print("La somme des valeurs saisies est : ", somme)

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur 5
print("Somme d'entiers positifs")
somme 8
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)")) Valeur suivante(ou -1 pour arrêter) 5

print("La somme des valeurs saisies est : ", somme)

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur 5
print("Somme d'entiers positifs")
somme 8
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
? somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)")) Valeur suivante(ou -1 pour arrêter) 5

? print("La somme des valeurs saisies est : ", somme)

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur 5
print("Somme d'entiers positifs")
somme 13
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)")) Valeur suivante(ou -1 pour arrêter) 5

print("La somme des valeurs saisies est : ", somme)

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur 12
print("Somme d'entiers positifs")
somme 13
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)")) Valeur suivante(ou -1 pour arrêter) 5

print("La somme des valeurs saisies est : ", somme) Valeur suivante(ou -1 pour arrêter) 12

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur 12
print("Somme d'entiers positifs")
somme 13
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
? somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)")) Valeur suivante(ou -1 pour arrêter) 5

print("La somme des valeurs saisies est : ", somme) Valeur suivante(ou -1 pour arrêter) 12
?

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur 12
print("Somme d'entiers positifs")
somme 25
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)")) Valeur suivante(ou -1 pour arrêter) 5

print("La somme des valeurs saisies est : ", somme) Valeur suivante(ou -1 pour arrêter) 12

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur 16
print("Somme d'entiers positifs")
somme 25
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)")) Valeur suivante(ou -1 pour arrêter) 5

print("La somme des valeurs saisies est : ", somme) Valeur suivante(ou -1 pour arrêter) 12

Valeur suivante(ou -1 pour arrêter) 16

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur 16
print("Somme d'entiers positifs")
somme 25
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
? somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)")) Valeur suivante(ou -1 pour arrêter) 5

print("La somme des valeurs saisies est : ", somme) Valeur suivante(ou -1 pour arrêter) 12
?
Valeur suivante(ou -1 pour arrêter) 16

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur 16
print("Somme d'entiers positifs")
somme 41
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)")) Valeur suivante(ou -1 pour arrêter) 5

print("La somme des valeurs saisies est : ", somme) Valeur suivante(ou -1 pour arrêter) 12

Valeur suivante(ou -1 pour arrêter) 16

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur 7
print("Somme d'entiers positifs")
somme 41
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)")) Valeur suivante(ou -1 pour arrêter) 5

print("La somme des valeurs saisies est : ", somme) Valeur suivante(ou -1 pour arrêter) 12

Valeur suivante(ou -1 pour arrêter) 16

Valeur suivante(ou -1 pour arrêter) 7

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur 7
print("Somme d'entiers positifs")
somme 41
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
? somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)")) Valeur suivante(ou -1 pour arrêter) 5

print("La somme des valeurs saisies est : ", somme) Valeur suivante(ou -1 pour arrêter) 12
?
Valeur suivante(ou -1 pour arrêter) 16

Valeur suivante(ou -1 pour arrêter) 7

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur 7
print("Somme d'entiers positifs")
somme 48
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)")) Valeur suivante(ou -1 pour arrêter) 5

print("La somme des valeurs saisies est : ", somme) Valeur suivante(ou -1 pour arrêter) 12

Valeur suivante(ou -1 pour arrêter) 16

Valeur suivante(ou -1 pour arrêter) 7

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur -1
print("Somme d'entiers positifs")
somme 48
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)")) Valeur suivante(ou -1 pour arrêter) 5

print("La somme des valeurs saisies est : ", somme) Valeur suivante(ou -1 pour arrêter) 12

Valeur suivante(ou -1 pour arrêter) 16

Valeur suivante(ou -1 pour arrêter) 7

Valeur suivante(ou -1 pour arrêter) -1

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur -1
print("Somme d'entiers positifs")
somme 48
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
? somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)")) Valeur suivante(ou -1 pour arrêter) 5

print("La somme des valeurs saisies est : ", somme) Valeur suivante(ou -1 pour arrêter) 12
?
Valeur suivante(ou -1 pour arrêter) 16

Valeur suivante(ou -1 pour arrêter) 7

Valeur suivante(ou -1 pour arrêter) -1

affichage

Algorithmique et Programmation 38
Exemple animé de l’instruction while

valeur -1
print("Somme d'entiers positifs")
somme 48
valeur = int(input("Donnez une première valeur (ou -1 pour arrêter)"))
somme = 0
mémoire
while (valeur <> -1): Somme d'entiers positifs
somme = somme + valeur Donnez une première valeur (ou -1 pour arrêter) 8

valeur = int(input ("Valeur suivante (ou -1 pour arrêter)")) Valeur suivante(ou -1 pour arrêter) 5

print("La somme des valeurs saisies est : ", somme) Valeur suivante(ou -1 pour arrêter) 12

Valeur suivante(ou -1 pour arrêter) 16

Valeur suivante(ou -1 pour arrêter) 7

Valeur suivante(ou -1 pour arrêter) -1

La somme des valeurs saisies est : 48

affichage

Algorithmique et Programmation 38
Example 13: La moyenne d’une série de nombres
(Version 2)

• Programme Python

• Exemple d’exécution

01/09/2024 Prof. M. LAHLOU 133


Étapes répétées

n=5 Program: Output:


n = 5
No Yes 5
n>0? while n > 0 :
4
print(n)
print(n) 3
n = n – 1 2
print('Décollage!’) 1
n = n -1
) Décollage!
print(n) 0

print('Décollage')

Les boucles (étapes répétées) ont des variables d’itération qui


changent à chaque fois qu’une boucle se déroule. Souvent, ces
variables d’itération passent par une séquence de nombres.
01/09/2024 Prof. M. LAHLOU 134
Une boucle infinie

n=5

No Yes
n>0? n = 5
while n > 0 :
print('Mousser')
print(‘Mousser’))
print(‘Rincer’)
print('Rincer')
print(‘Sécher!’)

print('Sécher!') Qu’est-ce qui ne va pas avec cette boucle ?

01/09/2024 Prof. M. LAHLOU 135


Une autre boucle

n=0

No Yes
n>0? n = 0
while n > 0 :
print('Mousser')
print(‘Mousser’))
print(‘Rincer’)
print('Rincer')
print(‘Sécher!’)

print('Sécher!') Que fait cette boucle ?

01/09/2024 Prof. M. LAHLOU 136


Exercice

a) Ce programme attend des données de la part de son utilisateur. Quels


affichages obtenez vous si vous lui fournissez les données suivantes : 23
142 STOP.
b) Commentez cet algorithme afin d’identifier clairement les différentes
parties du traitement itératif effectué par la boucle tant que.
c) Pourquoi la boucle while est-elle préférable ici à la boucle for?

Algorithmique et Programmation 158


Comment choisir entre boucle for et
boucle while
En général, si on connaît avant de démarrer la boucle le nombre d’itérations à
exécuter, on choisit une boucle for. Au contraire, si la décision d’arrêter la
boucle ne peut se faire que par un test, on choisit une boucle while.
Note: Il est toujours possible de remplacer une boucle for par une boucle
while.
Transformation d’une boucle for en un boucle while

Le programme ci-dessus est équivalent à:

Wednesday, October 7, 2020 Prof. M. LAHLOU 39


L’instruction break dans les boucles
• L’instruction break termine la boucle actuelle et passe à
l’instruction qui suit immédiatement la boucle
• C’est comme un test de boucle qui peut se produire n’importe où
dans le corps de la boucle
Exemple

01/09/2024 Prof. M. LAHLOU 139


L’instruction break dans les
boucles (exemple)

01/09/2024 Prof. M. LAHLOU 140


L’instruction continue dans les boucles
• L’instruction continue termine l’itération en cours et
passe en haut de la boucle pour démarrer l’itération
suivante.
Exemple:

01/09/2024 Prof. M. LAHLOU 141


L’instruction continue dans les
boucles (exemple)

01/09/2024 Prof. M. LAHLOU 142


La clause else dans les boucles
(suite)
La clause else dans un boucle permet de définir un bloc d’instructions qui
sera exécuté à la fin seulement si la boucle s’est déroulée complétement sans
être interrompue par un break.
Contrairement aux instructions présentes après la boucle, qui s’exécutent
dans tous les cas (avec ou sans interruption par un break), le bloc
d’instructions défini dans la clause else ne s’exécutera pas lors de
l’interruption par un break. Après l’interruption, on passera directement aux
instructions après la boucle.
Autrement dit, le bloc de la clause else est exécuté lorsque la boucle se
termine par épuisement de la liste (avec for) ou quand la condition devient
fausse (avec while), mais pas quand la boucle est interrompue par un break.
Ceci est illustré dans la boucle suivante, qui recherche des nombres premiers:

Affichage après exécution :

Wednesday, October 7, 2020 Prof. M. LAHLOU 43


PGCD et Algorithme d'Euclide

Algorithmique et Programmation 137


Exercices
A. 0/2/4
B. 0/1/2/3/4/5
C. 0/2/4/6
D. 2/4/6

Monday, January 31, 2022 Prof. M. LAHLOU 138


Exercices
A. 0/2/4
B. 0/1/2/3/4/5
C. 0/2/4/6
D. 2/4/6

Monday, January 31, 2022 Prof. M. LAHLOU 138


Exercices

Par quoi remplacer les ... pour que le programme


affiche successivement les valeurs 0 ; 3 ; 6 ; 9 ; 12 ?
A. n<12
B. n<=12
C. n<14
D. n**2<145

Monday, January 31, 2022 Prof. M. LAHLOU 138


Exercices

Par quoi remplacer les ... pour que le programme


affiche la plus petite valeur de n telle que n²+3n
dépasse 1000 ?
A. n²+3n<1000
B. n**2+3*n>1000
C. n<1000
D. n**2+3*n<=1000
Monday, January 31, 2022 Prof. M. LAHLOU 138
Exercices
1. On dispose d'une feuille de papier d'épaisseur 0,1 mm.
Combien de fois doit-on la plier au minimum pour que
l'épaisseur dépasse la hauteur de la tour Eiffel 324 m.
Écrire un programme en Python pour résoudre ce
problème.
2. Dans un pays connaissant une forte inflation, le taux
d’inflation mensuel est de 8 %. Un article coûte 500
MAD le 1er janvier 2020.
a. Calculer le prix de cet article au 1er février 2020 puis au
1er mars 2020.
b. Écrire un programme qui calcule le nombre de mois au
bout duquel le prix sera supérieur à 1000 MAD, en
fonction du prix initial.

Monday, January 31, 2022 Prof. M. LAHLOU 139


Bases de Python
Les listes
Les listes (ou list / array ) en python sont une variable dans laquelle on
peut mettre plusieurs variables (équivalent de tableaux dans les autres
langages) .

Wednesday, October 7, 2020 Prof. M. LAHLOU 56


Les listes
• Une liste stocke un ensemble d’éléments dans un ordre particulier (une
séquence), elles permettent de stocker un grand nombre de données de
différents types au même endroit.
• La liste est le type de données le plus polyvalent disponible dans Python qui
peut être écrit comme une liste de valeurs séparées par des virgules
(éléments) entre crochets. Les éléments de la liste peuvent être modifiés.
Exemple :

01/09/2024 Prof. M. LAHLOU 151


Création et initialisation d’une liste
On peut créer une liste vide ou initialement remplie. Python reconnu les listes
automatiquement.

Pour initialiser une liste, on peut ajouter les éléments au moment de la


déclaration, ou l’initialiser via une boucle for .
• Méthode 1 :

• Méthode 2 :

ou

01/09/2024 Prof. M. LAHLOU 152


• Méthode 3

01/09/2024 Prof. M. LAHLOU 153


Le type list (utilisation)
• Un des gros avantages d'une liste est que vous pouvez appeler ses éléments
par leur position. Ce numéro est appelé indice (ou index) de la liste.

• Soyez très attentifs au fait que les indices d'une liste de n éléments
commence à 0 et se termine à n-1. Voyez l'exemple suivant :

• Par conséquent, si on appelle l'élément d'indice 4 de notre liste, Python


renverra un message d'erreur :

Wednesday, October 7, 2020 Prof. M. LAHLOU 58


Définition d'une liste

1. Premièrement, nous définissons une liste de 5 éléments. Notez qu'ils


conservent leur ordre d'origine. Ce n'est pas un accident. Une liste est
un ensemble ordonné d'éléments entouré par des crochets.
2. Une liste peut être utilisée comme un tableau dont l'indice de base est
zéro. Le premier élément de toute liste non vide est toujours li[0].
3. Le dernier élément de cette liste de 5 éléments est li[4] car les listes sont
toujours indicées à partir de zéro.

Algorithmique et Programmation 143


Indices de liste négatifs

1. Un indice négatif permet d'accéder aux éléments à partir de la


fin de la liste en comptant à rebours. Le dernier élément de
toute liste non vide est toujours li[-1].
2. Si vous trouvez que les indices négatifs prêtent à confusion,
voyez-les comme suit : li[n] == li[n + len(li)].
Donc dans cette liste, li[-3] == li[5 - 3] == li[2].

Algorithmique et Programmation 144


Découpage d'une liste

1. Vous pouvez obtenir un sous-ensemble d'une liste, appelé une «tranche» (slice), en
spécifiant deux indices. La valeur de retour est une nouvelle liste contenant les
éléments de la liste, dans l'ordre, en démarrant du premier indice de la tranche (dans
ce cas li[1]), jusqu'à au second indice de la tranche non inclus (ici li[3]).
2. Le découpage fonctionne si un ou les deux indices sont négatifs. Pour vous aider,
vous pouvez les voir comme ceci : en lisant la liste de gauche à droite, le premier
indice spécifie le premier élément que vous désirez et le second indice spécifie le
premier élément dont vous ne voulez pas. La valeur de retour est tout ce qui se
trouve entre les deux.
3. Les listes sont indicées à partir de zéro, donc li[0:3] retourne les trois premiers
éléments de la liste, en démarrant à li[0] jusqu'à li[3] non inclus.

Algorithmique et Programmation 145


Raccourci pour le découpage

1. Si l'indice de tranche de gauche est 0, vous pouvez l'omettre et 0 sera implicite. Donc
li[:3] est la même chose que li[0:3] dans le premier exemple.
2. De la même manière, si l'indice de tranche de droite est la longueur de la liste, vous
pouvez l'omettre. Donc li[3:] est pareil que li[3:5], puisque la liste a 5 éléments.
3. Remarquez la symétrie. Dans cette liste de 5 éléments, li[:3] retourne les 3 premiers
éléments et li[3:] retourne les deux derniers. En fait li[:n] retournera toujours les n
premiers éléments et li[n:] le reste, quelle que soit la longueur de la liste.
4. Si les deux indices sont omis, tous les éléments de la liste sont inclus dans la tranche.
Mais ce n'est pas la même chose que la liste li; c'est une nouvelle liste qui contient
les même éléments. li[:] est un raccourci permettant d'effectuer une copie complète
de la liste.
Algorithmique et Programmation 146
Le type list (opérations)
• Tout comme les chaînes de caractères, les listes supportent l'opérateur + de
concaténation, ainsi que l'opérateur * pour la duplication :

• L'opérateur + est très pratique pour concaténer deux listes.


• Vous pouvez aussi utiliser la méthode .append() lorsque vous souhaitez ajouter un seul
élément à la fin d'une liste.
créer une liste vide ajouter deux éléments, l'un après l'autre, puis avec la méthode .append()
d'abord avec la concaténation

• Dans l'exemple ci-dessus, nous ajoutons des éléments à une liste en utilisant l'opérateur
de concaténation + ou la méthode .append(). Nous vous conseillons dans ce cas précis
d'utiliser la méthode .append() dont la syntaxe est plus élégante.
Wednesday, October 7, 2020 Prof. M. LAHLOU 59
Le type list (opérations +)
Méthodes associées aux listes Explication Exemple

.insert() La méthode .insert() insère un objet


dans une liste avec un indice déterminé :

del L'instruction del supprime un élément


d'une liste à un indice déterminé :

.remove() La méthode .remove() supprime un


élément d'une liste à partir de sa valeur :

.sort() La méthode .sort() trie une liste :

.reverse() La méthode .reverse() inverse une liste :

.count() La méthode .count() compte le nombre


d'éléments (passés en argument) dans
une liste :

Wednesday, October 7, 2020 Prof. M. LAHLOU 60


Le type list (opérations +)
• Test d'appartenance
L'opérateur in teste si un élément fait partie d'une liste.

La variation avec not permet, a contrario, de vérifier qu'un élément n'est pas dans une liste.
• Copie de listes
Il est très important de savoir que l'affectation d'une liste (à partir d'une liste préexistante) crée en
réalité une référence et non une copie :

Vous voyez que la modification de x modifie y aussi !

Wednesday, October 7, 2020 Prof. M. LAHLOU 61


Le type list (opérations +)
• Copie de listes
Pour éviter le problème de référenciation des listes, il va falloir créer une copie
explicite de la liste initiale. Observez cet exemple :

L'instruction x[:] a créé une copie « à la volée » de la liste x. Vous pouvez utiliser aussi
la fonction list() qui renvoie explicitement une liste:

Attention, ces deux astuces ne fonctionnent que pour les listes à une dimension,
autrement dit les listes qui ne contiennent pas elles-mêmes d'autres listes.

Wednesday, October 7, 2020 Prof. M. LAHLOU 62


Filtrage de liste

1. L’expression de mutation est ici très simple (elle retourne juste la valeur de chaque élément),
observez plutôt attentivement l’expression de filtrage. Au fur et à mesure que Python parcours
la liste, il soumet chaque élément à l’expression de filtrage, si l’expression s’évalue à vrai,
l’élément passe par l’expression de mutation et le résultat est inclue dans la liste de résultat. Ici,
on filtre toutes les chaînes d’un seul caractère, il ne reste donc que les chaînes plus longues.
2. Ici, on filtre une valeur spécifique : b. Notez que cela filtre toutes les occurrences de b, puisqu’à
chaque fois qu’il apparaît, l’expression de filtrage s’évaluera à faux.
3. count est une méthode de listes qui retourne le nombre d’occurrences d’une valeur dans la
liste. On pourrait penser que ce filtre élimine les doublons de la liste, retournant une liste
contenant seulement un exemplaire de chaque valeur. Mais en fait, les valeurs qui apparaissent
deux fois dans la liste initiale (ici b et d) sont totalement éliminées. Il y a des moyens de
supprimer les doublons d’une liste mais le filtrage n’est pas la solution.
Algorithmique et Programmation 151
Filtrage de liste (exemple)
• Prenons un exemple simple. On veut obtenir une liste où les éléments sont les mêmes
qu’une autre liste, mais incrémentés. On peut alors naturellement déclarer une liste puis
la parcourir pour y traiter chaque élément :

• La méthode ci-dessus est simple et intuitive mais nous pouvons écrire ce bout de code
de manière plus succincte en Python grâce aux List Compréhension :

• Grâce à cette même expression, il nous est aussi possible de filtrer les éléments insérés
en plus d’effectuer un traitement sur ces mêmes éléments :

Monday, January 31, 2022 Prof. M. LAHLOU 152


Mélanger aléatoirement les éléments
d'une liste sous python
• Le programme suivant crée une liste de valeurs ordonnées
comprise entre 1 et 20, procède ensuite à un mélange aléatoire
des mêmes valeurs au sein de la même liste et à la fin prélève un
échantillon aléatoire de cinq éléments sans remise:

• Ce qui provoquera l’affichage suivant:

Algorithmique et Programmation 153


Des chaînes aux listes
• Pour « convertir » une chaîne en liste, on va utiliser une méthode de chaîne
nommée split (« éclater » en anglais). Cette méthode prend un paramètre
qui est une autre chaîne, souvent d'un seul caractère, définissant comment
on va découper notre chaîne initiale.

Séparateur « ; »

Algorithmique et Programmation 154


Des listes aux chaînes
• Voyons l'inverse à présent, c'est-à-dire si on a une liste contenant plusieurs
chaînes de caractères que l'on souhaite fusionner en une seule. On utilise la
méthode de chaîne join (« joindre » en anglais). Sa syntaxe est un peu
surprenante :

Monday, January 31, 2022 Prof. M. LAHLOU 155


Exemple d’application
• On considère deux séquences d'entiers positifs. Ecrire un programme qui:
1. Lit la première série au clavier et la stocker dans une première liste
2. Lit la deuxième série au clavier et la stocker dans une seconde liste
3. Affiche les nombres communs aux deux séquences.
Exemple : séquence 1 :1 3 4 11 25 28 30
séquence 2 :1 2 3 5 11 24 25 29 30 34 39
résultat affiché : 1, 3, 11, 25, 30.

Monday, January 31, 2022 Prof. M. LAHLOU 159


Exemple d’application
• On considère deux séquences d'entiers positifs. Ecrire un programme qui:
1. Lit la première série au clavier et la stocker dans une première liste
2. Lit la deuxième série au clavier et la stocker dans une seconde liste
3. Affiche les nombres communs aux deux séquences.
Exemple : séquence 1 :1 3 4 11 25 28 30
séquence 2 :1 2 3 5 11 24 25 29 30 34 39
résultat affiché : 1, 3, 11, 25, 30.

Monday, January 31, 2022 Prof. M. LAHLOU 159


Exemple d’application
• On considère deux séquences d'entiers positifs. Ecrire un programme qui:
1. Lit la première série au clavier et la stocker dans une première liste
2. Lit la deuxième série au clavier et la stocker dans une seconde liste
3. Affiche les nombres communs aux deux séquences.
Exemple : séquence 1 :1 3 4 11 25 28 30
séquence 2 :1 2 3 5 11 24 25 29 30 34 39
résultat affiché : 1, 3, 11, 25, 30.

Monday, January 31, 2022 Prof. M. LAHLOU 159


Exercice
Soit T un tableau qui contient n valeurs réelles non triés. Ecrire un
programme qui
1. lit le contenu de ce tableau,
2. le met dans une liste
3. le trie
4. lit aussi un nombre réel x,
5. et effectue l’insertion de x dans la liste, de telle manière que la
liste reste triée.
Exemple : Soit le tableau T de 8 nombres triés dans lequel on désire
insérer le nombre 40

Algorithmique et Programmation 160


Exercice
• Ecrire un programme pour construire et alimenter une matrice carrée
d'ordre n,
• vérifier si cette matrice représente un carré magique (On a la même somme
pour chaque ligne, colonne ou diagonale).

Algorithmique et Programmation 161


Éléments d'un programme
Les fonctions

Algorithmique et Programmation 162


Sous-programme : notion

Appel du sous-
programme monSousProg

Programme
appelant

Retour

Retour du sous-programme

Algorithmique et Programmation 163


Sous-programme : rôles et intérêts

• En informatique, la programmation modulaire reprend l'idée de fabriquer un


produit (le programme) à partir de composants (les modules).
• Elle décompose une grosse application en modules, groupes de fonctions, pour
pouvoir les développer et les améliorer indépendamment, puis les réutiliser dans
d'autres applications.
• Le développement du code des modules peut être attribué à des (groupes de)
personnes différentes, qui effectuent leurs tests unitaires indépendamment.
• Ce style de programmation facilite grandement l'amélioration progressive, la ré-
utilisabilité et le partage du code, et est particulièrement utile pour la réalisation
de bibliothèques.

Ainsi l’objectif principale est de : Découper un programme en


petites entités qui sont:
• Indépendantes ;
• Réutilisables ;
• Plus lisibles.

Algorithmique et Programmation 164


La syntaxe

• Vous pouvez choisir n'importe quel nom pour la fonction que vous créez, à l'exception des mots
réservés du langage, et à la condition de n'utiliser aucun caractère spécial ou accentué (le caractère
souligné « _ » est permis). Comme c'est le cas pour les noms de variables.
• Comme les instructions if et while que vous connaissez déjà, l'instruction def est une instruction
composée. La ligne contenant cette instruction se termine obligatoirement par un double point,
lequel introduit un bloc d'instructions que vous ne devez pas oublier d'indenter.
• La liste de paramètres spécifie quelles informations il faudra fournir en guise d'arguments lorsque
l'on voudra utiliser cette fonction (Les parenthèses peuvent parfaitement rester vides si la fonction
ne nécessite pas d'arguments).
• Une fonction s'utilise pratiquement comme une instruction quelconque. Dans le corps d'un
programme, un appel de fonction est constitué du nom de la fonction suivi de parenthèses. Si c'est
nécessaire, on place dans ces parenthèses le ou les arguments que l'on souhaite transmettre à la
fonction. Il faudra en principe fournir un argument pour chacun des paramètres spécifiés dans la
définition de la fonction, encore qu'il soit possible de définir pour ces paramètres des valeurs par
défaut (voir plus loin).

Algorithmique et Programmation 165


Fonction simple sans paramètres

• En entrant ces quelques lignes, nous avons défini une fonction très simple qui
calcule et affiche les 10 premiers termes de la table de multiplication par 7.
Notez bien les parenthèses, le double point, et l'indentation du bloc
d'instructions qui suit la ligne d'en-tête (c'est ce bloc d'instructions qui
constitue le corps de la fonction proprement dite).
• Pour utiliser la fonction que nous venons de définir, il suffit de l'appeler par son
nom. Ainsi :

• provoque l'affichage de :

Algorithmique et Programmation 166


Fonction avec paramètre
• Dans nos derniers exemples, nous avons défini et utilisé une fonction qui affiche les
termes de la table par 7. Supposons à présent que nous voulions faire de même
avec la table par 9. Nous pouvons bien entendu réécrire entièrement une nouvelle
fonction pour cela. Mais si nous nous intéressons plus tard à la table par 13, il nous
faudra encore recommencer. Ne serait-il donc pas plus intéressant de définir une
fonction qui soit capable d'afficher n'importe quelle table, à la demande ?
• Lorsque nous appellerons cette fonction, nous devrons bien évidemment pouvoir lui
indiquer quelle table nous souhaitons afficher. Cette information que nous voulons
transmettre à la fonction au moment même où nous l'appelons s'appelle un
argument. Nous avons déjà rencontré à plusieurs reprises des fonctions intégrées
qui utilisent des arguments. La fonction sin(a), par exemple, calcule le sinus de
l'angle a. La fonction sin() utilise donc la valeur numérique de a comme argument
pour effectuer son travail. Dans la définition d'une telle fonction, il faut prévoir une
variable particulière pour recevoir l'argument transmis. Cette variable particulière
s'appelle un paramètre. On lui choisit un nom en respectant les mêmes règles de
syntaxe que d'habitude (pas de lettres accentuées, etc.), et on place ce nom entre
les parenthèses qui accompagnent la définition de la fonction.

Algorithmique et Programmation 167


Fonction avec paramètre

• La fonction table() telle que définie ci-dessus utilise le paramètre base pour calculer les dix
premiers termes de la table de multiplication correspondante.
• Pour tester cette nouvelle fonction, il nous suffit de l'appeler avec un argument. Exemples :

• Dans ces exemples, la valeur que nous indiquons entre parenthèses lors de l'appel de la
fonction (et qui est donc un argument) est automatiquement affectée au paramètre base. Dans
le corps de la fonction, base joue le même rôle que n'importe quelle autre variable. Lorsque
nous entrons la commande table(9), nous signifions à la machine que nous voulons exécuter la
fonction table() en affectant la valeur 9 à la variable base.

Algorithmique et Programmation 168


Utilisation d'une variable comme
argument
• Dans les 2 exemples qui précèdent, l'argument que nous avons
utilisé en appelant la fonction table() était à chaque fois une
constante (la valeur 13, puis la valeur 9). Cela n'est nullement
obligatoire. L'argument que nous utilisons dans l'appel d'une
fonction peut être une variable lui aussi, comme dans l'exemple ci-
dessous.

• provoque l'affichage de :

Algorithmique et Programmation 169


Fonction avec plusieurs paramètres
• La fonction table() est certainement intéressante, mais elle n'affiche toujours
que les dix premiers termes de la table de multiplication, alors que nous
pourrions souhaiter qu'elle en affiche d'autres. Qu'à cela ne tienne. Nous allons
l'améliorer en lui ajoutant des paramètres supplémentaires, dans une nouvelle
version que nous appellerons cette fois tableMulti() :

• Cette nouvelle fonction utilise donc trois paramètres : la base de la table


comme dans l'exemple précédent, l'indice du premier terme à afficher, l'indice
du dernier terme à afficher. Essayons cette fonction en entrant par exemple :
tableMulti(8, 13, 17)

• ce qui devrait provoquer l'affichage de :

Algorithmique et Programmation 170


Valeurs par défaut pour les
paramètres
• Dans la définition d'une fonction, il est possible (et souvent souhaitable) de définir
un argument par défaut pour chacun des paramètres. On obtient ainsi une fonction
qui peut être appelée avec une partie seulement des arguments attendus. Exemples :

tableMulti(8) tableMulti(8,5) tableMulti(8,fin=5)

1x8=8 5 x 8 = 40 1x8=8
2 x 8 = 16 6 x 8 = 48 2 x 8 = 16
3 x 8 = 24 7 x 8 = 56 3 x 8 = 24
4 x 8 = 32 8 x 8 = 64 4 x 8 = 32
5 x 8 = 40 9 x 8 = 72 5 x 8 = 40
6 x 8 = 48 10 x 8 = 80
7 x 8 = 56
8 x 8 = 64
9 x 8 = 72
10 x 8 = 80

Algorithmique et Programmation 171


Fonction retournant des résultats
• Pour les puristes, les fonctions que nous avons décrites jusqu'à présent ne sont
pas tout à fait des fonctions au sens strict, mais plus exactement des
procédures[5]. Une « vraie » fonction (au sens strict) doit en effet renvoyer (ou
« retourner ») une valeur lorsqu'elle se termine. Une « vraie » fonction peut
s'utiliser à la droite du signe égale dans des expressions telles que y = sin(a). On
comprend aisément que dans cette expression, la fonction sin() renvoie une
valeur (le sinus de l'argument a) qui est directement affectée à la variable y.
• Commençons par un exemple extrêmement simple :

• ce qui devrait provoquer l'affichage de :


729

Algorithmique et Programmation 172


Fonction retournant une liste
• À titre d'exemple un peu plus élaboré, nous allons maintenant
modifier quelque peu la fonction table() sur laquelle nous avons
déjà pas mal travaillé, afin qu'elle renvoie elle aussi une valeur.
Cette valeur sera en l'occurrence une liste (la liste des dix premiers
termes de la table de multiplication choisie). Voilà donc une
occasion de reparler des listes. Nous en profiterons pour
apprendre dans la foulée encore un nouveau concept :

• ce qui devrait provoquer l'affichage de :

Algorithmique et Programmation 173


Fonction retournant plusieurs résultats
• À titre d'exemple un peu plus élaboré, nous allons maintenant
écrire une fonction qui calcule en même temps les trois
paramètres d’inférence statistiques (la moyenne, la variance et
l’écart-type):

• ce qui devrait provoquer l'affichage de :

Algorithmique et Programmation 174


Récursion
Une procédure récursive est une procédure qui s'appelle elle-
même.
• fact(4) = 4 × 3 × 2 × 1
• fact(N) = N × fact(N -1) la fonction fait appel à
elle-même (pour N > 0)
• fact(0) = 1 condition d'arrêt

Algorithmique et Programmation 175


Variables locales et variables globales
• Lorsqu'on manipule des fonctions, il est essentiel de bien comprendre
comment se comportent les variables. Une variable est
dite locale lorsqu'elle est créée dans une fonction. Elle n'existera et ne
sera visible que lors de l'exécution de ladite fonction.
• Une variable est dite globale lorsqu'elle est créée dans le programme
principal. Elle sera visible partout dans le programme.
• Ceci ne vous paraît pas clair ? Nous allons prendre un exemple simple
qui vous aidera à mieux saisir ces concepts. Observez le code
suivant:

Monday, January 31, 2022 Prof. M. LAHLOU 176


Exécution étape par étape

Monday, January 31, 2022 Prof. M. LAHLOU 177


Exécution étape par étape

Monday, January 31, 2022 Prof. M. LAHLOU 178


Exécution étape par étape

Monday, January 31, 2022 Prof. M. LAHLOU 179


Exécution étape par étape

Monday, January 31, 2022 Prof. M. LAHLOU 180


Exécution étape par étape

Monday, January 31, 2022 Prof. M. LAHLOU 181


Exécution étape par étape

Monday, January 31, 2022 Prof. M. LAHLOU 182


Exécution étape par étape

Monday, January 31, 2022 Prof. M. LAHLOU 183


Exécution étape par étape

Monday, January 31, 2022 Prof. M. LAHLOU 184


Exécution étape par étape

Monday, January 31, 2022 Prof. M. LAHLOU 185


A. 6.0
B. 8.0
C. 10.0
D. 12.0

Monday, January 31, 2022 Prof. M. LAHLOU 186


A) 5.0
B) 1.0
C) -1.0
D) -5.0

Monday, January 31, 2022 Prof. M. LAHLOU 187


A. 4
2
3
5
6
B. 4
2
3
5
puis message d'erreur
C. 4
2
puis message d'erreur
D. 4
puis message d'erreur

Monday, January 31, 2022 Prof. M. LAHLOU 188


Exercices
• Définissez une fonction surfCercle(R). Cette fonction doit
renvoyer la surface (l'aire) d'un cercle dont on lui a fourni le
rayon R en argument. Par exemple, l'exécution de
l'instruction:
print(surfCercle(2.5)) doit donner le résultat 19.635
• Définissez une fonction volBoite(x1,x2,x3) qui renvoie le
volume d'une boîte parallélipipédique dont on fournit les
trois dimensions x1, x2, x3 en arguments. Par exemple,
l'exécution de l'instruction :
print(volBoite(5.2, 7.7, 3.3)) doit donner le résultat 132.13
• Définissez une fonction maximum(n1,n2,n3) qui renvoie le
plus grand de 3 nombres n1, n2, n3 fournis en arguments. Par
exemple, l'exécution de l'instruction :
print(maximum(2,5,4)) doit donner le résultat 5

Algorithmique et Programmation 189


Éléments d'un programme
Les fichiers

Algorithmique et Programmation 190


Lire et écrire un fichier texte
• Jusqu'à présent, les programmes que nous avons réalisés ne
traitaient qu'un très petit nombre de données. Nous
pouvions donc à chaque fois inclure ces données dans le
corps du programme lui-même (par exemple dans une liste).
Cette façon de procéder devient cependant tout à fait
inadéquate lorsque l'on souhaite traiter une quantité
d'information plus importante.
• Pour garder des résultats donnés par un programme, pour
coder des documents importants, il est indispensable de
savoir manipuler des fichiers avec PYTHON.
• Dans un premier temps, nous allons manipuler des fichiers ne
contenant que du texte (chaînes de caractères).

Algorithmique et Programmation 191


Les entrées/sorties Fichier

Écriture de données
Programme

Stockage
Lecture de données

Fichier
Disque

Algorithmique et Programmation 192


Créer un fichier texte et écrire
dedans
• L'instruction basique qui crée un fichier dans le même
répertoire que celui qui contient le programme est:
fichier=open("nom",'w')
• Où:
• fichier est le nom de votre fichier dans le programme python
• "nom" est le nom de votre fichier de sortie
• w signifie "write", on ouvre le fichier pour écrire dedans.
• Attention, si un fichier du même nom existe déjà dans le
répertoire il sera écrasé sans aucune alerte!!!!!!
• Pour écrire les infos dans le fichier, c'est simple:
[Link]("info")
• Et on finit toujours (que ce soit en lecture ou écriture)
par:
[Link]()
Algorithmique et Programmation 193
Exemple
•Dans cet exemple nous allons créer un fichier et
stocké dedans les 10 premier termes de la suite
de Fibonacci

•Ce qui devra donner le fichier suivant

•On remarquera que les valeurs de la série ont été


bien inscrites mais collées les uns au autres.
Algorithmique et Programmation 194
Exemple
• Pour remédier au problème de l’exemple précédant, il
faut ajouter après chaque nombre le "caractère" qui
produit un passage à la ligne: "\n"

• Ce qui devra donner le fichier suivant

Algorithmique et Programmation 195


Ouvrir un fichier texte et lire son
contenu
• L'instruction basique qui ouvre un fichier est:
fichier=open("nom",'r')
• Où fichier est le nom de votre fichier dans le programme python , "nom" est le nom de
votre fichier de sortie et « r » signifie "read", on ouvre le fichier en mode lecture.
• Pour lire dans un fichier, Python offre plusieurs possibilités:
• La méthode readlines qui lit toutes les lignes du fichier et les range dans une
séquence. Utile si on souhaite lire tout le fichier d'un coup:
toutesleslignes = [Link]()
• La méthode readline (au singulier) qui lit une ligne dans le fichier. Indispensable pour
lire des lignes au coup par coup:
lalignesuivante = [Link]()
• Enfin, on peut aussi utiliser l'objet fichier comme un itérateur. Pratique si on souhaite
traiter l'une après l'autre toutes les lignes d'un fichier.
for ligne in fichier:
# ...
• C'est la troisième solution que nous allons utiliser: en effet, inutile de lire tout le
fichier d'un coup (il peut être excessivement volumineux – et de toute manière
nous pouvons traiter nos données ligne par ligne).

Algorithmique et Programmation 196


Exemple
• Dans cet exemple nous allons ouvrir le fichier
« [Link] » créé précédemment et lire et afficher son
contenu.

• Ce qui devrait provoquer l'affichage de :

• La méthode rstrip('\n') appliqué à la variable texte « line »


permet d’enlever le caractère de retour de ligne '\n'.

Algorithmique et Programmation 197


Exemple 2
« [Link] » est un fichier contenant une série de
mesures de températures à différents points (voir extrait ci-
joint). Le fichier se compose d’une ligne de titre suivit des
lignes de données composées du numéro du point de mesure
suivit d’un espace suivit de la mesure de la température.
Ecrire un programme pour calculer la moyenne des
températures

Monday, January 31, 2022 Prof. M. LAHLOU 198


Exemple 2
« [Link] » est un fichier contenant une série de
mesures de températures à différents points (voir extrait ci-
joint). Le fichier se compose d’une ligne de titre suivit des
lignes de données composées du numéro du point de mesure
suivit d’un espace suivit de la mesure de la température.
Ecrire un programme pour calculer la moyenne des
températures

Monday, January 31, 2022 Prof. M. LAHLOU 198


Exemple 2
« [Link] » est un fichier contenant une série de
mesures de températures à différents points (voir extrait ci-
joint). Le fichier se compose d’une ligne de titre suivit des
lignes de données composées du numéro du point de mesure
suivit d’un espace suivit de la mesure de la température.
Ecrire un programme pour calculer la moyenne des
températures

Monday, January 31, 2022 Prof. M. LAHLOU 198


Éléments d'un programme
Gestion des Erreurs

Algorithmique et Programmation 190


Mise au point d'un programme.
Recherche des erreurs «debug»
•3 types d’erreurs :
1. syntaxe : se réfère aux règles que les auteurs du
langage ont établies pour la structure du programme.
2. sémantique : c’est une erreur de logique, i.e, le
programme est sans erreurs mais les résultats sont
inattendus.
3. d’exécution ou « Run-time error » : lorsque votre
programme fonctionne déjà, mais que des
circonstances particulières se présentent (par
exemple, votre programme essaie de lire un fichier
qui n'existe plus, une division par zéro).
Et ce dernier type d’erreur qui est concerné par la
gestion des erreurs.
Algorithmique et Programmation 213
Gérer les erreurs
• Commençons par voir comment gérer très facilement une erreur. Prenons le
code suivant qui va générer une erreur puisque l'on va additionner un
nombre (type int) avec une chaîne de caractères (type str).

• L'erreur est de type TypeError : cela signifie qu'il y a une incompatibilité


entre les types. Avec le mot-clé try, nous allons essayer d'éviter l'arrêt du
programme en cas d'erreur.

Sunday, September 22, 2024 Prof. M. LAHLOU 214


• Maintenant, si l'on souhaite avoir plus d'informations sur la nature de
l'erreur, notamment à l'aide d'une description plus explicite. Dans ce cas, il
est possible de récupérer les informations l'erreur dans une variable.

Sunday, September 22, 2024 Prof. M. LAHLOU 215


Calculs scientifiques
Analyse numérique

Algorithmique et Programmation 199


Résolution numérique d'une équation

Pour résoudre l'équation f(x)=0, on cherche


un intervalle sur lequel on est certain que f
s'annule. C'est le cas pour [a;b] parce que
f(b) est négatif et f(a) est positif. La
méthode de dichotomie vise à resserrer un
tel intervalle. On constate dans l’exemple
suivant que la fonction f est traitée comme
une entrée de l'algorithme au même titre
que les bornes a et b de l'intervalle:

Algorithmique et Programmation 200


Exemple

• La résolution de l'équation x²-5=0 n'est pas terminée, puisque le script ci-dessus


n'a donné qu'une seule des deux solutions de cette équation. Par ailleurs, la
solution trouvée n'est affichée qu'à 10-14 près. L’exécution de ce programme
provoquera l’affichage suivant:

Algorithmique et Programmation 201


Calcul numérique de nombre dérivé
•Pour calculer le nombre dérivé d’une fonction
« f » en un point « x », on va utiliser
l'approximation:

•L’exécution de ce programme provoquera


l’affichage suivant:
10.00000082740371

Algorithmique et Programmation 202


Calcul numérique d'une intégrale

• La méthode des rectangles dit que


où et N est suffisamment grand pour que h soit petit (ci-
dessous N=1 000 000):

• L’exécution de ce programme provoquera


l’affichage suivant:
-7.333337333332162

Algorithmique et Programmation 203


Génération de nombres aléatoires

Pour créer un échantillon de 100 nombres aléatoires


entiers compris entre 1 et 100
La fonction randint(1,100) génère un nombre aléatoire
entier entre 1 et 100

50.3665
28.56636794816643

Algorithmique et Programmation 206


Génération de nombres aléatoires

• Pour créer un échantillon de 100 nombres aléatoires réelles


compris entre 0.0 et 100.0
La fonction random() génère un nombre aléatoire réel compris
entre 0 et 1

49.745912210247546
28.997495489810333

Algorithmique et Programmation 207


Génération de nombres aléatoires

Pour créer un échantillon de 100 nombres gaussiens


d'espérance 16 et d'écart-type 2 on utilise la fonction
gauss(moyenne, écart-type):

15.993753359028622
1.9889518438838354

Algorithmique et Programmation 208


Génération de plusieurs distributions

Algorithmique et Programmation 209


Calculs scientifiques
Fonctions mathématiques de base

Algorithmique et Programmation 211


La bibliothèque math

• Pour disposer des fonctions mathématiques usuelles, la librairie d’origine du


python se nomme math. On peut alors importer juste les fonctions nécessaires
par:
from math import cos, log
ou toutes les fonctions mathématiques par:
from math import *
Dans ce cas on utilisera les fonctions de ma manière suivante:
>>> cos(3)
-0.9899924966004454
ou
import math
Dans ce cas on utilisera les fonctions de ma manière suivante:
>>> [Link](3)
-0.9899924966004454

Algorithmique et Programmation 212


La bibliothèque math

import math
• Une fois un module importé on peut lister les fonctions
disponibles avec la fonction dir:
print(dir(math))
['__doc__', '__loader__', '__name__', '__package__', 'acos', 'acosh',
'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos',
'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial',
'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'hypot', 'isfinite', 'isinf',
'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'pi',
'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']

• Pour accéder à l'aide on utilise la fonction help:


help([Link]): pour obtenir de l’aide sur la fonction log de la
bibliothèque math
help(math): pour obtenir de l’aide sur toutes les fonctions de la
bibliothèque math

Algorithmique et Programmation 213


Quelque fonctions de la bibliothèque
« math »
fonction effet exemple Résultat
n = -100.5 100.5
Abs Valeur absolue
print(abs(n))
n = 100.7
100
Floor, ceil Partie entière print([Link](n))
101
print([Link](n))
number = 1.23456 1 0 digits
print(round(number)) 1.0 0 digits
print(round(number, 0)) 1.2 1 digit
Round Arrondi
print(round(number, 1)) 1.23 2 digits
print(round(number, 2)) 1.235 3 digits, last one rounded
print(round(number, 3)) up to 5
values = [0.9999999, 1, 2, 3]
r = sum(values)
Sum, fsum 6.999999900000001
print(r)
6.9999999
r = [Link](values)
print(r)

Algorithmique et Programmation 214


Quelque fonctions de la bibliothèque
« math »
symbole effet exemple Résultat
a = [Link](2, 3)
b = 2 ** 3 8.0
Pow puissance
print(a) 8
print(b)
value1 = 9
value2 = 16
3.0
value3 = 100
Sqrt Racine carrée 4.0
print([Link](value1))
10.0
print([Link](value2))
print([Link](value3))
Constantes print(math.e) 2.718281828459045
Pi, E
mathématiques print([Link]) 3.141592653589793

Algorithmique et Programmation 215


Calculs scientifiques
Calcul vectoriel

Algorithmique et Programmation 216


La bibliothèque numpy: calcul vectoriel
en Python
• NumPy est une extension du langage de programmation
Python, destinée à manipuler des matrices ou tableaux
multidimensionnels ainsi que des fonctions
mathématiques opérant sur ces tableaux.
• Les tableaux dans l’extension numpy sont considérés
comme une collection indexable et contigüe d’éléments
de même type.
• La bibliothèque numpy contient des fonctions de
manipulation des tableaux pour le calcul numérique ainsi
qu’un bibliothèque mathématique importante.

Algorithmique et Programmation 217


La bibliothèque numpy: création d’un
tableau
Tableau de taille fixée, multidimensionnel contenant des éléments de même
type et de même taille. Ce tableau peut être définit par:
>>> import numpy as np
son contenu sous forme d’une liste de valeurs :
>>> a=[Link]([1,3,5,7,9,11,13,17])
ses dimensions et son profil :
>>> b=[Link]([[1,2,3],[4,5,6]])
son type d’élément :
>>> a=[Link]([0.1, 0.0, 0.2],dtype=[Link])
>>> b=[Link]([[1,2,3],[4,5,6]],dtype=[Link])

Algorithmique et Programmation 218


La bibliothèque numpy:
• Nous allons voir comment créer des tableaux avec la
fonction [Link]() de NumPy. Ces tableaux
pourront être utilisés comme des vecteurs ou des
matrices grâce à des fonctions de NumPy ([Link](),
[Link](), [Link](), [Link](),
etc.) qui permettent de réaliser des calculs matriciels
utilisés en algèbre.
• Premièrement, nous allons importer le module numpy.
Pour cela, il suffit de faire :

Algorithmique et Programmation 219


La bibliothèque numpy: Tableaux -
[Link]()
• Pour créer des tableaux, nous allons utiliser [Link]().
Tableaux monodimensionnels (1D)
• Pour créer un tableau 1D, il suffit de passer une liste de nombres
en argument de [Link](). Un liste est constituée de nombres
séparés par des virgules et entourés de crochets ([ et ]).

• Pour connaître le type du résultat de [Link](), on peut


utiliser la fonction type().

• On constate que ce type est issu du package numpy. Ce type est


différent de celui d’une liste.
Algorithmique et Programmation 220
La bibliothèque numpy: Tableaux
bidimensionnels (2D)
• Pour créer un tableau 2D, il faut transmettre à
[Link]() une liste de listes grâce à des crochets
imbriqués.

Algorithmique et Programmation 221


La bibliothèque numpy: Tableaux
• La fonction [Link]() renvoie le nombre d’éléments
du tableau.

• La fonction [Link]() (forme, en anglais) renvoie la


taille du tableau.

Algorithmique et Programmation 222


La bibliothèque numpy: Produit terme
à terme et Produit matriciel
• Il est possible de réaliser un
produit terme à terme grâce à
l’opérateur *.
Il faut dans ce cas que les deux
tableaux aient la même taille.

• Un tableau peut jouer le rôle


d’une matrice si on lui applique
une opération de calcul matriciel.
Par exemple, la fonction
[Link]() permet de réaliser
le produit matriciel.

Algorithmique et Programmation 223


La bibliothèque numpy: Autre
• Transposé:

• Lors de la manipulation des tableaux, on a souvent


besoin de récupérer une partie d’un tableau. Pour cela,
Python permet d’extraire des tranches d’un tableau
grâce une technique appelée slicing (tranchage, en
français). Elle consiste à indiquer entre crochets des
indices pour définir le début et la fin de la tranche et à
les séparer par deux-points : (comme pour le listes de
python).

Algorithmique et Programmation 224


La bibliothèque numpy: Autre

Algorithmique et Programmation 225


La bibliothèque numpy: Changement de
la taille d’un tableau
• Il est possible de changer
la taille d’un tableau en
utilisant l’attribut shape
de ce tableau.

• Obtention d’un tableau


2D ligne ou colonne

Algorithmique et Programmation 226


La bibliothèque numpy: Algèbre
linéaire

Algorithmique et Programmation 227


La bibliothèque numpy: Algèbre
linéaire

Algorithmique et Programmation 228


Opérations classiques sur la matrices

Algorithmique et Programmation 229


Opérations avancées sur la matrices

Algorithmique et Programmation 230


Exemple complet: création d’un
tableau 1D et un tableau 2D

Algorithmique et Programmation 231


Exemple: Opérations statistiques

Algorithmique et Programmation 232


Exercice 1
Soient les vecteurs colonnes et la matrice suivants

a. Entrer ces données sous Numpy


b. Calculer u1 + 3u2 – u3/5
c. Calculer le produit scalaire entre les vecteurs u1 et u2
d. Calculer le produit A u1
e. Calculer le déterminant et l’inverse de A
f. Résoudre le problème Ax = u1

Algorithmique et Programmation 233


Exercice 2
1. A l’aide de numpy résoudre les systèmes d’équations
linaires suivants d’inconnues x , y , z :

Algorithmique et Programmation 234


Linear Regression Using Matrix
Multiplication in Python Using NumPy

Ici, β0 et β1 sont l'intersection et la pente de l'équation linéaire. Nous


pouvons combiner les variables prédictives sous forme de matrice.
Dans notre exemple, nous avons une variable prédictive X. Nous
créons donc une matrice avec des uns comme première colonne et X.

• Exercice 3: Calculer les coefficients de régression


Monday, January 31, 2022 Prof. M. LAHLOU 235
Calculs scientifiques
Tracé graphique

Algorithmique et Programmation 236


La bibliothèque Matplotlib

•Une des grandes activités des scientifiques qui


touchent à la modélisation numérique c'est de
faire des courbes.
•Le module Matplotlib, comme son nom l’indique,
s’occupe du tracé graphique. Nous avons déjà vu
un exemple d’utilisation de ce module dans la
partie « Statistique inférentielle »

Algorithmique et Programmation 237


Ma première courbe: f(x)=x

Algorithmique et Programmation 238


Personnalisation des courbes

• Intéressons-nous 2 minutes aux options que je peux


passer à [Link]() :
plot(abscisse, ordonnée, 'couleur forme_point forme_trait',
paramètres)
• Couleur : entre quote on met la première lettre anglaise de
la couleur : rouge : 'r', bleu : 'b', vert : 'g', jaune : 'y', noir : 'k'
• forme_point : l'allure des points : 'x' : croix, 's' : carré, 'd' :
losange, 'o' : rond ;
• forme_trait : l'allure des traits : '.' pointillé, '-' : ligne
continue, '..' : pointillé, '-.' : point tiret, '--' : ligne de tiret ;
• paramètres : différentes options comme l'épaisseur du trait :
linewidth= 1-5.

Algorithmique et Programmation 239


Deux courbes dans la même figure

Algorithmique et Programmation 240


Deux figures avec le même plot

Algorithmique et Programmation 241


Tracé de fonctions

Algorithmique et Programmation 242


Un histogramme et un affichage de
texte sur le graphique

Algorithmique et Programmation 243


Sunday, September 22, 2024 Prof. M. LAHLOU 261
Algorithmique et Programmation 244
Bases de Python
Interfaces graphiques en Python avec Qt 5 et PyQt5:
Introduction

Wednesday, October 7, 2020 Prof. M. LAHLOU 56


Programmation traditionnel
(Pascal, C, Basic, Python, etc.)

Dans les applications traditionnelles

• C'est l'application elle même, et non un événement, qui contrôle les parties
du code qui sont exécutées, ainsi que leur ordre d'exécution.

• Celle-ci commence à la première ligne de code et suit un chemin défini dans


l'application, appelant les procédures au fur et à mesure des besoins.

31 janvier 2022 Programmation structurée 246


Logiciel événementiel (event-driven program)

Dans une application événementielle:


• Le code ne suit pas un chemin prédéterminé.
• Différentes sections du code sont exécutées en réaction aux
événements:
• Ceux-ci peuvent être déclenchés par des actions de l'utilisateur,
• Par des messages provenant du système ou
• D'autres applications, voire même par l'application proprement dite.
• L'ordre de ces événements détermine l'ordre d'exécution du
code.
• Le chemin parcouru dans le code de l'application est donc
différent à chaque exécution du programme.

31 janvier 2022 Programmation structurée 247


Programmation événementielle
248

Programmation événementielle: principe


◼ Événement: en réalité un message qui provient:
◼ D’une action de l’utilisateur sur l’interface

◼ Cliquer bouton souris

◼ Bouger le curseur de la souris

◼ Enfoncer une touche du clavier …

◼ D’une action intrinsèque du système

◼ Premier chargement d’une fenêtre

◼ Déclenchement d’évènements cycliques (Timer)

◼ Destruction d’une fenêtre …

31 janvier 2022 Programmation structurée


Programmation événementielle

◼ Chaque événement est:


◼ capté par le système
◼ mis dans une file d’attente (empilé sur une pile)
◼ La boucle de gestion des événements traite
séquentiellement chaque événement de la pile selon le
principe FIFO (First In First Out)
◼ Pour chaque événement:
◼ Analyse de l’objet qui a généré l’événement
◼ Recherche du sous-programme associé à cet événement
dans le cadre de l’objet en cause
◼ Exécution de ce sous-programme s’il existe
31 janvier 2022 Programmation structurée 249
Interface Graphique

Action sur objet de


l'interface graphique
Création d'un
événement

Evénement sur
un objet de
l'interface

Périphériques Place
agissant sur l'événement sur
l'interface la pile

noyau
de
Pile d'événements WINDOWS
ensemble de
sous-programmes
Cho
ix d
u sou
s-pr
Un sous-programme ogra
mm
e adé Dépile l'événement
pour chaque événement qua
de chaque objet . t le plus ancien

.
.
Analyse de l'évenement dépilé

31 janvier 2022 Programmation structurée


Programmation événementielle

◼ C'est le programmeur qui doit prévoir la procédure à


exécuter en réponse à un événement donné

◼ Après analyse et élaboration d'un cahier des charges, le


rôle du programmeur est:
◼ de concevoir l'interface
◼ prévoir les évènements à programmer
◼ d’écrire le code des procédures événement liées
aux différents composants de cette interface.

31 janvier 2022 Programmation structurée 251


Création d’une fenêtre personnalisée
Pour créer une première fenêtre, on va utiliser la classe QWidget.
Voici un programme très simple de création d’une fenêtre graphique.
Exemple

Monday, January 31, 2022 Prof. M. LAHLOU 256


Analyse du programme
• from [Link] import QApplication, Qwidget
Il importe le module QtWidgets pour que nous ayons accès à l’interface graphique.
• app = QApplication([Link])
Il crée un objet d’application qui a accès à la boucle d’événements.
• fen = QWidget()
Nous devons ensuite créer un QtWidget, parce que nous allons utiliser cela comme
notre fenêtre de haut niveau et il a tout ce que nous voulons.
• [Link]('Basic Window Example')
setWindowTitle donne un titre à la fenêtre et elle peut être appelée quand vous en
avez besoin.
• [Link]()
Il est nécessaire pour montrer la fenêtre.
• app.exec_()
Nous avons besoin de démarrer cette boucle d’événement en utilisant la fonction.
Si nous ne le faisons pas, le programme va s’exécuter directement parce qu’il ne va pas
continuer à tourner sur lui-même et cette boucle d’événement ici attend des
événements de notre part pour s’exécuter là.

Monday, January 31, 2022 Prof. M. LAHLOU 253


Gestion des événements de la souris dans la
fenêtre
Pour interagir avec l’utilisateur, nous allons devoir effectuer de la programmation
événementielle. Il va ainsi s’agir de gérer les événements qui seront déclenchés par
l’utilisateur (appui sur la souris, etc.).
Nous allons voir comment traiter l’événement que constitue un appui sur un bouton de la
souris dans la fenêtre.
Gestion de l’appui sur un bouton de la souris dans la fenêtre
Exemple

Monday, January 31, 2022 Prof. M. LAHLOU 257


Liste des gestionnaires d’événements issus de la
souris

mousePressEvent appui sur un bouton de la souris


mouseReleaseEvent relâchement d’un bouton de la souris
mouseDoubleClickEvent double clic sur un bouton de la souris
mouseMoveEvent mouvement de la souris (par défaut, quand un bouton est appuyé)

Utilisation de l’information associée à un événement


Les arguments transmis aux méthodes qui gèrent les événements de la souris sont des
objets de type QMouseEvent. Un objet de cette classe est automatiquement créé par
Python lors du déclenchement de l’événement. Cet objet contient de plus d’autres
informations. En particulier pour un appui sur le bouton de la souris, il contient une
information concernant le bouton qui a été appuyé. Cette information peut être
récupérée grâce à la méthode button. Les valeurs prises peuvent être comparées avec
les constantes prédéfinies ci-dessous :
[Link] bouton gauche
[Link] bouton droit
[Link] bouton du milieu

Monday, January 31, 2022 Prof. M. LAHLOU 258


Exemple avec gestionnaires d’événements issus
de la souris

Monday, January 31, 2022 Prof. M. LAHLOU 259


Exemple avec gestionnaires d’événements issus
de la souris
• De même, les coordonnées de la position du curseur de souris au moment
de l’appui peuvent être obtenues au moyen des méthodes x et y.

Monday, January 31, 2022 Prof. M. LAHLOU 260


Suivi des mouvements de la souris
Dans le cas du gestionnaire mouseMoveEvent, il est possible d’activer le suivi
des mouvements de la souris par la fenêtre même si aucun bouton n’est
appuyé. Pour cela, il faut utiliser la méthode setMouseTracking(True)
disponible pour la classe QWidget.
Exemple :

Monday, January 31, 2022 Prof. M. LAHLOU 261


Bases de Python
Interfaces graphiques en Python avec Qt 5 et PyQt5:
Mise en forme

Wednesday, October 7, 2020 Prof. M. LAHLOU 56


Gestion de la disposition
Le système de mise en page (layout) Qt fournit un moyen simple et puissant
d’organiser automatiquement les widgets enfants dans un widget parant.
• QHBoxLayout présente des widgets dans une ligne horizontale, de gauche à
droite.

• QVBoxLayout présente des widgets


dans une colonne verticale,
de haut en bas.

• QGridLayout présente des widgets dans


une grille bidimensionnelle.
Les widgets peuvent occuper plusieurs
cellules.
• QFormLayout présente des widgets dans
un style de champ d’étiquette
descriptif à 2 colonnes.

Monday, January 31, 2022 Prof. M. LAHLOU 263


La notion de gestionnaire de mise en forme
Un gestionnaire de mise en forme permet de gérer la disposition (en anglais
layout) de plusieurs composants. Nous allons ici utiliser un gestionnaire de mise
en forme de la classe QVBoxLayout qui permet de positionner les composants les
uns sous les autres verticalement. Il possède une méthode addWidget() pour
ajouter les composants à gérer. Il faut indiquer à la fenêtre qu’elle doit utiliser ce
gestionnaire de mise en forme grâce à la méthode setLayout() de la classe
QWidget.
class QVBoxLayout
Gestionnaire de mise en forme qui crée une boite (en anglais box) dans laquelle
les composants seront disposés les uns sous les autres verticalement.
Horizontalement, ils occuperont toute la largeur de la boite.
addWidget(composant)
Ajoute un composant dans le gestionnaire de mise en forme.
Paramètres: composant – référence du composant à ajouter

Monday, January 31, 2022 Prof. M. LAHLOU 264


Exemple de QVBoxLayout

Monday, January 31, 2022 Prof. M. LAHLOU 266


Exemple avec positionnement horizontal
(QHBoxLayout())

• Même programme que la page précédente mais en remplaçant


QVBoxLayout par QHBoxLayout

Monday, January 31, 2022 Prof. M. LAHLOU 267


Positionnement en grille
• QGridLayout est la classe de gestionnaire de mise en forme la plus
universelle. Il divise l'espace en lignes et colonnes.

• Normalement, chaque widget consomme une cellule de la grille, mais il est


aussi possible pour le widget d’occuper plus de cellules en utilisant des
lignes et des colonnes couvrant les nombres de la méthode surchargée
addWidget().

• addWidget (self, QWidget, row, column, rowSpan, columnSpan,


[Link] alignment = 0)

• Les troisième et quatrième paramètres sont l’espacement des lignes et des


colonnes, égal à un par défaut. Si l’espacement est de -1, le widget de cellule
s’étendra vers le bord droit ou le bord inférieur.
Monday, January 31, 2022 Prof. M. LAHLOU 268
Exemple de disposition en grille

Monday, January 31, 2022 Prof. M. LAHLOU 269


Exemple de disposition en formulaire

Monday, January 31, 2022 Prof. M. LAHLOU 270


Bases de Python
Interfaces graphiques en Python avec Qt 5 et PyQt5:
Composants graphiques usuels

Wednesday, October 7, 2020 Prof. M. LAHLOU 56


Le bouton
• Un composant graphique (appelé widget en anglais) est un élément
de base d’une interface graphique avec lequel un utilisateur peut
interagir (par exemple une fenêtre ou un champ de saisie de texte). Il
existe de nombreux composants susceptibles d’intervenir dans une
interface graphique. Afin d’étudier leur fonctionnement, nous allons
aborder le cas d’un composant graphique simple : un bouton.
• Création d’un bouton - QPushButton
On crée un bouton en utilisant le constructeur de la classe QPushButton, auquel on communique
le texte qu’on souhaite voir figurer à l’intérieur du bouton.
class QPushButton(text)
Bouton dont le constructeur reçoit un texte qui sera affiché sur le bouton.

Monday, January 31, 2022 Prof. M. LAHLOU 272


Gestion du bouton
• On va connecter le signal clicked de la classe QPushButton avec l’appel
d’une fonction.

Monday, January 31, 2022 Prof. M. LAHLOU 273


Gestion du bouton dans une fenêtre
personnalisée

Monday, January 31, 2022 Prof. M. LAHLOU 274


Autres utilisation du bouton
• Bouton pour quitter l’application

• Affichage d’une info-bulle (tooltip en anglais)

• Affichage d’un « message box »

Monday, January 31, 2022 Prof. M. LAHLOU 275


Etiquette - QLabel
Une étiquette (en anglais label) est un composant de type QLabel qui permet
d’afficher un texte non éditable par l’utilisateur, mais que le programme peut
faire évoluer.
class QLabel (texte)
Paramètres: texte (string) – texte initial qui sera affiché.
Méthode: setText () - Modifie le texte de l’étiquette.
Exemple

Monday, January 31, 2022 Prof. M. LAHLOU 276


Exemple de QLabel avec modification du texte

Monday, January 31, 2022 Prof. M. LAHLOU 277


Champ de texte - QLineEdit
Un champ de texte (aussi appelé champ de saisie de texte) est une zone de
texte éditable dans laquelle l’utilisateur peut entrer ou modifier un texte. Il
s’obtient en instanciant un objet de type QLineEdit.
Présentation
class QLineEdit(texte)
Paramètres: texte (string) – texte initial qui sera affiché.
Méthode: text() - Renvoie de le texte contenu dans le QLineEdit.
Méthode: setText (texte) - Modifie le texte dans le QLineEdit.
Exemple

Monday, January 31, 2022 Prof. M. LAHLOU 278


Exemple d’application (avec les trois
Widgets)
• Créer une interface graphique à l’image de celle-ci dessous.
• Le bouton servira pour faire la somme des 2 QLineEdit au dessus et affiche
le résultat dans celui en dessous.

La partie import

Monday, January 31, 2022 Prof. M. LAHLOU 279


La partie définition des Widgets

Monday, January 31, 2022 Prof. M. LAHLOU 280


La partie traitement de signal
Suite de: class Fenetre(QWidget):

La procédure principale

Monday, January 31, 2022 Prof. M. LAHLOU 281


Case à cocher - QCheckBox
Une case à cocher permet d’effectuer un choix (coché/non coché) pour une
case. Elle est instanciée grâce à la classe QCheckBox.
Présentation
class QCheckBox(text)
Paramètres: text (string) – libellé qui sera affiché à côté de la case
Méthode: checkState() - Renvoie la valeur de l’état de la case (state)
Méthode: setCheckState(state) - Fixe la valeur de l’état de la case.
state – état à prendre : [Link] ou [Link]

Monday, January 31, 2022 Prof. M. LAHLOU 282


Combobox - QComboBox
ComboBox est un widget dans PyQt5 qui permet de choisir dans une liste. La
classe QComboBox est utilisée pour ajouter une zone de liste déroulante dans
une application.
Methods & Description
addItem()
Adds string to collection
addItems()
Adds items in a list object
Signals & Description
Clear()
Deletes all items in the collection activated()
When the user chooses an item
count()
Retrieves number of items in the collection currentIndexChanged()
Whenever the current index is changed either by the user
currentText() or programmatically
Retrieves the text of currently selected item
highlighted()
itemText() When an item in the list is highlighted
Displays text belonging to specific index
currentIndex()
Returns index of selected item
setItemText()
Changes text of specified index

Monday, January 31, 2022 Prof. M. LAHLOU 283


Combobox – QComboBox (exemple)

Monday, January 31, 2022 Prof. M. LAHLOU 284


Menu

Monday, January 31, 2022 Prof. M. LAHLOU 285


Bases de Python
Interfaces graphiques en Python avec Qt 5 et PyQt5:
Dessin

Wednesday, October 7, 2020 Prof. M. LAHLOU 56


Exemple de dessin

Monday, January 31, 2022 Prof. M. LAHLOU 287


Dessin - QPainter
• Les opérations de dessin Bitmap dans Qt sont gérées par la classe
QPainter. Il s’agit d’une interface générique qui peut être utilisée
pour dessiner sur différentes surfaces, y compris celle de la fenêtre
principale.
• def paintEvent(self, event): Evènement se déclenchant après
l’affichage de la fenêtre
• painter = QPainter(self): permet de créer un objet painter
• [Link](QPen([Link], 2, [Link])): permet de définir
le format du stylet, les paramètres sont la couleur, l’épaisseur et le
format de la ligne.

Monday, January 31, 2022 Prof. M. LAHLOU 288


Dessiner avec QPainter
[Link]

Monday, January 31, 2022 Prof. M. LAHLOU 289


Fin

Algorithmique et Programmation 290

Vous aimerez peut-être aussi