Adloun

sciences numériques et technologie (seconde) · Chapitre 5 · Exercice de TD

Une fonction, trois façons de la rater

Les fonctions · Définir et appeler une fonction · niveau 2

Énoncé

On veut une fonction aire_disque(r) renvoyant l'aire d'un disque de rayon r (on prendra ). Trois élèves proposent :

# A
def aire_disque(r):
    print(3.14159 * r * r)

# B
def aire_disque(r):
    aire = 3.14159 * r * r

# C
def aire_disque(r):
    return 3.14159 * r ** 2
  1. Tester 2 * aire_disque(3) avec chacune. Que se passe-t-il ?
  2. Expliquer précisément le défaut de A et celui de B.

Corrigé

1. Avec A, la valeur s'affiche, puis le programme échoue : TypeError, on ne peut multiplier None par . Avec B, rien ne s'affiche et l'on obtient la même TypeError. Avec C, on obtient , le double de l'aire.

2. Défaut de A : elle affiche le résultat mais ne le renvoie pas. À l'écran tout semble juste — c'est ce qui rend l'erreur trompeuse — mais la valeur n'est pas exploitable par le reste du programme.

Défaut de B : elle calcule l'aire et la range dans une variable locale aire… qui disparaît dès que la fonction se termine. Le calcul est fait puis jeté. Sans return, une fonction renvoie None.

La règle : une fonction qui calcule doit renvoyer. On réserve print aux fonctions dont le rôle est précisément d'afficher.

100 % gratuit

Essaie le suivant avec le tuteur

Faire l'exercice suivant avec le tuteur

Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →