Ejercicio 04 — Pide dos frases al usuario y muestra las palabras que aparecen en…

Dificultad: amarillo · Módulo 07 (Diccionarios y sets)

Enunciado

Pide dos frases al usuario y muestra las palabras que aparecen en AMBAS

Cómo se resuelve

Encontrar las palabras que aparecen en dos frases a la vez es justo lo que hace la intersección de conjuntos: la lección es que los set traen operaciones matemáticas de conjuntos incorporadas.

  1. .lower().strip() en cada frase — normalizamos para que “Sol” y “sol” se consideren la misma palabra y para quitar espacios de los extremos.
  2. palabras1 = set(frase1.split()) — partimos cada frase en palabras con split() y las metemos en un set. Esto tiene doble efecto: elimina repeticiones dentro de una frase y prepara la estructura para operar con conjuntos.
  3. comunes = palabras1 & palabras2 — el operador & calcula la intersección: las palabras que están en ambos sets a la vez. Python recorre el conjunto más pequeño y comprueba en cada elemento si está en el otro, comprobación O(1) gracias al hashing, así que la intersección es muy eficiente.
  4. if comunes: — un set vacío es “falso” en Python, así que este if distingue sin esfuerzo el caso de haber coincidencias del de no haberlas.

Trampa habitual: intentar buscar las palabras comunes con dos bucles anidados comparando cada palabra de una frase con cada palabra de la otra. Funciona pero es lento (O(n*m)) y verboso. Los sets resuelven exactamente este problema con un solo operador; además | da la unión y - la diferencia si algún día las necesitas.

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 04 — PRACTICA (rellena los TODO)
# Enunciado: Pide dos frases al usuario y muestra las palabras que aparecen en AMBAS
# Dificultad: amarillo
# Ejecutar: python3 ej04_practica.py
 
# TODO: pide la primera frase, conviertela a minusculas y elimina espacios extremos
frase1 = None
 
# TODO: pide la segunda frase igual
frase2 = None
 
# TODO: convierte frase1 a un set de palabras (split + set)
palabras1 = None
 
# TODO: convierte frase2 a un set de palabras
palabras2 = None
 
# TODO: calcula la interseccion usando el operador & y guardala en "comunes"
comunes = None
 
# TODO: si "comunes" no esta vacio, imprime "Palabras comunes: {comunes}"
#       si esta vacio, imprime "No hay palabras en comun."

Solución — cópiala y ejecútala

# Curso de Python — Modulo 07: Diccionarios y Sets
# Ejercicio 04 — MODELO (resuelto)
# Enunciado: Pide dos frases al usuario y muestra las palabras que aparecen en AMBAS
# Dificultad: amarillo
# Ejecutar: python3 ej04_modelo.py
 
frase1 = input("Primera frase:  ").lower().strip()
frase2 = input("Segunda frase:  ").lower().strip()
 
# Convertir cada frase en un set de palabras
palabras1 = set(frase1.split())
palabras2 = set(frase2.split())
 
# Interseccion: palabras que estan en ambos sets — operador &
comunes = palabras1 & palabras2
 
if comunes:
    print(f"Palabras comunes: {comunes}")
else:
    print("No hay palabras en comun.")

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