Definir una función que reciba un número entero entre 0 y 999, y devuelva una cadena con la cantidad introducida en palabras. Por ejemplo, si se introduce 647 debe devolver la cadena "seiscientos cuarenta y siete".
La función debe cumplir los siguientes requisitos:
In [1]:
def enuncia_cantidad(n):
"""
Función que recibe una cantidad n y devuelve una cadena con la misma cantidad expresada en palabras.
Parámetros:
- n es un número entero entre 1 y 999.
Devuelve:
Una cadena con la cantidad n expresada en palabras.
"""
# Diccionarios con las traducciones de número a palabra para las unidades, decenas y centenas.
unidades = {0:'', 1:'uno', 2:'dos', 3:'tres', 4:'cuatro', 5:'cinco', 6:'seis', 7:'siete', 8:'ocho', 9:'nueve'}
decenas = {0:'', 1:'diez', 2:'veinte', 3:'treinta', 4:'cuarenta', 5:'cincuenta', 6:'sesenta', 7:'setenta', 8:'ochenta', 9:'noventa'}
centenas = {0:'', 1:'ciento', 2:'doscientos', 3:'trescientos', 4:'cuatrocientos', 5:'quinientos', 6:'seiscientos', 7:'setecientos', 8:'ochocientos', 9:'novencientos'}
# Obtenemos las centenas mediante división entera por 100
cen = n // 100 # Otra alternativa es cen = int(str(n)[0])
# Obtenemos las decenas mediante división entera por 10 y luego tomando el resto de la división entera por 10
dec = (n // 10) % 10 # Otra alternativa es dec = int(str(n)[1])
# Obtenemos las unidades mediante el resto de la visión entera por 10.
uni = n % 10 # Otra alternativa es cen = int(str(n)[2])
# Definimos el nexo entre las decenas y las unidades
if not uni:
# Si no hay unidades no hay nexo.
nexo = ''
elif not dec:
# Si hay unidades pero no decenas no hay nexo.
nexo = ''
else:
# Si hay unidades y decenas el nexo es 'y'
nexo = ' y '
return centenas[cen] + decenas[dec] + nexo + unidades[uni]
# Varias llamadas a la función de prueba
print(647, ':', enuncia_cantidad(647))
print(30, ':', enuncia_cantidad(30))
print(6, ':', enuncia_cantidad(6))
print(100, ':', enuncia_cantidad(100))
In [2]:
def enuncia_cantidad(n):
"""
Función que recibe una cantidad n y devuelve una cadena con la misma cantidad expresada en palabras.
Parámetros:
- n es un número entero entre 1 y 999.
Devuelve:
Una cadena con la cantidad n expresada en palabras.
"""
# Diccionarios con las traducciones de número a palabra para las unidades, decenas y centenas.
unidades = {0:'', 1:'uno', 2:'dos', 3:'tres', 4:'cuatro', 5:'cinco', 6:'seis', 7:'siete', 8:'ocho', 9:'nueve'}
decenas = {0:'', 1:'diez', 2:'veinte', 3:'treinta', 4:'cuarenta', 5:'cincuenta', 6:'sesenta', 7:'setenta', 8:'ochenta', 9:'noventa'}
centenas = {0:'', 1:'ciento', 2:'doscientos', 3:'trescientos', 4:'cuatrocientos', 5:'quinientos', 6:'seiscientos', 7:'setecientos', 8:'ochocientos', 9:'novencientos'}
# Obtenemos las centenas mediante división entera por 100
cen = n // 100 # Otra alternativa es cen = int(str(n)[0])
# Obtenemos las decenas mediante división entera por 10 y luego tomando el resto de la división entera por 10
dec = (n // 10) % 10 # Otra alternativa es dec = int(str(n)[1])
# Obtenemos las unidades mediante el resto de la visión entera por 10.
uni = n % 10 # Otra alternativa es cen = int(str(n)[2])
# Definimos el nexo entre las decenas y las unidades
if not uni:
# Si no hay unidades no hay nexo.
nexo = ''
elif not dec:
# Si hay unidades pero no decenas no hay nexo.
nexo = ''
else:
# Si hay unidades y decenas el nexo es 'y'
nexo = ' y '
return centenas[cen] + decenas[dec] + nexo + unidades[uni]
# Varias llamadas a la función de prueba
print(647, ':', enuncia_cantidad(647))
print(30, ':', enuncia_cantidad(30))
print(6, ':', enuncia_cantidad(6))
print(100, ':', enuncia_cantidad(100))
In [ ]: