Adloun

Vérifier sur machine que depuis base(vers base(n, b), b) == n pour…

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

Énoncé

Vérifier sur machine que depuis_base(vers_base(n, b), b) == n pour tous les de à et tous les de à . Combien de cas cela représente-t-il ?

Corrigé


compte = 0
for n in range(0, 2001):
    for b in range(2, 17):
        assert depuis_base(vers_base(n, b), b) == n
        compte = compte + 1
print(compte)   # 30015

Aucune assertion ne se déclenche.

Le décompte. valeurs de (de à inclus) et valeurs de (de à inclus) : cas.

Ce que cette vérification prouve, et ce qu'elle ne prouve pas. Elle teste une propriété d'inversion : les deux fonctions se défont l'une l'autre. C'est un test très efficace, car il ne demande aucune valeur attendue écrite à la main. Mais il ne prouverait rien si les deux fonctions étaient fausses de la même façon — deux erreurs inverses se compenseraient. On y reviendra au chapitre 3.

Erreur attendue : écrire range(2000) et range(16), ce qui teste cas dont ceux des bases et — qui n'ont pas de sens, et où vers_base boucle indéfiniment pour .

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.