Adloun

Résoudre ax + b = 0, tous les cas

Exercice de TD · niveau 3 (difficile) · sciences numériques et technologie (seconde), chapitre 3 — Instructions conditionnelles · Indentation et conditions imbriquées

Énoncé

Écrire une fonction resoudre(a, b) qui traite complètement l'équation d'inconnue :

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.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.