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

Diagramas de flujo

Diagrama de flujo (actividad) del ejercicio 04

Diagrama de flujo (grafo) del ejercicio 04

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.")

Ejecútalo en el navegador

▶ Visualízalo paso a paso en Python Tutor — ve cómo cambian las variables línea a línea.

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