Pangrama#
Un pangrama es una frase que contiene todas las letras del abecedario. Vamos a usar el inglés, así nos evitamos los acentos y otras cuestiones del castellano. Por ejemplo
the quick brown fox jumps over the lazy dog
es un pangrama muy usado en la creación de fonts, es decir, fuentes o tipos de letra, justamente porque contiene todas las letras del abecedario.
El problema es escribir una función que determine si una frase es un pangrama o no.
s = "the quick brown fox jumps over the lazy dog"
abcd = 'abcdefghijklmnopqrstuvwxyz'
def is_pangram(frase):
for x in abcd:
letra = x
letra = 'a'
for c in frase:
if letra == c:
print('letra ', letra,' está en ',frase)
# else:
# print('letra ', letra,' no está.')
# print(c)
is_pangram(s)
letra a está en the quick brown fox jumps over the lazy dog
Versión 1 con contador#
s = "the quick brown fox jumps over the lazy dog"
hola = "hola mundo"
abcd = 'abcdefghijklmnopqrstuvwxyz'
def is_pangram(frase):
cuenta_letras = 0
# Loop en las letras del abecedario
for x in abcd:
letra = x
# Loop en las letras de la frase
for c in frase:
if letra == c:
# print('letra ', letra,' está en ',frase)
cuenta_letras = cuenta_letras + 1
# print(letra)
break
print("cuenta_letras: ",cuenta_letras)
if(cuenta_letras == 26):
return True
else:
return False
print(is_pangram(s))
print(is_pangram(hola))
print(is_pangram("la bella y graciosa moza"))
cuenta_letras: 26
True
cuenta_letras: 8
False
cuenta_letras: 13
False
Versión 2 con .append
#
s = "the quick brown fox jumps over the lazy dog"
hola = "hola mundo"
abcd = 'abcdefghijklmnopqrstuvwxyz'
def is_pangram(frase):
resultado = []
# Loop en las letras del abecedario
for x in abcd:
letra = x
# Loop en las letras de la frase
for c in frase:
if letra == c:
# print('letra ', letra,' está en ',frase)
resultado.append(letra)
# print(letra)
break
if(len(resultado) == 26):
return True
else:
return False
print(is_pangram(s))
print(is_pangram(hola))
print(is_pangram("la bella y graciosa moza"))
True
False
False
Versión 3 con string.join
#
s = "the quick brown fox jumps over the lazy dog"
hola = "hola mundo"
abcd = 'abcdefghijklmnopqrstuvwxyz'
def is_pangram(frase):
resultado = []
# Loop en las letras del abecedario
for x in abcd:
letra = x
# Loop en las letras de la frase
for c in frase:
if letra == c:
# print('letra ', letra,' está en ',frase)
resultado.append(letra)
# print(letra)
break
nuevo_abcd = ""
nuevo_abcd = nuevo_abcd.join(resultado)
print("nuevo_abcd: ",nuevo_abcd)
if(nuevo_abcd == abcd):
return True
else:
return False
print(is_pangram(s))
print(is_pangram(hola))
print(is_pangram("la bella y graciosa moza"))
nuevo_abcd: abcdefghijklmnopqrstuvwxyz
True
nuevo_abcd: adhlmnou
False
nuevo_abcd: abcegilmorsyz
False
Versión 4 con sets
#
Esta versión usa sets
, que son conjuntos de elementos todos distintos entre sí, sin orden particular.
Para observar: la función len
aplicada a un set
devuelve el cardinal del elemento.
s = "the quick brown fox jumps over the lazy dog"
hola = "hola mundo"
# En esta versión ni siquiera hace falta la variable abcd
# abcd = 'abcdefghijklmnopqrstuvwxyz'
len_abcd = 26
def is_pangram(frase):
resultado = frase.replace(" ","") # Borra los espacios de la frase, para no contarlo dentro del set
resultado = set(resultado) # Convierte la frase sin espacios (que es una lista) en un set, removiendo los
# elementos iguales.
print(resultado)
if(len(resultado) == len_abcd):
return True
else:
return False
print(is_pangram(s))
print(is_pangram(hola))
print(is_pangram("la bella y graciosa moza"))
{'o', 'v', 'q', 'm', 'b', 'h', 'r', 'z', 'd', 'y', 'l', 't', 'i', 'e', 'a', 'x', 'w', 'g', 'u', 'j', 'k', 'f', 'p', 'c', 'n', 's'}
True
{'l', 'm', 'h', 'a', 'd', 'n', 'u', 'o'}
False
{'y', 'l', 'm', 'b', 's', 'r', 'i', 'e', 'g', 'z', 'a', 'c', 'o'}
False