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
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'}
.
Crear la clase
Traductor
en un archivoutils.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.
- Implementar un método
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?