Université Sorbonne Paris Nord PC-SPI
Institut Galilée Licence 1ère année - 1er semestre
Informatique 1: éléments d’informatique
TD 1: Fonctions, boucle « while »
1 Fonctions
Pour réutiliser une expressions sur plusieurs valeurs des variables qu’elles contient, on peut définir des fonctions.
La syntaxe est la suivante :
def <nom >(< liste de noms >)
<bloc >
Et voici quelques exemples de fonctions :
def double (x):
return x + x
def somme (x, y):
return x + y
def const ():
return 0
def mystere (x):
if (x > 0):
z = 1
else:
z = −1
return z ∗ x
def affiche (x):
print ("Le double de " + str(x) + " est " + str (2∗x))
On remarque que :
1. le mot clé 1 def marque qu’on est en train de définir une fonction ;
2. le mot clé def est suivi par le nom de la fonction ;
3. le nom de la fonction est suivi par une liste de noms séparés par des virgules et entre parenthèses, qui
correspondent au noms des paramètres de la fonctions. Ce sont des variables qu’on peut utiliser dans
le bloc d’expressions associé à la fonction et qui peuvent changer à chaque évaluation. Par exemple, la
fonction double a un seul paramètre nommé x, tandis que la fonction somme a deux paramètres x et y ;
4. la liste des paramètres peut être vide, comme pour la fonction const, mais il faut néanmoins écrire la
paire de parenthèses ouverte-fermée () ;
5. la ligne avec le nom et les paramètres de la fonction est terminée par un caractère deux-points et par un
bloc de commandes qui seront évaluées l’un après l’autre à chaque utilisation de la fonction. Par exemple,
les blocs des fonctions double, somme, const et affiche contiennent une seule commande, qui sera ainsi
la seule commande a être évaluée quand la fonction sera utilisée dans une expression. Par contre, le bloc
de la fonction mystere contient une commande if-then-else suivie de la commande return ;
6. le bloc de commandes de la fonction est indenté par rapport à la ligne du mot clé def ;
1 Onparle de “mot clé” pour les mots qui sont utilisés dans une construction du langage. Par exemple, le mot then, else, etc.,
sont des mots clés que nous avons déjà vu. Attention : un mot clé ne peut pas être utilisé pour nommer une variable ou une
fonction.
2023-09-20 14:53:52 1 TD 1
7. le mot clé return précède la valeur qu’on veut renvoyer comme résultat de la fonction (cette valeur est
nommé aussi “la valeur renvoyée par la fonction” ou “la valeur de retour de la fonction”) ;
8. une fonction peut se terminer sans exécuter un return, comme par exemple la fonction affiche. Dans
ce cas, la fonction exécute les actions associée aux commandes de son bloc sans renvoyer aucune valeur.
Quand une fonction reçoit des valeurs, elle passe à évaluer le bloc de ses commandes. Les paramètres sont des
variables locales au bloc de la fonction (elles peuvent être utilisées seulement dans ce bloc). Ils sont initialisés
aux valeurs reçues par la fonction et peuvent être modifiés dans le bloc de la fonction comme toute autre
variable. Voici par exemple, une nouvelle version de la fonction mystère donnée ci-dessus :
def mystere2 (x):
if (x < 0):
x = −x
return x
L’évaluation d’une fonction se termine avec l’exécution de la dernière commande de son bloc ou avec l’exécution
d’une commande return. Au fait, l’exécution d’une commande return force la terminaison du calcul de la
fonction ; si le return est suivie d’une expression, cette expression est évaluée et sa valeur est utilisée comme
valeur de retour de la fonction, sinon la fonction ne renvoie aucune valeur. Voici donc une troisième version de
la fonction mystère :
def mystere3 (x):
if (x < 0):
return −x
return x
Pour évaluer une fonction sur des valeurs, il suffit d’écrire le nom de la fonction suivi par la liste des valeurs
à utiliser dans le calcul. Voici une exemple d’interaction avec le REPL python qui utilise les fonction données
ci-dessus :
>>> x = 2
>>> double (x+1)
9
>>> somme (x, 4)
6
>>> const ()
0
>>> mystere(−x)
2
>>> affiche (2∗x)
Le double de 4 est 8
Exercices
[E1] Que calcule la fonction mystere ?
3 x2 + 4 x − 2
[P1] Écrire une fonction calc_f qui calcule f (x) = .
x +1
[P2] Modifier la fonction précédente afin que si le numérateur de la fonction n’est pas défini, alors elle renvoie
une valeur particulière appelée None.
[P3] Écrire une fonction delta qui reçoit en paramètres les coefficients a, b et c d’un polynôme de deuxième
degré p(x) = a x 2 + b x + c et calcule le discriminant ∆ = b 2 − 4ac.
TD 1 2 2023-09-20 14:53:52
[P4] Écrire une fonction a_racines qui reçoit en paramètres les coefficients a, b et c d’un polynôme de
deuxième degré p(x) = a x 2 + b x + c et, en utilisant la fonction Delta, renvoie True si le polynôme a
des racinés réelles ou False sinon.
[P5] Répondre aux questions suivantes.
1. Écrire une fonction est_paire qui reçoit en entrée un entier et renvoie True s’il est paire et False
sinon (essayez d’écrire la fonction sans utiliser un if).
2. Écrire une deuxième version de la fonction est_paire qui affiche True si son paramètre est paire
et False sinon.
3. Quelle est la différence entre les deux fonctions ? Laquelle des deux peut être utilisé dans une
expression booléenne ? (par exemple, dans est_paire(x) and x > 0) ?
2 La boucle « while »
La syntaxe de la boucle while de python est la suivante :
while <expression >:
<bloc >
Le mot clé while précède l’expression qui contrôle la boucle. Normalement, cette expression est de type booléen
et renvoie une valeur True et False. Mais, en général, elle peut être de n’importe quel type et sa valeur sera
interprétée comme vraie of fausse selon des règles de conversion dont on verra des exemples ultérieurement.
Comme dans les autres langages de programmation, la commande while répète l’évaluation des commandes
dans son bloc tant que l’évaluation de l’expression de contrôle renvoie une valeur vraie. Par exemple, voici une
boucle qui affiche la table de multiplication de 7 :
i = 1 # i n i t i a l i s a t i o n de l a v a r i a b l e de c o n t r ô l e de l a b o u c l e
while i <= 10: # c o n t r ô l e de l a b o u c l e
# a c t i o n s de l a b o u c l e : a f f i c h a g e de l a l i g n e i −ème de l a t a b l e
print ("7 ∗ " + str(i) + " = " + str(i ∗7))
i += 1 # mise à j o u r de l a v a r de c o n t r ô l e
L’exemple montre clairement la structure générale d’un morceau de programme qui utilise une boucle while :
— l’initialisation des paramètres de contrôle de la boucle (dans l’exemple la variable i qui doit prendre les
valeurs entre 1 et 10, à partir de la valeur initiale 1) ;
— la ligne avec le while et l’expression conditionnelle qui vérifie si la condition d’itération sur les paramètres
de contrôle de la boucle est vraie (dans notre cas, si la variable i n’a pas encore atteint la valeur finale
10) ;
— les actions (le bloc de la boucle) à exécuter à chaque itération (dans l’exemple, l’affichage de la i-ème
ligne de la table de 7) ;
— la mise à jour des paramètres de contrôle de la boucle (dans l’exemple, la variable i qui passe à la valeur
suivante de l’intervalle).
Les composantes d’une boucle while décrites ci-dessous peuvent être directes et bien identifiables comme dans
l’exemple donné plus haut, ou indirectes et/ou distribuées dans le code qui précède le while (l’initialisation
des paramètres de contrôle) ou dans le bloc (la mise à jour des paramètres de contrôle). De toute façon, il faut
bien vérifier qu’elles soient bien réalisées et que :
— la boucle commence avec les valeurs initiales correctes ;
— les paramètres de contrôle de la boucle ont des valeurs correctes à chaque itération ;
— la boucle se termine correctement après avoir exécutés toutes les itérations requise et sans rien faire des
plus.
Exercices
Résoudre les exercices suivants en utilisants des boucles while.
[P6] Définir une fonction sum qui prend un entier n en argument et renvoie la somme des entier de 1 à n.
2023-09-20 14:53:52 3 TD 1
[P7] Définir une fonction sum_mult3 qui prend un entier n en argument et renvoie la somme des entiers
multiples de 3 plus petits que n. Par exemple, sum_mult3(7) = 3 + 6 = 9
[P8] Aujourd’hui un appartement vaut 200 000 €. Sa valeur augmente de 2% chaque année.
1. Écrire une fonction Python pour connaître sa valeur au bout de 10 ans.
2. Écrire une fonction Python pour savoir au bout de combien d’années sa valeur aura doublé.
TD 1 4 2023-09-20 14:53:52