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.