Convertir números enteros a números romanos en Python
- Convertir números enteros a números romanos en Python
- Use la división para 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.