Parcours
/
Python
Python
/
Exercices
/
All Your Base
All Your Base

All Your Base

Moyen

Introduction

Tu viens d'être embauché comme professeur de mathématiques. La première semaine s'est bien passée, mais quelque chose ne tourne pas rond la deuxième. Le problème, c'est que toutes les réponses données par tes étudiants sont fausses ! Heureusement, tes compétences en mathématiques t'ont permis d'identifier le problème : les réponses des étudiants sont correctes, mais elles sont toutes en base 2 (binaire) ! Étonnamment, il s'avère que chaque semaine, les étudiants utilisent une base différente. Pour t'aider à vérifier rapidement les réponses des étudiants, tu vas construire un outil pour convertir d'une base à une autre.

Instructions

Convertis une séquence de chiffres dans une base, représentant un nombre, en une séquence de chiffres dans une autre base, représentant ce même nombre.

Note

Essaie d'implémenter la conversion toi-même. N'utilise pas autre chose pour faire la conversion à ta place.

À propos de la notation positionnelle

Dans la notation positionnelle, un nombre en base b peut se comprendre comme une combinaison linéaire des puissances de b.

Le nombre 42, en base 10, signifie :

(4 × 10¹) + (2 × 10⁰)

Le nombre 101010, en base 2, signifie :

(1 × 2⁵) + (0 × 2⁴) + (1 × 2³) + (0 × 2²) + (1 × 2¹) + (0 × 2⁰)

Le nombre 1120, en base 3, signifie :

(1 × 3³) + (1 × 3²) + (2 × 3¹) + (0 × 3⁰)

Oui. Ces trois nombres ci-dessus sont exactement les mêmes. Félicitations !

Messages d'exception

Il est parfois nécessaire de lever une exception. Dans ce cas, tu dois toujours inclure un message d'erreur explicite pour indiquer l'origine de l'erreur. Cela rend le code plus lisible et facilite grandement le débogage. Lorsque tu sais que la source de l'erreur sera d'un type donné, tu peux choisir de lever l'un des types d'erreur intégrés, mais tu dois tout de même inclure un message explicite.

Cet exercice en particulier exige que tu utilises l'instruction raise pour « lever » une ValueError lorsque des bases d'entrée ou de sortie ne sont pas valides. Les tests ne seront réussis que si tu utilises raise sur l'exception en y joignant un message explicite.

Pour lever une ValueError avec un message, écris ce message comme argument du type exception :

# for input.
raise ValueError("input base must be >= 2")

# another example for input.
raise ValueError("all digits must satisfy 0 <= d < input base")

# or, for output.
raise ValueError("output base must be >= 2")
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Python Exercism

Prêt à commencer All Your Base ?

Inscris-toi sur Exercism pour apprendre et maîtriser Python avec 17 concepts146 exercices, et un vrai mentorat humain, le tout gratuitement.