Programmation Python3 Partie 1: Année Universitaire: 2024/2025
Programmation Python3 Partie 1: Année Universitaire: 2024/2025
Partie 1
Ø Présentation du Python
Ø Les Boucles
CONTENTS
La programmation
Démarche
• Penser, réfléchir, …
• Résoudre un problème à la manière d’un analyste.
• Utiliser un langage formel pour décrire notre raisonnement
La programmation consiste à « expliquer » en détails à une machine ce qu'elle doit faire, en sachant
qu'elle ne peut pas véritablement « comprendre » un langage humain, mais seulement effectuer un
traitement automatique sur des séquences de caractères.
Un programme n'est rien d'autre qu'une suite d'instructions, codées en respectant de manière stricte un
ensemble de conventions fixées à l'avance que l'on appelle un langage informatique. La machine est
ainsi pourvue d'un mécanisme qui décode ces instructions en associant à chaque « mot » du langage
une action précise.
Apprendre à programmer :
1. activité intéressante qui contribue à développer votre intelligence.
2. procure une grande satisfaction : pouvoir réaliser des projets concrets.
Machine, Langage et Programmation
…00110011001100110011000011111100001111….
• Toute information d'un autre type doit être convertie, ou codée, en format binaire. Cela
est vrai pour :
Ø les données que l'on souhaite traiter (les textes, les images, les sons, les nombres,
etc.),
Le seul «langage» que l'ordinateur puisse véritablement «comprendre» est donc très éloigné de ce
que nous utilisons nous-mêmes.
• C'est une longue suite de 1 et de 0 (les "bits") souvent traités par groupes de 8 (les « octets »), 16, 32, ou
même 64.
• Pour « parler » à un ordinateur, il nous faudra utiliser des systèmes de traduction automatiques,
capables de convertir en nombres binaires des suites de caractères formant des mots-clés qui seront plus
significatifs pour nous.
Machine, Langage et Programmation
Par contre, lorsqu'un projet comporte des fonctionnalités complexes qui doivent
s'exécuter rapidement, la compilation est préférable : il est clair qu'un programme
compilé fonctionnera toujours nettement plus vite que son homologue interprété,
puisque dans cette technique l'ordinateur n'a plus à (re)traduire chaque instruction
en code binaire avant qu'elle puisse être exécutée.
Compilation et interprétation
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).
Langages naturels et langages formels
1. Les langages naturels sont ceux que les êtres humains utilisent pour
communiquer. Ces langages n'ont pas été mis au point délibérément (encore
que certaines instances tâchent d'y mettre un peu d'ordre) : ils évoluent
naturellement.
2. Les langages formels sont des langages développés par nous même, en vue
d'applications spécifiques.
Les langages de programmation sont des langages formels qui ont été développés pour
décrire des algorithmes et des structures de données.
Python
Python est un langage portable, extensible, gratuit, qui permet (sans l'imposer)
une approche modulaire et orientée objet de la programmation. Python est
développé depuis 1989 par Guido van Rossum et de nombreux contributeurs
bénévoles.
Il est apprécié par les pédagogues qui y trouvent un langage où la syntaxe
permet une initiation aisée aux concepts de base de la programmation. Enfin, le
langage Python gagne en popularité car il est le langage favori des « data
scientists », notamment. Il permet également de faire du Web aisément avec
Django.
Présentation du Python
de haut orienté
Très dynamique
niveau objet
populaire
A quoi resemble Python?
Inspiré du langage
Similitudes Différences
• Opérateurs
opérateurs de comparaison : • pas de point virgule
= ,<,<=,>,>=
• pas de parenthèses
• Données dynamiques
• Règles de nommage identiques
pas besoin qu’elles soient déclarées
et spécifiquement définies avant
• Mots clés leur utilisation
IF ELSE FOR WHILE
• utilisation de l’indentation
Quels éléments constituent Python?
Types de données
Organisation
§ numérique
§ Booléen § Packages
§ Chaîne de caractères § Modules
§ Fonctions
Objets W § Classes
§ Méthodes
§ peuvent être manipulés
§ déplacés dans divers types de
structures Librairies
§ examinés pendant l’exécution du § Disponiblité des ressources
programmes telles que : packages,
§ Définition des classes modules
§ L’héritage.
Fonctionnement du Python?
IDLE
Spyder il est disponible par défaut quand on utilise la
Environnement de programmation en distribution « officielle » téléchargée depuis [Link]
Python destiné aux scientifiques, et donc ne nécessite aucune installation (sauf sous
ingénieurs, analystes de données. Linux). C’est probablement un des éditeurs les plus
Serait utilisé dans l’enseignement. simples mais son interface est limitée
Pourquoi son utilisation?
la méthodologie objet
la méthodologie procédurale
On emploie l’analyse descendante (division On conçoit des fabriques (classes) qui servent à
des problèmes) et remontante (réutilisation produire des composants (objets) qui
d’un maximum de sous algorithmes). contiennent des données (attributs) et des
actions (méthodes).
O n s ’e f fo r c e a i n s i d e d é c o m p o s e r u n Les classes dérivent (héritage et polymorphisme)
problème complexe en sous-programmes de classes de base dans une construction
plus simples. hiérarchique.
La présentation des programmes
L’exécution d’un programme Python se fait à l’aide d’un interpréteur. Il s’agit d’un programme qui va
traduire les instructions écrites en Python en langage machine, afin qu’elles puissent être exécutées
directement par l’ordinateur. On dit donc que Python est un langage interprété.
§ Dans le mode interactif, aussi appelé mode console, mode shell ou terminal Python, l’interpréteur
vous permet d’encoder les instructions une à une. Aussitôt une instruction encodée, il suffit
d’appuyer sur la touche «Entrée» pour que l’interpréteur l’exécute.
§ Dans le mode script, il faut avoir préalablement écrit toutes les instructions du programme dans un
fichier texte, et l’avoir enregistré sur l’ordinateur avec l’extension .py. Une fois cela fait, on
demandera à Python de lire ce fichier et exécuter son contenu, instruction par instruction, comme si
on les avait tapées l’une après l’autre dans le mode interactif.
Mode interactif
Dans un terminal écrire python3 puis appuyer sur la touche «Entrée» ;
Un invite de commande, composé de trois chevrons (>>>), apparaît : cette marque visuelle indique que
Python est prêt à lire une commande.
Il suffit de saisir à la suite une instruction puis d’appuyer sur la touche «Entrée».
On utilise généralement l’extension de fichier .py pour des fichiers contenant du code Python. Une fois
cela fait, l’interpréteur va lire ce fichier et exécuter son contenu, instruction par instruction, comme si on
les avait tapées l’une après l’autre dans le mode interactif.
Dans le mode interactif, la valeur de la variable a est affichée directement tandis que dans le mode script,
il faut utiliser print(a).
Structure d’un algorithme/ programme
§ L’en-tête : cette partie sert à donner un nom à l’algorithme. Elle est précédée par le mot
Algorithme ;
§ La partie déclarative : dans cette partie, on déclare les différents objets que l’algorithme utilise
(constantes, variables, etc.) ;
§ Le corps de l’algorithme : cette partie contient les instructions de l’algorithme. Elle est délimitée
par les mots Début et Fin.
Structure d’un algorithme/ programme
La présentation des programmes
Un programme source est destiné à l’être humain. Pour en faciliter la lecture, il doit
être judicieusement commenté.
La signification de parties non triviales doit être expliquée par un commentaire.
Le symbole dièse (#) indique le début d’un commentaire : tous les caractères entre # et
la fin de la ligne sont ignorés par l’interpréteur.
#---------------------
# Voici un commentaire
#---------------------
9 + 2 # En voici un autre
La présentation des programmes
En Python, c’est l’indentation (les espaces en début de chaque ligne) qui détermine les
blocs d’instructions (boucles, sous-routines, etc.).
Pour produire une indentation on peut soit appuyer 4 fois sur la barre d’espace ou
appuyer une fois sur la touche tabulation.
L’indentation doit être homogène (soit des espaces, soit des tabulations, mais pas un
mélange des deux).
exemple :
for i in range(5): # aucune tabulation
for j in range(4): # une tabulation
print(i+j) # deux tabulations
La présentation des programmes
La version 3.1.2 de Python compte 33 mots clés :
id1 = 15.3
id2 = maFonction(id1)
if id2 > 0:
id3 = [Link](id2)
else:
id4 = id1 - 5.5*id2
Le nombre
Il y a trois types numériques en Python :
§ Le type entier int permet de représenter n’importe quel nombre entier, peu importe
sa taille.
§ Le type flottant float permet de représenter des nombres comportant une partie
décimale (comme 3.14 ou 2.1e − 23) avec au plus 15 chiffres significatifs, compris
entre 10−324 et 10308. La valeur spéciale [Link] représente l’infini.
§ Le type complexe complex permet de représenter des nombres complexes, où le
nombre imaginaire se note j (par exemple 3.1+5.2j)
Les opérations
Algorithmique Python
âge ← 44 + 1 age = 44 + 1
âge ← âge + 1 age = age + 1
salaire ← salaire x 1,05 age += 1
quotient ← a ÷ b salaire = salaire * 1.05
nom ← nom | " Darmont" quotient = a / b
nom = nom + " Darmont"
Opérateurs arithmétiques
+ - x ÷ ^ div mod + - * / ** // %
^ ** : exposant mod % : modulo
(reste de division entière)
Les opérations arithmétiques
Les principales opérations :
20 + 3 # 23
20 - 3 # 17
20 * 3 # 60
20 ** 3 # 8000
20 / 3 # 6.666666666666667
20 // 3 # 6 (division entière)
20 % 3 # 2 (modulo)
abs(3 - 20) # valeur absolue
Les opérations logiques et de comparaisons sont évaluées afin de donner des résultats
booléens : False, True.
Le type float
• Un float est noté avec un point décimal ou en notation exponentielle :
2.718
.02
3e8
6.023e23
• Les flottants supportent les mêmes opérations que les entiers.
• Les float ont une précision finie indiquée dans sys.float_info.epsilon.
• L’import du module math autorise toutes les opérations mathématiques usuelles :
import math
print([Link]([Link]/4)) # 0.7071067811865475
print([Link]([Link])) # 180.0
print([Link](9)) # 362880
print([Link](1024, 2)) # 10.0
Les variables
§ Le nom d'une variable est composé des lettres de a à z, de A à Z, et des chiffres 0 à 9,
mais il ne doit pas commencer par un chiffre.
§ 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é). Le tiret (-) est bien sûr
interdit puisqu'il correspond aussi à la soustraction.
Algorithmique Python
âge ← 44 age = 44
salaire ← 1466,62 Salaire = 1466.62
nom ← "Jérôme" nom = "Jérôme"
nom = 'Jérôme'
a = b = 20
x, y = 30, 40
{Contraire : Faux} # Contraire : False
commentaire commentaire
L’affectation
On affecte une variable par une valeur en utilisant le signe = .
Dans une affectation, le membre de gauche reçoit le membre de droite ce qui
nécessite d’évaluer la valeur correspondant au membre de droite avant de l’affecter au
membre de gauche.
Les variables
Dès que l’on possède des types de données, on a besoin des variables pour stocker les
données.
La valeur d’une variable, comme son nom l’indique, peut évoluer au cours du temps (la
valeur antérieure est perdue) :
a=a+1 # 3 (incrémentation)
a=a-1 # 2 (décrémentation)
Les variantes de l’affectation
En Python, on peut assigner une valeur à plusieurs variables simultanément. Exemple :
a=b=3
On peut aussi effectuer des affectations parallèles à l'aide d'un seul opérateur :
a, b = 3, 2.54
Dans cet exemple, les variables a et b prennent simultanément les nouvelles valeurs 3
et 2.54.
Cela est particulièrement utile quand on veut échanger les valeurs de deux variables. Il
suffit d'écrire :
a, b = b, a
Les variantes de l’affectation
# affectation simple
v=4
# affectation augmentée
v += 2 # idem à : v = v + 2 si v est déjà référencé
• Concaténation :
s1 = ”abc”
s2 = ”defg”
s3 = s1 + s2 # ’abcdefg’
• Répétition :
s4 = ”Fi! ”
s5 = s4 * 3 # ’Fi! Fi! Fi! ’
print(s5)
Les chaînes de caractères : fonctions vs méthodes
On peut agir sur une chaîne (et plus généralement sur une séquence) en utilisant des
fonctions (notion procédurale) ou des méthodes (notion objet).
• Pour appliquer une fonction, on utilise l’opérateur () appliqué à la fonction :
ch1 = ”abc”
long = len(ch1) #3
ch2 = ”abracadabra”
ch3 = [Link]() # ”ABRACADABRA”
Méthodes retournant une nouvelle chaîne
Algorithmique Python
La fonction standard input() effectue toujours une saisie en mode texte (la saisie est
une chaîne) dont on peut ensuite changer le type (on dit aussi transtyper).
Les entrées-sorties
En mode « calculatrice », Python lit-évalue-affiche, mais la fonction print() reste indispensable aux
affichages dans les scripts :
a, b = 2, 5
print(a, b) # 2 5
print(”Somme :”, a + b) # Somme : 7
print(a - b, ”est la différence”) # -3 est la différence
print(”Le produit de”, a, ”par”, b, ”vaut :”, a * b)
# Le produit de 2 par 5 vaut : 10
Exemple :
>>> a = 3
>>> print(a)
>>> a = a + 3
>>> b = a - 2
>>> print("a =", a, "et b =", b) #a = 6 et b = 4
Les séquences d’échappement
À l’intérieur d’une chaîne, le caractère antislash (\) permet de donner une signification spéciale à
certaines séquences :
Séquence Signification
\\ affiche un antislash
\’ apostrophe
\’’ guillemet
\n saut de ligne
\t tabulation horizontale
\v tabulation verticale
Pour ne pas aller à la ligne et continuer sur la même ligne lors du prochain print, on ajoute le paramètre
end=" " : print( "a vaut ", a, end= " " )
Les entrées-sorties
Un script Python est formé d’une suite d’instructions exécutées en séquence de haut
en bas.
somme = 0.0
nb_valeurs = 0
for v in valeurs:
nb_valeurs = nb_valeurs + 1
somme = somme + valeurs
moyenne = somme / nb_valeurs
Les structures conditionnelles
>>> a = 5
>>> if a > 0: # Si a est positif
... print("a est positif.")
... if a < 0: # a est négatif
... print("a est négatif.")
L’instruction else
>>> age = 21
>>> if age >= 18: # Si age est supérieur ou égal à 18
... print("Vous êtes majeur.")
... else: # Sinon (age inférieur à 18)
... print("Vous êtes mineur.")
Les structures conditionnelles
L'instruction elif:
Le mot clé elif est une contraction de « else if », que l'on peut traduire très
littéralement par « sinon si ».
Pour trouver, par exemple, le minimum de deux nombres, on peut utiliser l’opérateur
ternaire (repris du C) :
x, y = 4, 3
# Ecriture classique :
if x < y:
plus_petit = x
else:
plus_petit = y
# Utilisation de l’opérateur ternaire :
plus_petit = x if x < y else y
print(”Plus petit : ”, plus_petit) # 3
Les opérateurs de comparaison
Les conditions doivent nécessairement introduire de nouveauxopérateurs, dits opérateurs de
comparaison.
Opérateur Signification Remarque:
littérale
l'égalité de deuxvaleurs est comparée avec
< Strictement inférieur à l'opérateur « == » et non « = ». Ce dernier est en
effet l'opérateur d'affectation et ne doit pas être
> Strictement supérieur utilisé dans une condition.
à
<= Inférieur ou égal à
>= Supérieur ou égal à
== Égal à
!= Différent de
Les opérateurs de comparaison
a = 5
if a >= 2:
if a <= 8: if a>=2 and a<=8:
print("a est dans l'intervalle.") print("a est dans l'intervalle.")
else: else:
print("a n'est pas dans l'intervalle.") print("a n'est pas dans
l'intervalle.")
if a<2 or a>8:
print("a n'est pas dans
l'intervalle.")
else:
print("a est dans l'intervalle.")
Les mots-clés and, or et not
il existe le mot clé not qui « inverse » un prédicat. Le prédicat not a==5 équivaut
donc à a!=5.
§ while
§ for
Tant que où répéter jusqu’à ?
Tant que… répéter Répéter… jusqu’à
x, cpt = 257, 0
print(”L’approximation de log2 de”, x, ”est”, end=” ”)
while x > 1:
x //= 2 # division avec troncature
cpt += 1 # incrémentation
print(cpt, ”\n”) # 8
Utilisation classique : la saisie filtrée d’une valeur numérique (on doit préciser le type car input() saisit
une chaîne) :
n = int(input(’Entrez un entier [1 .. 10] : ’))
while not(1 <= n <= 10):
n = int(input(’Entrez un entier [1 .. 10], S.V.P. : ’))
Les Boucles - WHILE
Syntaxe :
while condition:
# instruction 1
# instruction 2
# ...
# instruction N
Exemple :
nb = 7 # On garde la variable contenant le nombre dont on veut la table de
multiplication
i = 0 # C'est notre variable compteur que nous allons incrémenter dans la
boucle
while i < 10: # Tant que i est strictement inférieure à 10
print(i + 1, "*", nb, "=", (i + 1) * nb)
i += 1 # On incrémente i de 1 à chaque tour de boucle
Tant que où répéter jusqu’à ?
i←1 i=1
Tant que i ≤ 10 faire while i <= 10:
Écrire(7 x i) print(7 * i)
i←i+1 i += 1
Fin tant que
Les Boucles - WHILE
Exercice d’application:
Solution :
print(" Affichage des 10 premiers entiers ")
i = 1 # variable compteur utilisée par la boucle
while i <= 10:
print(i)
i += 1 # Incrémenter i de 1 (i=i+1)
print( " Fin traitement…")
Les Boucles - WHILE
Exercice d’application:
Création de la table de multiplication d’un entier.
Solution :
nb1= input("Donnez un entier : ")
nb2= int(nb1)
print(" Création de la table de multiplication de: " ,nb1)
i = 1 # variable compteur utilisée par la boucle
while i <= 10:
print(i, "*", nb2, "=", (i * nb2))
i += 1 # Incrémenter i de 1 (i=i+1)
print( " Fin traitement…")
Les Boucles imbriquées
Il est tout à fait possible, et parfois nécessaire, d'imbriquer une boucle dans une autre
boucle.
Par exemple, imaginons que l'on veuille écrire toutes les heures et minutes d'une
journée. Cela commencera par 0 heure 0 minute, 0 heure 1 minute, 0 heure 2
minutes, ..., 0 heure 59 minutes, 1 heure 0 minute, 1 heure 1 minute, ...
h=0
while h<24:
m=0
while m<60:
print(h,"heure(s) ",m,"minute(s)")
m+=1
h+=1
Conversion de type
Algorithmique Python
Pour i de 1 à 5 faire for i in range(1, 6):
Pour j de 1 à 5 faire for j in range(1, 6):
Écrire(i x j) print(i * j)
Fin pour
Fin pour
Les Boucles - FOR
Parcourir un itérable (tout conteneur que l’on peut parcourir élément par élément, dans l’ordre ou non,
suivant son type) : B
Syntaxe: o
n
j
for elt in sequence: o
u
Bloc d’instructions r
Exercice d’application :
Ecrire un programme qui affiche les lettres d’une chaîne de caractères si ce sont des
voyelles et, sinon, il affiche des « * »
Solution :
chaine = "Bonjour les enfants"
for lettre in chaine:
if lettre in "AEIOUYaeiouy": # lettre est une voyelle
print(lettre)
else: # lettre est une consonne... ou plus exactement, lettre
n'est pas une voyelle
print("*")
Les Boucles
Exemple :
# Un seul paramètre
for i in range(5):
print(i) Résultat = 0 1 2 3 4
# Deux paramètres
for i in range(3, 6):
print(i) Résultat = 3 4 5
# Trois paramètres
for i in range(4, 10, 2):
print(i) Résultat = 4 6 8
Les Boucles
Exemple :
Solution
liste = 10
for chiffre in range(liste):
print(chiffre)
Print " Fin traitement…"
Les ruptures de séquences
# affiche :
#1234
# Boucle interrompue pour x = 5
Les ruptures de séquences
# affiche :
# 1 2 3 4 6 7 8 9 10
# La boucle a sauté la valeur 5
Exercice d’application
Calculer le prix TTC d’un article quelconque sachant son prix HT et le taux de TVA (fixé à 20 %).
Formuler la solution en langage algorithmique, puis en Python.
Algorithme prixTTC
Début
Lire("Prix HT :", prixHT) {Entrée}
prixTTC ← prixHT × (1 + TVA) {Traitement/calcul}
Écrire("Prix TTC :", prixTTC) {Sortie}
Fin