Vous êtes sur la page 1sur 35

Structures conditionnelles & Boucles

Fonctions en Python
Modules et importations

Python et R pour les sciences de données


Chap 2 : Boucles - Fonctions en Python

Laila AMIR

Master SDAD & GAA

Année universitaire 2019/2020

Laila AMIR 1 / 32
Structures conditionnelles & Boucles
Fonctions en Python
Modules et importations

Plan

1 Structures conditionnelles & Boucles


Structures conditionnelles
Structure conditionnelle if
Structure conditionnelle if ... else
Boucles
2 Fonctions en Python
Création et appel d’une fonction
Fonction avec paramètres
Nombre d’arguments indéterminés
Paramètres par défaut
Variables locales, variables globales
3 Modules et importations

Laila AMIR 2 / 32
Structures conditionnelles & Boucles
Structures conditionnelles
Fonctions en Python
Boucles
Modules et importations

Outline

1 Structures conditionnelles & Boucles


Structures conditionnelles
Structure conditionnelle if
Structure conditionnelle if ... else
Boucles
2 Fonctions en Python
Création et appel d’une fonction
Fonction avec paramètres
Nombre d’arguments indéterminés
Paramètres par défaut
Variables locales, variables globales
3 Modules et importations

Laila AMIR 3 / 32
Structures conditionnelles & Boucles
Structures conditionnelles
Fonctions en Python
Boucles
Modules et importations

Structures conditionnelles

L’instruction if est la structure de test la plus simple.


Sa syntaxe en Python fait intervenir la notion de bloc.
Un bloc peut contenir une ou plusieurs instructions, il 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.
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).

Laila AMIR 4 / 32
Structures conditionnelles & Boucles
Structures conditionnelles
Fonctions en Python
Boucles
Modules et importations

Structure conditionnelle if
Syntaxe
if condition :
Instruction A
condition est une expression booléenne
qui prend pour valeur True ou False.
L’instruction A n’est exécutée que si la
condition est vérifiée (valeur True).

Exp 1 avec condition vraie


1 15 est plus grand que
1 x = 15 =
> ,→ 10
2 if x > 10: 2 Fin
3 print(x, "est plus grand que 10")
4 print("Fin")

Laila AMIR 5 / 32
Structures conditionnelles & Boucles
Structures conditionnelles
Fonctions en Python
Boucles
Modules et importations

Structure conditionnelle if
Syntaxe
if condition :
Instruction A
condition est une expression booléenne
qui prend pour valeur True ou False.
L’instruction A n’est exécutée que si la
condition est vérifiée (valeur True).

Exp 2 avec condition vraie


1 15 est plus grand que
1 x = 15 =
> ,→ 10
2 if x > 10: 2 Fin
3 print(x, "est plus grand que 10")
4 print("Fin")

Laila AMIR 5 / 32
Structures conditionnelles & Boucles
Structures conditionnelles
Fonctions en Python
Boucles
Modules et importations

Structure conditionnelle if ... else

Syntaxe
if condition :
Instruction A
else :
Instruction B

Exp 3 avec condition fausse

1 x = -2
2 if x > 0: 1 -2 est négatif ou nul
=
>2 Fin
3 print(x, "est positif")
4 else:
5 print(x, "est négatif ou nul")
6 print("Fin")

Laila AMIR 6 / 32
Structures conditionnelles & Boucles
Structures conditionnelles
Fonctions en Python
Boucles
Modules et importations

Structure conditionnelle if ... else

Syntaxe
if condition :
Instruction A
else :
Instruction B

Exp 4 avec condition fausse

1 x = -2
2 if x > 0: 1 -2 est négatif ou nul
=
>2 Fin
3 print(x, "est positif")
4 else:
5 print(x, "est négatif ou nul")
6 print("Fin")

Laila AMIR 6 / 32
Structures conditionnelles & Boucles
Structures conditionnelles
Fonctions en Python
Boucles
Modules et importations

Opérateurs de comparaison
Opérateur Signification
x == y x est égal à y Exp 5
x!=y x est différent de y
x>y x est plus grand que y 1 >>> 3 < 4
2 True
x<y x est plus petit que y 3 >>> 3 > 4
x >= y x est plus grand ou égal à y 4 False
x <= y x est plus petit ou égal à y

Exp 6 Opérateur logique and Exp 7 Opérateur logique or

1 >>> 2 < 3 and 3 < 4 1 >>> 2 < 3 or 3 < 4


2 True 2 True
3 >>> 2 < 3 and 3 > 4 3 >>> 2 < 3 or 3 > 4
4 False 4 True

Laila AMIR 7 / 32
Structures conditionnelles & Boucles
Structures conditionnelles
Fonctions en Python
Boucles
Modules et importations

Opérateurs de comparaison
Opérateur Signification
x == y x est égal à y Exp 8
x!=y x est différent de y
x>y x est plus grand que y 1 >>> 3 < 4
2 True
x<y x est plus petit que y 3 >>> 3 > 4
x >= y x est plus grand ou égal à y 4 False
x <= y x est plus petit ou égal à y

Exp 9 Opérateur logique and Exp 10 Opérateur logique or

1 >>> 2 < 3 and 3 < 4 1 >>> 2 < 3 or 3 < 4


2 True 2 True
3 >>> 2 < 3 and 3 > 4 3 >>> 2 < 3 or 3 > 4
4 False 4 True

Laila AMIR 7 / 32
Structures conditionnelles & Boucles
Structures conditionnelles
Fonctions en Python
Boucles
Modules et importations

Boucles

Les boucles s’utilisent pour répéter plusieurs fois l’éxecution


d’une partie du programme.

Laila AMIR 8 / 32
Structures conditionnelles & Boucles
Structures conditionnelles
Fonctions en Python
Boucles
Modules et importations

Boucle for

Exp 11 boucle for 1 i a pour valeur 0


2 i a pour valeur 1
=
>3 i a pour valeur 2
1 for i in range(4):
2 print("i a pour valeur", i) 4 i a pour valeur 3

L’en-tête de l’instruction for 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.
Laila AMIR 9 / 32
Structures conditionnelles & Boucles
Structures conditionnelles
Fonctions en Python
Boucles
Modules et importations

Boucle for

Exp 12 boucle for 1 i vaut Marc


2 i vaut est
1 c = ["Marc", "est", "dans", "le", =
>3 i vaut dans
,→ "jardin"] 4 i vaut le
2 for i in c: 5 i vaut jardin
3 print("i vaut", i)

Laila AMIR 10 / 32
Structures conditionnelles & Boucles
Structures conditionnelles
Fonctions en Python
Boucles
Modules et importations

Boucle while

Syntaxe :
while condition :
Instruction A

Exp 13 boucle while


1 x a pour valeur 1
1 x = 1 2 x a pour valeur 2
2 while x < 10: =
>3 x a pour valeur 4
3 print("x a pour valeur", x) 4 x a pour valeur 8
4 x = x * 2
5 print("Fin")

Laila AMIR 11 / 32
Structures conditionnelles & Boucles
Structures conditionnelles
Fonctions en Python
Boucles
Modules et importations

Boucle while

Le corps de la boucle sera répété tant que la condition


est vraie.
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.
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.

Laila AMIR 12 / 32
Création et appel d’une fonction
Structures conditionnelles & Boucles Fonction avec paramètres
Fonctions en Python Nombre d’arguments indéterminés
Modules et importations Paramètres par défaut
Variables locales, variables globales

Outline

1 Structures conditionnelles & Boucles


Structures conditionnelles
Structure conditionnelle if
Structure conditionnelle if ... else
Boucles
2 Fonctions en Python
Création et appel d’une fonction
Fonction avec paramètres
Nombre d’arguments indéterminés
Paramètres par défaut
Variables locales, variables globales
3 Modules et importations

Laila AMIR 13 / 32
Création et appel d’une fonction
Structures conditionnelles & Boucles Fonction avec paramètres
Fonctions en Python Nombre d’arguments indéterminés
Modules et importations Paramètres par défaut
Variables locales, variables globales

Fonctions en Python

Nous avons déjà vu quelques fonctions : print(), type(), len(),


input(), range() ... Ce sont des fonctions pré-définies (Built-in
Functions)
(https ://docs.python.org/3/library/functions.html).
Nous avons aussi la possibilité de créer nos propres fonctions !
Intérêt des fonctions
Une fonction est une portion de code que l’on peut
appeler au besoin (c’est une sorte de sous-programme).
L’utilisation des fonctions évite des redondances dans le
code : on obtient ainsi des programmes plus courts et plus
lisibles.

Laila AMIR 14 / 32
Création et appel d’une fonction
Structures conditionnelles & Boucles Fonction avec paramètres
Fonctions en Python Nombre d’arguments indéterminés
Modules et importations Paramètres par défaut
Variables locales, variables globales

Création et appel d’une fonction


Pour créer une fonction, on utilise le mot-clé def.

Exp 14 Création d’une fonction

1 def nom_de_la_fonction(parametre_1, parametre_2,...):


2 "Docstring" # doc expliquant la raison d’être de la
,→ fonction
3 Bloc_instruction # Le bloc d'instruction est indenté.
4 return resultat # Valeur retournée.

Pour appeler la fonction et stocker la valeur qu’elle retourne :

Exp 15 Appel de la fonction

1 variable = nom_de_la_fonction(parametre_1, parametre_2,...)

Laila AMIR 15 / 32
Création et appel d’une fonction
Structures conditionnelles & Boucles Fonction avec paramètres
Fonctions en Python Nombre d’arguments indéterminés
Modules et importations Paramètres par défaut
Variables locales, variables globales

Passer un argument à une fonction


Soit la fonction qui divise par 2 la valeur passée en argument :

Exp 16 division par deux

1 # Fonction
2 def division_par_deux(x):
3 "Fonction divisant par deux le nombre x passé en argument"
4 return x/2 # Valeur retournée.
5
6 # Main program (programme principal)
7 a = 8
8 b = division_par_deux(a)
9 print(b)

Résultat : 4
La fonction doit toujours précéder l’appel de fonction.
Laila AMIR 16 / 32
Création et appel d’une fonction
Structures conditionnelles & Boucles Fonction avec paramètres
Fonctions en Python Nombre d’arguments indéterminés
Modules et importations Paramètres par défaut
Variables locales, variables globales

Passer plusieurs arguments à une fonction


Il est possible de passer plusieurs arguments à une fonction :

Exp 17 division(x, y)

1 # Fonction
2 def division(x, y):
3 "Fonction divisant par y le dividende x passé en argument"
4 return x/y # Valeur retournée.
5
6 # Main program (programme principal)
7 a = 15
8 b = 3
9 resultat = division(a, b)
10 print(resultat)

Résultat : 5
Laila AMIR 17 / 32
Création et appel d’une fonction
Structures conditionnelles & Boucles Fonction avec paramètres
Fonctions en Python Nombre d’arguments indéterminés
Modules et importations Paramètres par défaut
Variables locales, variables globales

Nombre d’arguments indéterminés


Il est possible de passer à une fonction un nombre infini
d’arguments. Pour ce faire, il suffit de rajouter * devant le
paramètre qui recevra les arguments :

Exp 18 Nombre d’arguments indéterminés

1 # Fonction
2 def rajouter_deux(*args):
3 "Fonction qui rajoute 2 à chaque élément de la liste args"
4 for i in args :
5 print(i + 2)
6
7 #Main program (programme principal)
8 rajouter_deux(8, 5, 4, 89, -6, 9.8, -75.9)

Résultat : 10 7 6 91 -4 11.8 -73.9


Laila AMIR 18 / 32
Création et appel d’une fonction
Structures conditionnelles & Boucles Fonction avec paramètres
Fonctions en Python Nombre d’arguments indéterminés
Modules et importations Paramètres par défaut
Variables locales, variables globales

À quoi sert la docstring ?

La docstring est une chaîne de caractères indentée juste après


la déclaration d’une fonction. Elle fournit une
documentation accessible grâce à la fonction help() :

Exp 19 docstring - help()

1 >>> help(rajouter_deux)
2 Help on function rajouter_deux in module __main__ :
3
4 rajouter_deux(*args)
5 Fonction qui rajoute 2 à chaque élément de la liste args

Laila AMIR 19 / 32
Création et appel d’une fonction
Structures conditionnelles & Boucles Fonction avec paramètres
Fonctions en Python Nombre d’arguments indéterminés
Modules et importations Paramètres par défaut
Variables locales, variables globales

Paramètres par défaut


Une fonction peut avoir des paramètres avec des arguments par
défaut. Ces paramètres ne doivent pas précéder les paramètres
sans arguments par défaut.

Exp 20 Paramètres par défaut

1 # Fonction
2 def diviser(x, diviseur = 2):
3 "Fonction qui divise x par diviseur"
4 return x/diviseur
5
6 # Main program (programme principal)
7 a = 10
8 b = diviser(a) # On passe une seule valeur en argument
9 print(b)

Résultat : 5
Laila AMIR 20 / 32
Création et appel d’une fonction
Structures conditionnelles & Boucles Fonction avec paramètres
Fonctions en Python Nombre d’arguments indéterminés
Modules et importations Paramètres par défaut
Variables locales, variables globales

Paramètres par défaut


Maintenant, on passe deux variables en arguments en modifiant
l’argument du deuxième paramètre. On doit préciser le
paramètre dont on modifie la valeur par défaut (diviseur = b).
Exp 21 Paramètres par défaut

1 # Fonction
2 def diviser(x, diviseur = 2):
3 "Fonction qui divise x par diviseur"
4 return x/diviseur
5 # Main program (programme principal)
6 a = 15. # On passe deux variables en argument.
7 b = 4
8 c = diviser(a, diviseur = b)
9 print(c)

Résultat : 3.75
Laila AMIR 21 / 32
Création et appel d’une fonction
Structures conditionnelles & Boucles Fonction avec paramètres
Fonctions en Python Nombre d’arguments indéterminés
Modules et importations Paramètres par défaut
Variables locales, variables globales

Remarques

Si on déclare un paramètre par défaut avant les autres


paramètres, par exemple : def diviser(diviseur = 2, x),
Python retourne une exception (erreur).

Exp 22 exception

1 SyntaxError
2 non-default argument follows default argument

On appelle procédure la fonction qui ne renvoie pas de


valeur lorsqu’elle se termine.

Laila AMIR 22 / 32
Création et appel d’une fonction
Structures conditionnelles & Boucles Fonction avec paramètres
Fonctions en Python Nombre d’arguments indéterminés
Modules et importations Paramètres par défaut
Variables locales, variables globales

Variables locales, variables globales

Lorsqu’une fonction est appelée, Python réserve pour


elle (dans la mémoire de l’ordinateur) un espace de
noms. Cet espace de noms local à la fonction est à
distinguer de l’espace de noms global où se trouvait
les variables du programme principal.
A chaque fois que nous définissons des variables à l’intérieur
du corps d’une fonction, ces variables ne sont
accessibles qu’à la fonction elle-même. On dit que ces
variables sont des variables locales à la fonction.
Les variables définies à l’extérieur d’une fonction sont des
variables globales.

Laila AMIR 23 / 32
Création et appel d’une fonction
Structures conditionnelles & Boucles Fonction avec paramètres
Fonctions en Python Nombre d’arguments indéterminés
Modules et importations Paramètres par défaut
Variables locales, variables globales

Variables locales, variables globales


Exp 23 Variables locales, globales
1 def test(): Exécution :
2 b = 5 # b locale
3 print(a, b)
=>
4
1 2 5
5 a = 2 # a globale 2 2 7
6 b = 7 # b globale
7 test()
8 print(a, b)

la variable a est globale, deux variables b distinctes


(appartiennent à deux espaces de noms différents, une globale et
une locale à la fonction test().
à l’interieur de le la fonction test(), print affiche la valeur de a
globale =2 et de b locale =5. En sortant de le la fonction test(),
(l’espace de nom associé à cette fonction disparaît), print affiche
la valeur de a globale =2 et de b gocale =7 (n’a pas été modifiée).
Laila AMIR 24 / 32
Création et appel d’une fonction
Structures conditionnelles & Boucles Fonction avec paramètres
Fonctions en Python Nombre d’arguments indéterminés
Modules et importations Paramètres par défaut
Variables locales, variables globales

Utilisation d’une variable globale - global

Pour que la fonction soit capable de modifier une variable


globale, il suffit d’utiliser l’instruction global. Cette instruction
permet d’indiquer - à l’intérieur de la définition d’une fonction
quelles sont les variables à traiter globalement.

Exp 24 Variables locales, globales


1 def test(): Exécution :
2 global b = 5 #accès à la variable globale b
3 print(a, b)
=>
4
1 2 5
5 a = 2 2 2 5
6 b = 7
7 test()
8 print(a, b)

Laila AMIR 25 / 32
Structures conditionnelles & Boucles
Fonctions en Python
Modules et importations

Outline

1 Structures conditionnelles & Boucles


Structures conditionnelles
Structure conditionnelle if
Structure conditionnelle if ... else
Boucles
2 Fonctions en Python
Création et appel d’une fonction
Fonction avec paramètres
Nombre d’arguments indéterminés
Paramètres par défaut
Variables locales, variables globales
3 Modules et importations

Laila AMIR 26 / 32
Structures conditionnelles & Boucles
Fonctions en Python
Modules et importations

Modules et importations

Nous allons répondre aux questions suivantes :


comment utiliser une même fonction dans plusieurs
programmes différents ?
comment avoir la définition d’une fonction dans un fichier
différent de celui qui contient le programme principal ?

Laila AMIR 27 / 32
Structures conditionnelles & Boucles
Fonctions en Python
Modules et importations

Modules et importations
Par exemple, nous allons créer un fichier nommé puissance.py
qui va définir 2 fonctions : carre() et cube(). Un tel fichier
est appelé un module et il va pouvoir être importé dans
un autre fichier, et en particulier dans le fichier qui contient le
programme principal.

Exp 25 puissance.py
1 def carre(valeur):
2 resultat = valeur**2
3 return resultat
4
5 def cube(valeur):
6 resultat = valeur**3
7 return resultat

Il Laila
est maintenant
AMIR possible d’utiliser dans un programme 28 / 32
Structures conditionnelles & Boucles
Fonctions en Python
Modules et importations

Modules et importations

Exp 27 on importe explicitement


Exp 26 on importe une seule les deux fonctions
fonction 1 from puissance import carre, cube
1 from puissance import carre 2
2 3 a = 5
3 a = 5 4 u = carre(a)
4 u = carre(a) 5 print("le carre vaut", u)
5 print("le carre vaut", u) 6 v = cube(a)
7 print("le cube vaut", v)

Avertissement
Le fichier puissance.py doit être dans le même répertoire que le
programme principal (ou bien se trouver dans le « path » de
Python).
Laila AMIR 29 / 32
Structures conditionnelles & Boucles
Fonctions en Python
Modules et importations

Modules et importations

Exp 28 on importe toutes les fonctions


1 from puissance import *
2
3 a = 5
4 u = carre(a)
5 print("le carre vaut", u)
6 v = cube(a)
7 print("le cube vaut", v)

Avertissement
L’importation de toutes les fonctions avec * est fortement
déconseillée. En effet, elle ne permet pas d’avoir une vision
claire des fonctions qui ont été importées. Ceci est donc une
source potentielle d’erreurs.
Laila AMIR 30 / 32
Structures conditionnelles & Boucles
Fonctions en Python
Modules et importations

Modules et importations
Exp 29 on importe le module Exp 30 on importe le module et
1 import puissance on lui donne un alias
2 1 import puissance as pu
3 a = 5 2 a = 5
4 u = puissance.carre(a) 3 u = pu.carre(a)
5 print("le carre vaut", u) 4 print("le carre vaut", u)
6 v = puissance.cube(a) 5 v = pu.cube(a)
7 print("le cube vaut", v) 6 print("le cube vaut", v)

Exp 31 on importe une fonction et on lui donne un alias


1 from puissance import carre as ca
2 a = 5
3 u = ca(a)
4 print("le carre vaut", u)

Laila AMIR 31 / 32
Structures conditionnelles & Boucles
Fonctions en Python
Modules et importations

Package
Quand on a un grand On peut ensuite utiliser la
nombre de modules, il sera fonction fct1() définie dans
intéressant de les organiser module1.py, en important
dans des dossiers. Un dossier package1.module1 :
qui rassemble des modules est
Exp 33
appelé un package. Le nom
du package est le même que 1 import package1.module1
celui du dossier. Par exp, on 2

crée un dossier package1 qui 3 u = package1.module1.fct1(3)


4 print("u vaut", u)
contient le fichier module1.py
suivant :
Exp 32 module1.py Note : Il est aussi possible
1 def fct1(a):
d’avoir des dossiers imbriqués,
2 return a**2 c’est-à-dire des dossiers qui
contiennent d’autres dossiers.
Laila AMIR 32 / 32

Vous aimerez peut-être aussi