Código Python – Convierte Número a Letras

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

Deja un comentario