You are on page 1of 3

Comience con el siguiente código Python.

alfabeto = "abcdefghijklmnopqrstuvwxyz"

test_dups = ["zzz", "perro", "contable", "subdermatoglifo", "subdermatoglifo"]

test_miss = ["zzz", "subdermatoglifo", "el zorro marrón rápido salta sobre el perro perezoso"]

# De la Sección 11.2 de:

# Downey, A. (2015). Piensa en Python: Cómo pensar como un informático. Needham,


Massachusetts:Green Tree Press.

def histograma(s):

d = dict() for c in s:

si c no está en d:

d[c] = 1

si no:

d[c] += 1

devolver d

Copie el código anterior en su programa, pero escriba usted mismo el resto del código para esta tarea.
No copie ningún código de otra fuente.

Parte 1
Escribe una función llamada has_duplicados que tome como parámetro una cadena y devuelva True si
la cadena tiene algún carácter repetido.En caso contrario, debería devolver False.

Implemente has_duplicados creando un histograma utilizando la función histograma anterior. No


utilice ninguna de las implementaciones de has_duplicates que se dan en su libro de texto. En su
lugar, su implementación debe utilizar los recuentos en el histograma para decidir si hay duplicados.

Escribe un bucle sobre las cadenas de la lista test_dups proporcionada. Imprime cada cadena de la
lista y si tiene o no duplicados basándose en el valor de retorno de has_duplicates para esa cadena.
Por ejemplo, la salida para "aaa" y "abc" sería la siguiente.

aaa tiene duplicados

abc no tiene duplicados

Imprime una línea como la anterior para cada una de las cadenas de test_dups.
def histograma(s):

d = dict()

para c en s:

si c no está en d:

d[c] = 1

si no:

d[c] += 1

devolver d

def tiene_duplicados(s):

si 'aaa' en histograma(s):

devolver True

si no:

devolver False

def test_dups_loop():

para s en test_dups:

print(s + ':', has_duplicates(s))

Parte 2
Escribe una función llamada missing_letters que tome un parámetro de cadena y devuelva una nueva
cadena con todas las letras del alfabeto que no están en la cadena del argumento. Las letras de la
cadena devuelta deben estar en orden alfabético.

Su implementación debe utilizar un histograma de la función histograma. También debería utilizar la


variable global alfabeto. Debe utilizar esta variable global directamente, no a través de un argumento
o una copia local. Debe hacer un bucle sobre las letras del alfabeto para determinar cuáles faltan en el
parámetro de entrada.
La función missing_letters debe combinar la lista de letras que faltan en una cadena y devolver dicha
cadena.

Escribe un bucle sobre las cadenas de la lista test_miss y llama a missing_letters con cada cadena.
Imprime una línea por cada cadena enumerando las letras que faltan. Por ejemplo, para la cadena
"aaa", la salida debería ser la siguiente.

aaa le faltan letras bcdefghijklmnopqrstuvwxyz

Si la cadena tiene todas las letras del alfabeto, la salida debería decir que utiliza todas las letras. Por
ejemplo, la salida para el propio stringalphabet sería la siguiente.

abcdefghijklmnopqrstuvwxyz usa todas las letras

Imprime una línea como la anterior para cada una de las cadenas de test_miss.

def faltan_letras(s):

r = list('abcdefghijklmnopqrstuvwxyz')

s = s.lower()

para c en s.lower():

si c en r:

r.remove(c) # la primera instancia coincidente

return ''.join(r)

def test_miss_loop():

para s en test_miss:

print(s + ':', missing_letters(s))

def main():

test_dups_loop()

test_miss_loop()

You might also like