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
- Tester
2 * aire_disque(3)avec chacune. Que se passe-t-il ? - 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
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 14 autres exercices corrigés dans ce chapitre, et 23 à chercher avec le tuteur
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre et la correction filmée du TD : 2 minutes sans compte
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.