sciences numériques et technologie (seconde) · Chapitre 3 · Exercice de TD
Résoudre ax + b = 0, tous les cas
Instructions conditionnelles · Indentation et conditions imbriquées · niveau 3 (difficile)
Énoncé
Écrire une fonction resoudre(a, b) qui traite complètement l'équation d'inconnue :
- si , elle renvoie l'unique solution ;
- si et , elle renvoie la chaîne
"aucune solution"; - si et , elle renvoie
"tout nombre est solution".
La tester sur , et .
Corrigé
def resoudre(a, b):
if a != 0:
return -b / a
else:
if b != 0:
return "aucune solution"
else:
return "tout nombre est solution"
print(resoudre(2, -6)) # 3.0
print(resoudre(0, 3)) # aucune solution
print(resoudre(0, 0)) # tout nombre est solution
Pourquoi l'imbrication est ici la bonne structure : la question « est-il nul ? » n'a d'intérêt que dans le cas où l'est. Tant que , la valeur de ne change pas la nature de la réponse, seulement le résultat du calcul.
Le point à ne pas manquer est que le cas n'est pas une exception à écarter : c'est là que se trouvent les deux situations mathématiquement intéressantes. Écrire directement return -b / a provoquerait une ZeroDivisionError, ce qui au moins se voit — mais ne répond pas à la question posée.
Remarque. La fonction renvoie tantôt un nombre, tantôt une chaîne. C'est acceptable ici pour l'affichage, mais on préfère en général qu'une fonction renvoie toujours le même type.
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.