Skip to content

Exercices sur les fonctions

Voici quelques exercices portant sur les fonctions en Python.

Exercice 1

Téléchargez le fichier suivant et ouvrez-le dans Thonny :

Télécharger exo1_fonctions.py

Complétez les fonctions est_pair, plus_grand et produit en respectant la documentation (voir explications sur les docstrings plus bas).

Voici quelques exemples d'appels à ces fonctions dans la console :

>>> est_pair(12)
True
>>> est_pair(15)
False
>>> plus_grand(5, 8, 3)
8
>>> plus_grand(7, 7, 7)
7
>>> produit(4, 8)
32

Les docstrings

Pour comprendre ce que doivent renvoyer ces fonctions, et quels sont leurs paramètres, lisez leurs documentations. Les documentations des fonctions sont écrites sous la forme de commentaires multilignes, que l'on appelle des docstrings. Par exemple, voici la docstring de la fonction est_pair :

''' Renvoie True si l'entier positif n est pair, False sinon.
:param n: (int) un entier positif
:return: (bool) True ou False '''

Cette docstring indique que la fonction doit renvoyer un booléen, True ou False, selon si la paramètre n (un entier) est pair ou non.
À noter qu'il n'y a pas vraiment de convention sur la manière d'écrire une docstring. Toutefois, il doit au minimum y figurer :

  • ce que fait la fonction,
  • les paramètres d'entrée et leur type,
  • la valeur de retour et son type.

Exercice 2

Dans un nouveau script Python, écrire une fonction compter_voyelles qui reçoit une chaîne de caractères mot en entrée et renvoie le nombre de voyelles ("a", "e", "i", "o", "u", "y") présentes dans ce mot.

Exemple :

print(compter_voyelles("python"))  # 2
print(compter_voyelles("ananas"))  # 3

Ensuite, en-dessous de la fonction, écrire un programme qui demande à l'utilisateur de saisir un mot, puis afficher le nombre de voyelles de ce mot en faisant appel à compter_voyelles.

Exercice 3

Écrire une fonction factorielle qui reçoit un nombre entier nombre en entrée et renvoie la factorielle de ce nombre. Cliquez ici pour un rappel de ce qu'est une factorielle.

Exemple :

print(factorielle(5))  # Affiche 120
print(factorielle(7))  # Affiche 5040

Ensuite, en-dessous de la fonction, écrire un programme qui demande à l'utilisateur de saisir un nombre entier, puis qui affiche la factorielle de ce nombre en appelant factorielle.

Exercice 4

Écrire une fonction trouver_le_nombre, qui prend un entier nombre entre 1 et 100 en entrée, et qui :

  • demande à l'utilisateur de saisir un nombre entre 1 et 100,
  • si le nombre saisi correspond au nombre généré :
    • on affiche "Gagné !" et on renvoie True (et donc la fonction s'arrête),
  • sinon :
    • si le nombre à trouver nombre est plus petit que le nombre saisi :
      • on affiche "Perdu, c'est moins..." et on renvoie False.
    • sinon :
      • on affiche "Perdu, c'est plus..." et on renvoie False.

On souhaite ensuite écrire un programme réutilisant trouver_le_nombre qui :

  • génère un nombre aléatoire à l'aide de randint,
  • initialise une variable trouve à False,
  • effectue une boucle de 5 itérations, dans laquelle :
    • si trouve est égal à False, on appelle trouver_le_nombre pour demander à l'utilisateur de saisir un nombre, et :
      • si la valeur renvoyée par trouver_le_nombre vaut True, on affecte True à trouve.
      • sinon, on ne fait rien.

Voici le squelette de ce programme, vous pouvez le copier/coller et remplacer les pointillés par le code approprié :

from random import randint
nombre_aleatoire = ...
trouve = ...
for ... in range(...):
    if ...:
        resultat = ...
        if resultat == ...:
            trouve = ...
        else:
            trouve = ...