Solución al Ejercicio: Analizar frecuencia de letras
📋 Copiar código
import re
from collections import Counter
def analizar_frecuencia_letras(texto):
"""
Analiza la frecuencia relativa de las letras del alfabeto español
en una cadena de texto.
Args:
texto: La cadena de texto en español a analizar.
Returns:
Un diccionario con la frecuencia relativa de cada letra.
"""
texto_limpio = re.sub(r'[^a-záéíóúüñ]', '', texto.lower())
total_letras = len(texto_limpio)
if total_letras == 0:
return {}
frecuencia = Counter(texto_limpio)
frecuencia_relativa = {letra: count / total_letras for letra, count in frecuencia.items()}
alfabeto_es = "abcdefghijklmnñopqrstuvwxyz"
for letra in alfabeto_es:
if letra not in frecuencia_relativa:
frecuencia_relativa[letra] = 0
return dict(sorted(frecuencia_relativa.items()))
# Ejemplos de uso
texto1 = "Hola mundo"
frecuencia1 = analizar_frecuencia_letras(texto1)
print(f"Frecuencia de letras en '{texto1}': {frecuencia1}")
texto2 = "El veloz murciélago hindú comía feliz cardillo y kiwi."
frecuencia2 = analizar_frecuencia_letras(texto2)
print(f"Frecuencia de letras en '{texto2}': {frecuencia2}")
texto3 = "A a B b C c"
frecuencia3 = analizar_frecuencia_letras(texto3)
print(f"Frecuencia de letras en '{texto3}': {frecuencia3}")
texto4 = "Texto sin letras."
frecuencia4 = analizar_frecuencia_letras(texto4)
print(f"Frecuencia de letras en '{texto4}': {frecuencia4}")
texto5 = ""
frecuencia5 = analizar_frecuencia_letras(texto5)
print(f"Frecuencia de letras en '': {frecuencia5}")
texto6 = "Ñoño come ñoquis."
frecuencia6 = analizar_frecuencia_letras(texto6)
print(f"Frecuencia de letras en '{texto6}': {frecuencia6}")
Explicación del Código:
-
Importa los módulos re
y
Counter
:
re
: Se utiliza para limpiar
el texto de caracteres no alfabéticos.
Counter
: De la biblioteca
collections
, es útil para contar la frecuencia de los
elementos.
-
Función
analizar_frecuencia_letras(texto)
:
texto_limpio = re.sub(r'[^a-záéíóúüñ]',
'', texto.lower())
: Limpia el texto, eliminando cualquier
carácter que no sea una letra del alfabeto español (incluyendo acentos y
la 'ñ'), y convierte todo a minúsculas.
total_letras = len(texto_limpio)
:
Obtiene el número total de letras en el texto limpio.
if total_letras == 0:
: Si
no hay letras, devuelve un diccionario vacío.
frecuencia = Counter(texto_limpio)
:
Cuenta la frecuencia de cada letra en el texto limpio.
frecuencia_relativa = {letra:
count / total_letras for letra, count in frecuencia.items()}
:
Calcula la frecuencia relativa de cada letra dividiendo su conteo por el
número total de letras.
alfabeto_es = "abcdefghijklmnñopqrstuvwxyz"
:
Define el alfabeto español completo.
- Itera a través de cada letra del
alfabeto español y se asegura de que esté presente en el diccionario de
frecuencia_relativa
(con una frecuencia de 0 si no aparece
en el texto).
return
dict(sorted(frecuencia_relativa.items()))
: Devuelve el
diccionario de frecuencias relativas, ordenado alfabéticamente por
letra.
Ejemplos de Uso:
Los ejemplos muestran cómo la función analiza la
frecuencia de las letras en diferentes textos en español. El diccionario
resultante muestra la proporción de cada letra en el texto.