1 usuario conectado

Convertir número a palabras. Ejercicio en Python

Comparte esto

 
Escribe una función en Python llamada numero_a_palabras_es que tome un entero entre 0 y 100 como entrada y devuelva su representación en palabras en español.

.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  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:

  1. def numero_a_palabras_es(numero)::

    • Define una función llamada numero_a_palabras_es que toma un entero (numero) como entrada.
  2. if not 0 <= numero <= 100::

    • Verifica si el número está dentro del rango permitido (0-100). Si no, devuelve un mensaje de error.
  3. Casos base:

    • if numero == 0: return "cero"
    • elif numero == 100: return "cien"
  4. Unidades (1-9):

    • Se define una lista unidades con las palabras para los números del 0 al 9.
  5. Decenas especiales (10-19):

    • Se define una lista decenas_especiales con las palabras para los números del 10 al 19.
  6. 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).
  7. 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.