Convertir números enteros a números romanos en Python

Rohan Timalsina 21 junio 2023
  1. Convertir números enteros a números romanos en Python
  2. Use la división para convertir números enteros a números romanos en Python
Convertir números enteros a números romanos en Python

Los números romanos se escriben usando los siguientes siete símbolos.

Symbol       Value
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

Estos símbolos se utilizan para representar miles de números.

Para escribir 20 en romano, puedes usar dos X para formar XX. Pero XXXX no es igual a 40.

El número romano para 40 es XL.

Similarmente:

Symbol       Value
IV             4
IX             9
XL             40
XC             90
CD             400
CM             900

Este tutorial le enseñará a convertir un número entero a un número romano en Python.

Convertir números enteros a números romanos en Python

La siguiente es una implementación de un programa de Python que convierte un número entero dado en su equivalente en números romanos.

roman_map = [
    (1000, "M"),
    (900, "CM"),
    (500, "D"),
    (400, "CD"),
    (100, "C"),
    (90, "XC"),
    (50, "L"),
    (40, "XL"),
    (10, "X"),
    (9, "IX"),
    (5, "V"),
    (4, "IV"),
    (1, "I"),
]


def into_roman(num):
    res = ""
    while num > 0:
        for i, r in roman_map:
            while num >= i:
                res += r
                num -= i
    return res


num = int(input("Enter a number: "))
print(into_roman(num))

Producción :

Enter a number: 42
XLII

En el ejemplo anterior, roman_map contiene una lista con los valores y símbolos correspondientes. res es una cadena en blanco.

El while num > 0 ejecuta el bucle si el valor de num es mayor que cero. No hay ningún símbolo para el cero en los números romanos.

El for i, r in roman_map recorre cada par (entero, romano) hasta que encuentra el primer número.

Para una visualización detallada del código, ejecute el código aquí.

Use la división para convertir números enteros a números romanos en Python

El siguiente ejemplo utiliza el método de división para convertir un número entero ingresado por el usuario en un número romano.

roman_map = {
    1: "I",
    4: "IV",
    5: "V",
    9: "IX",
    10: "X",
    40: "XL",
    50: "L",
    90: "XC",
    100: "C",
    400: "CD",
    500: "D",
    900: "CM",
    1000: "M",
}
num = int(input("Enter a number: "))

# 13 integers in descending order
order = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]

for i in order:
    if num != 0:
        quotient = num // i

        # prints the roman numeral if the quotient is not zero
        if quotient != 0:
            for j in range(quotient):
                print(roman_map[i], end="")

        # update input number with a remainder
        num = num % i

Producción :

Enter a number: 42
XLII

En este enfoque, dividimos el entero de entrada con 13 enteros primarios en orden descendente. El mapa_romano es un diccionario que contiene 13 números enteros con su equivalente en números romanos en pares clave:valor.

El num almacena el número entero ingresado por el usuario. La lista de orden almacena 13 enteros en orden descendente.

El número de entrada se divide por todos los números en la lista de orden hasta que el cociente no sea cero.

Si el cociente no es cero y queda resto, se actualiza en un num. El ciclo continúa ejecutándose y obtenemos el equivalente en números romanos.

Visualice el código anterior en este enlace.

Ahora debería saber cómo convertir un número entero a su equivalente en números romanos en Python. Esperamos que este tutorial le resulte útil.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Artículo relacionado - Python Integer