Adloun

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

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 →