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.

  1. frase.lower().split() — pasamos todo a minúsculas para que “El” y “el” cuenten como la misma palabra, y split() parte la frase por espacios en una lista de palabras.
  2. frecuencia = {} — arrancamos con un diccionario vacío. La idea es que cada palabra distinta sea una clave y su cuenta el valor asociado.
  3. 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 devuelve 0 en vez de reventar. Le sumamos 1 y guardamos: la primera vez pasa de 0 a 1, las siguientes va creciendo.
  4. 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.
  5. for palabra, cuenta in sorted(frecuencia.items()).items() da los pares (clave, valor) y sorted los 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.

Conexiones