Ejercicio 2: Traductor Geringoso y Clases en Python

En este ejercicio, se busca que el estudiante practique la definición de clases, métodos y la manipulación de cadenas de caracteres en Python. Se requiere implementar un traductor que convierta palabras al lenguaje “geringoso”, utilizando clases para estructurar el código de manera modular y extensible.

Objetivos

  • Implementar una función que traduzca palabras al lenguaje “geringoso”.
  • Desarrollar una clase que encapsule la funcionalidad del traductor, permitiendo la adición de nuevas estrategias de traducción.

Entrada de Datos

  • Una lista de palabras que se desean traducir al lenguaje “geringoso”.

Instrucciones

  1. Implementar la función traductor_geringoso(lista):

    • Recibe una lista de palabras.
    • Devuelve un diccionario donde las claves son las palabras originales y los valores son sus traducciones al geringoso.
    • Ejemplo: ['banana', 'manzana'] debería retornar {'banana': 'bapanapanapa', 'manzana': 'mapanzapanapa'}.
  2. Crear la clase Traductor en un archivo utils.py:

    • Implementar un método traducir_geringoso() dentro de la clase.
    • Permitir agregar más estrategias de traducción como métodos adicionales.
    • Usar kwargs para personalizar el comportamiento del traductor.

Código Base

# utils.py

class Traductor:
    def __init__(self):
        pass
    
    def traducir_geringoso(self, lista_palabras, **kwargs):
        """
        Traduce una lista de palabras al lenguaje geringoso.
        
        :param lista_palabras: Lista de palabras a traducir.
        :param kwargs: Argumentos adicionales para personalizar la traducción.
        :return: Diccionario con palabras originales y sus traducciones.
        """
        # TODO: Implementar
        pass

Pruebas

# Prueba de la función traductor_geringoso
lista_palabras = ['banana', 'manzana']
resultado_esperado = {'banana': 'bapanapanapa', 'manzana': 'mapanzapanapa'}
resultado_obtenido = traductor_geringoso(lista_palabras)
assert resultado_obtenido == resultado_esperado, f"Error: {resultado_obtenido} != {resultado_esperado}"

# Prueba de la clase Traductor
traductor = Traductor()
resultado_obtenido_clase = traductor.traducir_geringoso(lista_palabras)
assert resultado_obtenido_clase == resultado_esperado, f"Error: {resultado_obtenido_clase} != {resultado_esperado}"

Preguntas de Reflexión

  • ¿Por qué usar una clase en lugar de solo una función?
  • ¿Cómo podríamos hacer el traductor más eficiente para procesar grandes volúmenes de texto?