Ejercicio 01 — Cuenta la frecuencia de cada palabra en una frase introducida por el…
Dificultad: verde · Módulo 07 (Diccionarios y sets)
Enunciado
Cuenta la frecuencia de cada palabra en una frase introducida por el usuario
Cómo se resuelve
Contar cuántas veces aparece cada palabra es el ejemplo clásico del diccionario como contador: la palabra es la clave y su frecuencia el valor.
frase.lower().split()— pasamos todo a minúsculas para que “El” y “el” cuenten como la misma palabra, ysplit()parte la frase por espacios en una lista de palabras.frecuencia = {}— arrancamos con un diccionario vacío. La idea es que cada palabra distinta sea una clave y su cuenta el valor asociado.frecuencia[palabra] = frecuencia.get(palabra, 0) + 1— este es el corazón..get(palabra, 0)pide la cuenta actual de esa palabra, pero si aún no existe como clave devuelve0en vez de reventar. Le sumamos 1 y guardamos: la primera vez pasa de 0 a 1, las siguientes va creciendo.- El acceso
frecuencia[palabra]es rápido (tiempo constante en promedio) porque el diccionario usa hashing: convierte la clave en un número que apunta directo a su hueco, sin recorrer todo el diccionario buscándola. for palabra, cuenta in sorted(frecuencia.items())—.items()da los pares (clave, valor) ysortedlos ordena alfabéticamente para una salida estable.
Trampa habitual: escribir frecuencia[palabra] = frecuencia[palabra] + 1 sin el .get(). La primera vez que aparece una palabra esa clave todavía no existe, y acceder a una clave inexistente con [] lanza KeyError. Por eso .get(palabra, 0) es la forma segura: da un valor por defecto cuando la clave aún no está.
Para practicar — cópialo y complétalo
Pega este esqueleto y completa los TODO. Es la mejor forma de aprender: inténtalo antes de mirar la solución.
# Curso de Python — Modulo 07: Diccionarios y Sets
# Ejercicio 01 — PRACTICA (rellena los TODO)
# Enunciado: Cuenta la frecuencia de cada palabra en una frase introducida por el usuario
# Dificultad: verde
# Ejecutar: python3 ej01_practica.py
# TODO: pide una frase al usuario con input()
frase = None
# TODO: convierte la frase a minusculas y dividela en palabras con .split()
# guarda el resultado en la variable "palabras"
palabras = None
# TODO: crea un dict vacio llamado "frecuencia"
frecuencia = None
# TODO: recorre cada palabra en "palabras" con un bucle for
# para cada palabra, actualiza su cuenta en "frecuencia"
# pista: usa .get(palabra, 0) + 1 para no lanzar KeyError
for palabra in (palabras or []):
pass # TODO: reemplaza este pass con la logica de conteo
# TODO: imprime el titulo "Frecuencia de palabras:"
# TODO: recorre los pares (palabra, cuenta) de frecuencia.items() ordenados
# e imprime cada uno con f-string: " {palabra}: {cuenta}"Solución — cópiala y ejecútala
# Curso de Python — Modulo 07: Diccionarios y Sets
# Ejercicio 01 — MODELO (resuelto)
# Enunciado: Cuenta la frecuencia de cada palabra en una frase introducida por el usuario
# Dificultad: verde
# Ejecutar: python3 ej01_modelo.py
frase = input("Introduce una frase: ")
palabras = frase.lower().split()
frecuencia = {}
for palabra in palabras:
frecuencia[palabra] = frecuencia.get(palabra, 0) + 1
print("\nFrecuencia de palabras:")
for palabra, cuenta in sorted(frecuencia.items()):
print(f" {palabra}: {cuenta}")Cómo usarlo
Pega el código en un fichero y ejecútalo con tu toolchain habitual (o el botón de Ejecutar de tu editor). Antes de mirar la solución, intenta completar tú el esqueleto: es la mejor forma de aprender.