Solución al Ejercicio: Contar ocurrencias de subcadena
📋 Copiar código
import re
def es_pangrama(texto):
"""
Verifica si una cadena de texto es un pangrama del alfabeto español
(contiene todas las letras al menos una vez, sin distinguir mayúsculas/minúsculas).
Args:
texto: La cadena de texto de entrada.
Returns:
True si la cadena es un pangrama, False en caso contrario.
"""
alfabeto_es = set('abcdefghijklmnñopqrstuvwxyz')
texto_limpio = re.sub(r'[^a-záéíóúüñ]', '', texto.lower())
letras_en_texto = set(texto_limpio)
return alfabeto_es.issubset(letras_en_texto)
# Ejemplos de uso
texto1 = "El veloz murciélago hindú comía feliz cardillo y kiwi. La cigüeña tocaba el saxofón en Zanzibar."
resultado1 = es_pangrama(texto1)
print(f"'{texto1}' es pangrama: {resultado1}")
texto2 = "Esta frase no contiene todas las letras."
resultado2 = es_pangrama(texto2)
print(f"'{texto2}' es pangrama: {resultado2}")
texto3 = "abcdefghijklmnñopqrstuvwxyz"
resultado3 = es_pangrama(texto3)
print(f"'{texto3}' es pangrama: {resultado3}")
texto4 = "AbCdEfGhIjKlMnÑoPqRsTuVwXyZ"
resultado4 = es_pangrama(texto4)
print(f"'{texto4}' es pangrama: {resultado4}")
texto5 = "El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y frío."
resultado5 = es_pangrama(texto5)
print(f"'{texto5}' es pangrama: {resultado5}")
Explicación del Código:
-
Importa el módulo re
:
Se utiliza para limpiar el texto.
-
Función es_pangrama(texto)
:
- Define un conjunto
alfabeto_es
que contiene todas las letras del alfabeto español en minúsculas.
- Limpia el
texto
de
entrada:
texto.lower()
:
Convierte todo el texto a minúsculas para una comparación insensible
a mayúsculas.
re.sub(r'[^a-záéíóúüñ]', '',
...)
: Utiliza una expresión regular para eliminar cualquier
carácter que no sea una letra del alfabeto español (incluyendo
vocales acentuadas y la 'ñ').
- Crea un conjunto
letras_en_texto
que contiene todas las letras presentes en el texto_limpio
.
Usar un conjunto es eficiente para verificar la presencia de elementos
únicos.
- Utiliza el método
issubset()
para verificar si el conjunto alfabeto_es
es un subconjunto
del conjunto letras_en_texto
. Si lo es, significa que todas
las letras del alfabeto español están presentes en el texto, y la
función devuelve True
. De lo contrario, devuelve
False
.
Ejemplos de Uso:
Los ejemplos muestran cómo la función verifica
si diferentes cadenas de texto son pangramas del alfabeto español. Se incluyen
casos que son pangramas, casos que no lo son y casos con mayúsculas y
minúsculas. También se incluye un ejemplo con una frase de pangrama común en
español.