Solución al Ejercicio: Sugerir corrección
📋 Copiar código
def sugerir_correccion(palabra, palabras_validas):
"""
Sugiere una corrección ortográfica básica para una palabra.
Args:
palabra: La palabra a verificar.
palabras_validas: Una lista de palabras válidas en español.
Returns:
La palabra original si es válida, o la primera palabra válida como sugerencia.
"""
palabra_lower = palabra.lower()
palabras_validas_lower = [p.lower() for p in palabras_validas]
if palabra_lower in palabras_validas_lower:
return palabra
elif palabras_validas_lower:
return palabras_validas[0]
else:
return palabra # Si no hay palabras válidas, devuelve la original
# Ejemplos de uso
diccionario = ["hola", "mundo", "cruel", "ejemplo", "python"]
palabra1 = "hola"
sugerencia1 = sugerir_correccion(palabra1, diccionario)
print(f"'{palabra1}' -> sugerencia: '{sugerencia1}'")
palabra2 = "holla"
sugerencia2 = sugerir_correccion(palabra2, diccionario)
print(f"'{palabra2}' -> sugerencia: '{sugerencia2}'")
palabra3 = "Mundo"
sugerencia3 = sugerir_correccion(palabra3, diccionario)
print(f"'{palabra3}' -> sugerencia: '{sugerencia3}'")
palabra4 = "inexistente"
sugerencia4 = sugerir_correccion(palabra4, diccionario)
print(f"'{palabra4}' -> sugerencia: '{sugerencia4}'")
palabra5 = ""
sugerencia5 = sugerir_correccion(palabra5, diccionario)
print(f"'{palabra5}' -> sugerencia: '{sugerencia5}'")
diccionario_vacio = []
palabra6 = "prueba"
sugerencia6 = sugerir_correccion(palabra6, diccionario_vacio)
print(f"'{palabra6}' -> sugerencia (diccionario vacío): '{sugerencia6}'")
Explicación del Código:
-
def sugerir_correccion(palabra,
palabras_validas):
:
- Define una función llamada
sugerir_correccion
que toma una palabra
a verificar
y una lista de palabras_validas
como entrada.
-
palabra_lower = palabra.lower()
:
- Convierte la
palabra
de
entrada a minúsculas para realizar una comparación sin distinción de
mayúsculas y minúsculas.
-
palabras_validas_lower =
[p.lower() for p in palabras_validas]
:
- Crea una nueva lista
palabras_validas_lower
que contiene todas las palabras de la
lista palabras_validas
convertidas a minúsculas. Esto
permite la comparación sin importar la capitalización.
-
if palabra_lower in
palabras_validas_lower:
:
- Verifica si la versión en minúsculas de
la
palabra
de entrada se encuentra en la lista de palabras
válidas en minúsculas.
-
return palabra
:
- Si la palabra es válida (se encuentra en
la lista), la función devuelve la
palabra
original
(manteniendo su capitalización original).
-
elif palabras_validas_lower:
:
- Si la palabra no es válida, este
elif
verifica si la lista palabras_validas_lower
no
está vacía (es decir, si hay al menos una palabra válida en el
diccionario).
-
return palabras_validas[0]
:
- Si la palabra no es válida y hay palabras
válidas en el diccionario, la función devuelve la primera palabra de la
lista original
palabras_validas
como una sugerencia de
corrección.
-
else:
:
- Si la palabra no es válida y la lista de
palabras_validas_lower
está vacía.
-
return palabra
:
- Devuelve la
palabra
original, ya que no hay palabras válidas para sugerir.
Ejemplos de Uso:
Los ejemplos muestran cómo la función verifica
si una palabra está en el diccionario y, si no lo está, sugiere la primera
palabra del diccionario como corrección. Si la palabra es válida, se devuelve la
palabra original. También se incluye un caso con un diccionario vacío.