Adloun

Écrire depuis base souple(s, b) , qui accepte les minuscules et les…

Exercice d'entraînement · niveau 2 · NSI (première), chapitre 1 — Représenter les entiers · Conversions et vérifications

Énoncé

Écrire depuis_base_souple(s, b), qui accepte les minuscules et les espaces (par exemple "de ad" en base , ou "1101 0110" en base ) et qui déclenche une assertion explicite si un chiffre est invalide.

Corrigé

On sépare deux tâches : normaliser l'entrée, puis vérifier la précondition avant d'appeler la fonction du cours.


def depuis_base_souple(s, b):
    """Comme depuis_base, mais tolère minuscules et espaces.

    Précondition : après nettoyage, s est une écriture valide
    en base b — vérifiée ici par une assertion.
    """
    propre = s.upper().replace(" ", "")
    assert est_valide(propre, b), "chiffre invalide en base " + str(b)
    return depuis_base(propre, b)

Contrôle : depuis_base_souple("de ad", 16) rend et depuis_base_souple("1101 0110", 2) rend . Sur depuis_base_souple("102", 2), l'assertion se déclenche avec le message « chiffre invalide en base 2 ».

Pourquoi l'assertion plutôt qu'un simple return None. Sans elle, CHIFFRES.index("2") rendrait et le calcul continuerait avec une valeur fausse, sans rien signaler. Une précondition violée doit arrêter le programme, pas produire un résultat.

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.