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.
.lower().strip()en cada frase — normalizamos para que “Sol” y “sol” se consideren la misma palabra y para quitar espacios de los extremos.palabras1 = set(frase1.split())— partimos cada frase en palabras consplit()y las metemos en unset. Esto tiene doble efecto: elimina repeticiones dentro de una frase y prepara la estructura para operar con conjuntos.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.if comunes:— un set vacío es “falso” en Python, así que esteifdistingue 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.