Chapter 2 Introduction à Python 2
2.1 Les boucles
Une boucle est un constructeur de programmation qui permet de répéter une série d’instructions un nombre de fois déterminé ou jusqu’à ce qu’une condition donnée ne soit plus remplie.
Il existe deux types de boucles couramment utilisés en Python :
for
et while
.
L’utilisation adéquate des boucles est importante pour éviter les répétitions inutiles de code et pour simplifier le processus de résolution de certains problèmes complexes.
2.1.1 Les boucles while
La boucle while
est utilisée pour répéter les instructions tant
que la condition spécifiée est vraie. La boucle while
ne s’arrête
que lorsque la condition devient fausse. C’est une boucle
condition-controlled.
initialisation_incrementation
while condition :
bloc_instructions
incrementation
Cette boucle nécessite 3 éléments :
Initialisation de la variable de comptage
La condition à évaluer
Incrémentation de la variable de comptage
Attention : La 3e étape est très importante, si elle n’est pas faite la boucle risque de tourner à l’infini.
= 15 # On initialisation la variable à 15
N while N > 10 : # On présente la condition
print("La valeur actuelle de N est", N) # Instruction à réaliser
# lorsque la condition est vraie
= N-1 # Incrémentation du compteur N
## La valeur actuelle de N est 15
## La valeur actuelle de N est 14
## La valeur actuelle de N est 13
## La valeur actuelle de N est 12
## La valeur actuelle de N est 11
Et si on essayait de calculer la somme de tous les entiers compris entre 0 et N ?
Pour ce faire il faut :
Initialiser le compteur et la variable qui va stocker la somme des entiers
S’assurer que l’on se trouve entre 0 et N et stocker la somme des entiers
Incrémenter le compteur
= 0 # Initialisation du compteur
N = 0 # Initialisation de la somme
somme
while N < 5 : # Condition
+= N # On ajoute à la variable la valeur de N
somme += 1 # Incrémentation du compteur
N
# On sort de la boucle pour afficher la somme
print("La somme de tous les entiers positifs inférieurs à", N, "vaut", somme)
## La somme de tous les entiers positifs inférieurs à 5 vaut 10
Activité
2.1.2 Les boucles for
La boucle for
est utilisée pour itérer sur une séquence d’objets,
tels que les listes, les chaînes de caractères ou les tuples. La boucle
for
répète les instructions pour chaque élément de la séquence.
C’est une boucle collection-controlled.
for element in sequence :
bloc_instructions
La séquence peut avoir plusieurs formes, elle peut être une chaîne de caractères, une liste, un set, un dictionnaire etc.
for letter in "TheBrainstormers": # On itère sur toutes les lettres de la chaîne
print(letter) # On affiche chaque lettre
## T
## h
## e
## B
## r
## a
## i
## n
## s
## t
## o
## r
## m
## e
## r
## s
Dans l’exemple précédent, letter peut être remplacé par n’importe quel autre mot. L’essentiel est de s’y référer dans la suite du bloc d’instructions.
for i in "TheBrainstormers": # On itère sur toutes les lettres de la chaîne par 'i'
print(i) # On affiche chaque 'i'
## T
## h
## e
## B
## r
## a
## i
## n
## s
## t
## o
## r
## m
## e
## r
## s
On peut itérer sur des listes aussi :
for element in ["Hello", "Je m'appelle Goku", "et", "j'ai", 12, "ans"]: # On itère sur toutes les éléments de la liste
print(element) # On affiche chaque élément
## Hello
## Je m'appelle Goku
## et
## j'ai
## 12
## ans
La fonction range() permet de générer des suites arithmétiques de nombres entiers. Elle nous permet d’itérer sur des listes de nombres entiers.
La syntaxe est la suivante :
range(<start>, <end>, <step>)
La séquence prend en compte le <start>
et exclut le <end>
.
for i in range(1, 11, 1): # On itère sur toutes les éléments de liste d'entiers
print(i) # On affiche chaque élément
## 1
## 2
## 3
## 4
## 5
## 6
## 7
## 8
## 9
## 10
On a prévu d’afficher tous les éléments d’une liste comprenant les entiers entre 1 et 10 (11 est exclu) en faisant des pas de 1.
On peut aussi aussi faire des pas de 2, 4, -1 etc tant que le pas est un nombre entier.
Dans le cas où le <start>
< <end>
, alors le <step>
doit être négatif.
for i in range(10, -1, -2): # On itère sur toutes les éléments de liste d'entiers
print(i) # On affiche chaque élément
## 10
## 8
## 6
## 4
## 2
## 0
Cette fois ci on itère sur une liste qui commence à 10 et se termine par 0 (-1 est encore exclu) et faisant des pas de 2. C’est comme si on comptait à l’envers de 10 à 0 en citant que les nombres pairs.
Activité
2.2 Les fonctions
TODO : PARLER DES FONCTIONS DEJA UTILISEES ET DE LAMBDA
En programmation, les fonctions sont des blocs de code réutilisables qui effectuent une tâche spécifique. Les fonctions permettent de regrouper des instructions et de les appeler à partir de différents endroits de votre programme.
Voici quelques raisons pour lesquelles vous devriez utiliser des fonctions en Python :
Réutilisabilité : Les fonctions vous permettent d’éviter de répéter du code. Une fois que vous avez écrit une fonction, vous pouvez l’appeler plusieurs fois à partir de différents
Modularité : Les fonctions sont des blocs de code indépendants qui peuvent être modifiés sans affecter le reste de votre programme. Cela facilite la maintenance de votre code.
Facilité de lecture : Les fonctions permettent de diviser un programme en blocs logiques plus petits et plus faciles à comprendre. Les noms de fonctions bien choisis peuvent également rendre votre code plus lisible.
2.2.1 Définir une fonction
Pour définir une fonction, on utilise le mot clé def
suivi du nom de la fonction suivi d’une suite de paramètres
indiqués entre parenthèses. Les arguments (ou paramètres) sont des variables à partir desquels est défini le bloc d’instructions.
Le bloc d’instructions commence à la ligne suivante avec une indentation
def nom_de_la_fonction(arg1, arg2, arg3, ...., argN):
bloc d'instructions
Pensez à une fonction comme un mini-programme qui effectue une tâche spécifique pour vous. Par exemple, si vous deviez écrire une fonction qui calcule la moyenne de deux nombres, vous pourriez écrire quelque chose comme ça :
def calculer_moyenne(nombre1, nombre2):
= (nombre1 + nombre2) / 2
moyenne print("La moyenne de", nombre1, "et", nombre2, "est", moyenne)
return moyenne
Cette fonction prend deux nombres comme entrée, calcule leur moyenne et retourne le résultat.
def dire_bonjour(nom):
print("Bonjour", nom, "!")
Cette 2e fonction prend en argument un nom et fait un print(). Elle ne retourne rien.
Une fonction peut aussi prendre des arguments ayant une valeur pare défaut, dans ce cas les arguments ayant une valeur par défaut sont définies à la fin.
def dire_bonjour(nom, age = 25):
print("Bonjour, je m'appelle", nom, "et j'ai", age, "ans.")
Pour expliciter le fait que l’on veut stocker une valeur issue du bloc d’instructions, on le fait le mot clé return
comme dans le 1er exemple.
2.2.2 Appeler une fonction
Pour appeler une fonction en Python, vous devez utiliser son nom suivi de parenthèses, éventuellement avec des arguments entre les parenthèses.
Dans le cas où on retourne une valeur
valeur = nom_de_la_fonction(arg1, arg2, arg3, ...., argN)
Dans le 1er exemple, cela donne :
= calculer_moyenne(4, 6) moyenne
## La moyenne de 4 et 6 est 5.0
On va maintenant s’assurer que la variable moyenne
contient bien la valeur calculée
print(moyenne)
## 5.0
On pourra maintenant dans le reste de notre code faire référence à la variable moyenne
pour faire référence à ce résultat.
Dans le cas où on ne retourne rien
nom_de_la_fonction(arg1, arg2, arg3, ...., argN)
Dans le 2e exemple cela donne :
# Notez que l'on n'est pas obligé de donner une valeur au paramètre 'age'
# Car il a déjà une valeur par défaut qui est 25.
= "Mounir") dire_bonjour(nom
## Bonjour, je m'appelle Mounir et j'ai 25 ans.
On ne retourne rien donc aucune valeur n’est stockée. Activité
2.2.4 Variable locale - variable globale
Dans le corps d’une fonction (dans le bloc d’instructions indenté), plusieurs variables peuvent être créées et ces variables peuvent servir à bien d’utilisations. Toutefois il faut distinguer principalement 2 types de variables :
2.2.4.1 Les variables globales
Une variable globale est une variable accessible dans tout le programme. Elle est modifiable à tout moment et est définie hors d’une fonction. Dans l’exemple suivant, la variable value est globale.
= 65
value def example_global():
print('on affiche la valeur :', value)
example_global()
## on affiche la valeur : 65
2.2.4.2 Les variables locales
Elles sont les variables situées uniquement dans le corps de la fonction, elles ne peuvent être utilisées dans le reste du script.
# On va définir la variable dans la fonction
def example_local():
= 65
value_var print('on affiche la valeur :', value_var)
example_local()
## on affiche la valeur : 65
# On verra si on pourra l'utiliser hors de la fonction
print('on affiche la valeur :', value_var)
## on affiche la valeur : 65
Comme attendu on ne peut pas accéder à la variable hors de la fonction. On va la rendre accessible
Pour rendre les variables locales globales, on a 2 solutions :
on utilise le mot clé global suivi du nom de la variable dans le corps de la fonction
ou on la retourne lors de l’appel de la fonction
# On va définir la variable dans la fonction et la rendre accessible
def example_local():
global value_var
= 65
value_var print('on affiche la valeur :', value_var)
example_local()
## on affiche la valeur : 65
# On verra si on pourra l'utiliser hors de la fonction
print('on affiche la valeur :', value_var)
## on affiche la valeur : 65
Bingo ça marche comme sur des roulettes ! On pouvait aussi utiliser le return
, je vous laisse essayer !
2.2.5 La docstring
Une doctring est une chaîne de caractères juste après la définition de la fonction qui joue le rôle de chaîne de documentation de la fonction. C’est une bonne pratique de documenter le code que vous écrivez, son utilité est aussi importante que les commentaires dans les blocs d’instruction.
def table_de_multiplication(multiplicateur, nombre_iterations):
"""
Cette fonction permet d'afficher une table de multiplication
Parameters
----------
multiplicateur : TYPE int
DESCRIPTION : représente le multiplicateur choisi
nombre_iterations : TYPE int
DESCRIPTION : représente le nombre d'intérations que l'on veut
faire
Returns
------
None
"""
for chiffre in range(0, nombre_iterations + 1):
= multiplicateur*chiffre
produit print(chiffre, "*", multiplicateur, "=", produit)
= 7, nombre_iterations = 20) table_de_multiplication(multiplicateur
## 0 * 7 = 0
## 1 * 7 = 7
## 2 * 7 = 14
## 3 * 7 = 21
## 4 * 7 = 28
## 5 * 7 = 35
## 6 * 7 = 42
## 7 * 7 = 49
## 8 * 7 = 56
## 9 * 7 = 63
## 10 * 7 = 70
## 11 * 7 = 77
## 12 * 7 = 84
## 13 * 7 = 91
## 14 * 7 = 98
## 15 * 7 = 105
## 16 * 7 = 112
## 17 * 7 = 119
## 18 * 7 = 126
## 19 * 7 = 133
## 20 * 7 = 140
Activité
2.2.3 Comment bien nommer une fonction ?