Python - imprimir la palabra con la longitud mas corta que contenga una letra (x)

 
Vista:
Imágen de perfil de israel
Val: 8
Ha disminuido su posición en 9 puestos en Python (en relación al último mes)
Gráfica de Python

imprimir la palabra con la longitud mas corta que contenga una letra (x)

Publicado por israel (5 intervenciones) el 24/04/2018 06:14:53
la practica en si pide lo siguiente............
Escribir una función que reciba un texto y para cada carácter presente en el texto
devuelva la cadena más corta en la que se encuentra ese carácter.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
lis3=[] #lista
dic3={} #diccionario
 
 
def e3():
    tex=str(input("agrega tu texto :")); #pide la cadena de texto
    tex2=tex.replace(" ",""); #elimina los espacios vacios
    for i in tex2: #lee todos los elementos de la cadena
        if i not in lis3:  #si el elemento no se encuentra en la lista
            lis3.append(i) #directamente lo agrega
 
    tex3=(tex.split(" ")); #separa la cadena en palabras por sus espacios
    for i in tex3:  #lee cada uno de los elementos de la lista
        if i not in dic3: # y si no se encuntran en el diccionario 
            dic3[i]=0 #los agrega
 
 
    for i in lis3: #lee los elementos de la lista
        for x in dic3: #lee los elementos del diccionario
            if i in x: #si i es parte de x
                print(i,':',x); #imprime
 
#el problema es que solo tiene que imprimir la cadena mas CORTA que contenta "i", y de la manera que lo tengo imprime todas
 
e3()

Captura
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

imprimir la palabra con la longitud mas corta que contenga una letra (x)

Publicado por xve (1646 intervenciones) el 24/04/2018 12:25:27
Hola Isarel, siguiendo con tu código, te he añadido un condicional mas para guardar la palabra mas corta...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
listaLetras=[] #lista
diccionarioPalabras={} #diccionario
 
 
def e3():
    tex=str(input("agrega tu texto :")); #pide la cadena de texto
    tex2=tex.replace(" ",""); #elimina los espacios vacios
    for i in tex2: #lee todos los elementos de la cadena
        if i not in listaLetras:  #si el elemento no se encuentra en la lista
            listaLetras.append(i) #directamente lo agrega
 
    tex3=(tex.split(" ")); #separa la cadena en palabras por sus espacios
    for i in tex3:  #lee cada uno de los elementos de la lista
        if i not in diccionarioPalabras: # y si no se encuntran en el diccionario 
            diccionarioPalabras[i]=0 #los agrega
 
    for i in listaLetras: #lee los elementos de la lista
        palabraMasCorta=""
        for x in diccionarioPalabras: #lee los elementos del diccionario
            if i in x: #si i es parte de x
                if len(x)<len(palabraMasCorta) or palabraMasCorta=="":
                    palabraMasCorta=x
        print(i,":",palabraMasCorta)
 
#el problema es que solo tiene que imprimir la cadena mas CORTA que contenta "i", y de la manera que lo tengo imprime todas
 
e3()

También te he modificado el nombre de las variables, para entenderme mejor...

No se muy bien porque utilizas un diccionario para las palabras...

Hay que decir, que creo que se podría mejorar con el uso de map() y filter()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de israel
Val: 8
Ha disminuido su posición en 9 puestos en Python (en relación al último mes)
Gráfica de Python

imprimir la palabra con la longitud mas corta que contenga una letra (x)

Publicado por israel (5 intervenciones) el 24/04/2018 13:43:10
muchas gracias, funciono perfecto...
estoy usando diccionario porque asi lo pidio el maestro, seria mejor en una lista pero bueno asi lo pidio el, al porque no le veo mucha utilidad, pero muchas gracias por la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar