Cómo solucionar las restricciones de romano a entero en Python

| Última modificación: 23 de julio de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En un otro post de KeepCoding, te comentamos acerca de algunas restricciones para crear una función de romano a entero en Python. Hoy te traemos la solución: cómo solucionar las restricciones de romano a entero en Python.

Creemos que este tipo de ejercicios son importantes en tu camino de aprendizaje en Python, pues la única forma de entender completamente cómo programar es desde la prueba y error y a eso llegas desde la práctica. Por eso, te contaremos cómo solucionar las restricciones de romano a entero en Python.

Pasos para solucionar las restricciones de romano a entero

En primer lugar, para solucionar las restricciones de romano a entero en Python, es válido aclarar que estos son una parte de todos los pasos que se necesitan en un programa de código para pasar un número romano a entero.

Estos pasos responden como soluciones a las restricciones que tiene pasar de un número romano a un número entero cuando tenemos el caso de que un símbolo de los números romanos resta si se pone a la izquierda de otro mayor.

Ya teniendo claro a qué responderás con estos pasos, empezaremos a definir las variables que necesitaremos para solucionar las restricciones.

Aunque, primero, hay que definir la función. Las variables que encuentras en este paso son el acumulador, que corresponde a la suma que se hace para llegar a un número romano; el anterior, que corresponde a un símbolo romano anterior al que nos encontramos; las cuentas repetidas y el restado.

#definir la función

def convertir_a_numero

#definir las variables

acumulador = 0

anterior = 0

cuentas_repes = 0

restado = False

for i in romano

      actual  = digitos romanos [i]

      if anterior >= actual:

             acumulador += actual

restas_consecutivas = 0
  • Para trabajar sobre la restricción de que no se puede restar ni V ni D ni L; es decir, no pueden ir a la izquierda de un valor mayor, deberás cumplir con estas instrucciones:
else:
# if anterior == 5 or anterior == 50 or anterior == 500:

         if anterior in (5, 50, 500)

raise ValueError ("No se puede restar un símbolo múltiplo de 5")
  • Si bien es posible poner un símbolo de menor valor en la parte izquierda de otro, siempre debe ser cuando no les separe más de un orden de magnitud. Por tanto, para esta restricción, debemos pensar en una regla general que involucre a los siguientes números en romano: IX, IC, IM, XC, XM, IV, IL. En este caso hay dos: la primera se ejecuta sobre IX, XC y IV, donde el múltiplo entre el anterior por 10 es igual o mayor al actual; para el resto de números, el anterior por 10 es menor al actual.
if 0 < anterior * 10 < actual:

raise ValueError ("No se puede restar más de un orden de magnitud")
  • Para una restricción adicional, es decir, que no se pueden acumular restas, utilizaríamos nuestra variable de restado, que equivale a falsa, de la siguiente manera:
if restado:

raise ValueError ("No se pueden acumular restas") 
  • Para solucionar la restricción de restas consecutivas se realizan las siguientes instrucciones. Esta restricción se genera cuando estamos intentando ingresar números romanos como MIXC a nuestro programa de código.
    #entramos a la suma
if anterior >= actual or anterior == 0 

acumulador += actual

           restado = False

#entramos a la resta

        else:

          if cuenta_repes > 1:            #repes corresponde a los números romanos que se repiten   

             raise ValueError ("No se puede restar números varias veces")

#condiciones de la cuenta de repes

if anterior == actual:

    cuenta_repes += 1

else:

    cuenta_repes = 1

anterior = actual 

return = acumulador

De esta manera, ya estás listo para ingresar los números romanos, testarlos y ejecutar el programa de código para solucionar las restricciones de romano a entero en Python.

El dicho de que la práctica hace al maestro también vale para el mundo de la programación. Es desde el método de prueba y error como perfeccionarás tus habilidades y profundizarás en tus conocimientos. Ahora que sabes los pasos para solucionar las restricciones de romano a entero, estás más cerca de esta meta.

Si quieres hacer más ejercicios prácticos, acompañados por profesores de calidad, fichas técnicas y demás herramientas educativas, te recomendamos revisar el programa del Bootcamp Programación. ¡Apúntate y sigue formándote!

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a Programar desde Cero

Full Stack Jr. Bootcamp

Apúntate y consigue uno de los perfiles más demandados con Python en solo 4 meses.