Este código tomará un número entre 1 y 999 y lo convertirá a letras en español. Esta implementación es básica y puede ser mejorada.
unidades = ["", "Uno", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho", "Nueve"]
decenas = ["", "Diez", "Veinte", "Treinta", "Cuarenta", "Cincuenta", "Sesenta", "Setenta", "Ochenta", "Noventa"]
centenas = ["", "Cien", "Doscientos", "Trescientos", "Cuatrocientos", "Quinientos", "Seiscientos", "Setecientos", "Ochocientos", "Novecientos"]
def convertir_numero_a_letras(numero):
if numero < 1 or numero > 999:
return "Número fuera de rango"
if numero == 100:
return "Cien"
letra = ""
c = numero // 100
d = (numero % 100) // 10
u = numero % 10
if c > 0:
letra += centenas[c] + " "
if d == 0:
if u > 0:
letra += unidades[u]
elif d == 1:
if u == 0:
letra += "Diez"
elif u == 1:
letra += "Once"
elif u == 2:
letra += "Doce"
elif u == 3:
letra += "Trece"
elif u == 4:
letra += "Catorce"
elif u == 5:
letra += "Quince"
else:
letra += decenas[d] + " y " + unidades[u]
else:
if u == 0:
letra += decenas[d]
else:
letra += decenas[d] + " y " + unidades[u]
return letra
numero = int(input("Ingrese un número entre 1 y 999: "))
print("Número en letras:", convertir_numero_a_letras(numero))
Versión simplificada:
u = ["", "Uno", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho", "Nueve"]
d = ["", "Diez", "Veinte", "Treinta", "Cuarenta", "Cincuenta", "Sesenta", "Setenta", "Ochenta", "Noventa"]
c = ["", "Cien", "Doscientos", "Trescientos", "Cuatrocientos", "Quinientos", "Seiscientos", "Setecientos", "Ochocientos", "Novecientos"]
def convertir(numero):
if numero == 100: return "Cien"
letra = c[numero // 100] + (d[(numero % 100) // 10] + " y ") * (numero % 100 > 20) + u[numero % 10]
return letra.replace("Diez y", "Dieci").replace("Quince y", "Quince").replace("Veinte y", "Veinti")
numero = int(input("Ingrese un número entre 1 y 999: "))
print("Número en letras:", convertir(numero))
Pueder ir al artículo principal:
Códigos Sencillos hechos en Python