Rutas
/
Python
Python
/
Ejercicios
/
All Your Base
All Your Base

All Your Base

Media

Introducción

Acabas de ser contratado como profesor de matemáticas. Tu primera semana fue bien, pero algo va mal en la segunda. El problema es que todas las respuestas que dan tus estudiantes son incorrectas. Por suerte, tus conocimientos de matemáticas te han permitido identificar el problema: las respuestas de tus estudiantes sí son correctas, ¡pero todas están en base 2 (binario)! Sorprendentemente, resulta que cada semana los estudiantes usan una base distinta. Para ayudarte a verificar rápidamente las respuestas de tus estudiantes, vas a crear una herramienta que traduzca entre bases.

Instrucciones

Convierte una secuencia de dígitos en una base, que representa un número, en una secuencia de dígitos en otra base, que representa el mismo número.

Note

Intenta implementar la conversión por tu cuenta. No uses otra cosa que haga la conversión por ti.

Acerca de la notación posicional

En la notación posicional, un número en base b puede entenderse como una combinación lineal de potencias de b.

El número 42, en base 10, significa:

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

El número 101010, en base 2, significa:

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

El número 1120, en base 3, significa:

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

Sí. Esos tres números de arriba son exactamente el mismo. ¡Enhorabuena!

Mensajes de excepción

A veces es necesario lanzar una excepción. Cuando lo hagas, debes incluir siempre un mensaje de error significativo que indique cuál es el origen del error. Así tu código será más legible y te resultará mucho más fácil hacer debug. Si sabes que el origen del error va a ser de un tipo concreto, puedes optar por lanzar uno de los tipos de error integrados, pero aun así debes incluir un mensaje significativo.

Este ejercicio en concreto requiere que uses la instrucción raise para «lanzar» un ValueError en los distintos casos de base de entrada y base de salida. Los tests solo pasarán si usas raise con la exception e incluyes con ella un mensaje significativo.

Para lanzar un ValueError con un mensaje, escribe el mensaje como argumento del tipo 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")
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Python Exercism

¿Listo para empezar All Your Base?

Regístrate en Exercism para aprender y dominar Python con 17 conceptos146 ejercicios y mentoría humana real, todo gratis.