.
Solución al Ejercicio: Convertir número a palabras
📋 Copiar código
def numero_a_palabras_es(numero):
"""
Convierte un número entero entre 0 y 100 a su representación en palabras en español.
Args:
numero: El número entero a convertir (entre 0 y 100).
Returns:
La representación en palabras del número (cadena).
Devuelve un mensaje de error si el número está fuera del rango.
"""
if not 0 <= numero <= 100:
return "Número fuera de rango (0-100)"
if numero == 0: return "cero"
elif numero == 100: return "cien"
elif 0 < numero < 10:
unidades = ["", "uno", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve"]
return unidades[numero]
elif 10 <= numero < 20:
decenas_especiales = ["diez", "once", "doce", "trece", "catorce", "quince", "dieciséis", "diecisiete", "dieciocho", "diecinueve"]
return decenas_especiales[numero - 10]
elif 20 <= numero < 30:
return "veinti" + numero_a_palabras_es(numero - 20) if numero != 20 else "veinte"
else:
decenas = ["", "", "veinte", "treinta", "cuarenta", "cincuenta", "sesenta", "setenta", "ochenta", "noventa"]
unidad = numero % 10
if unidad == 0:
return decenas[numero // 10]
else:
return decenas[numero // 10] + " y " + numero_a_palabras_es(unidad)
# Ejemplos de uso
numero1 = 25
resultado1 = numero_a_palabras_es(numero1)
print(f"{numero1} en palabras: {resultado1}")
numero2 = 7
resultado2 = numero_a_palabras_es(numero2)
print(f"{numero2} en palabras: {resultado2}")
numero3 = 16
resultado3 = numero_a_palabras_es(numero3)
print(f"{numero3} en palabras: {resultado3}")
numero4 = 40
resultado4 = numero_a_palabras_es(numero4)
print(f"{numero4} en palabras: {resultado4}")
numero5 = 93
resultado5 = numero_a_palabras_es(numero5)
print(f"{numero5} en palabras: {resultado5}")
numero6 = 0
resultado6 = numero_a_palabras_es(numero6)
print(f"{numero6} en palabras: {resultado6}")
numero7 = 100
resultado7 = numero_a_palabras_es(numero7)
print(f"{numero7} en palabras: {resultado7}")
numero8 = 105
resultado8 = numero_a_palabras_es(numero8)
print(f"{numero8} en palabras: {resultado8}")
Explicación del Código:
-
def numero_a_palabras_es(numero):
:
- Define una función llamada
numero_a_palabras_es
que toma un entero (numero
)
como entrada.
-
if not 0 <= numero <= 100:
:
- Verifica si el número está dentro del
rango permitido (0-100). Si no, devuelve un mensaje de error.
-
Casos base:
if numero == 0: return "cero"
elif numero == 100: return "cien"
-
Unidades (1-9):
- Se define una lista
unidades
con las palabras para los números del 0 al 9.
-
Decenas especiales (10-19):
- Se define una lista
decenas_especiales
con las palabras para los números del 10 al
19.
-
Veinte (20-29):
- Se maneja el "veinte" como caso especial
y luego se añade la unidad para los números del 21 al 29 (usando
recursión a la misma función para obtener la unidad).
-
Otras decenas (30-99):
- Se define una lista
decenas
con las palabras para las decenas (0, 10, 20, 30, ..., 90).
- Se obtiene la unidad (
numero %
10
).
- Si la unidad es 0, se devuelve la
decena completa.
- Si la unidad no es 0, se devuelve la
decena seguida de " y " y la palabra para la unidad (usando recursión).
Ejemplos de Uso:
Los ejemplos muestran cómo la función
convierte diferentes números dentro del rango de 0 a 100 a sus representaciones
en palabras en español. También se incluye un ejemplo fuera del rango para
mostrar el manejo de errores.