Python - codigo comparador de listas

 
Vista:
sin imagen de perfil

codigo comparador de listas

Publicado por JoseM (1 intervención) el 09/01/2017 13:46:31
Buenas a todos,
requiero de su ayuda y sabiduría para responderme a una duda que tengo con un código que no sé porque me dá error:
Lo que quiero que haga el programa es que tome dos listas de caracteres, las compare elemento a elemento y almacene los elementos repetidos (siendo estos consecutivos, es decir, si la lista 1 es "a","b","c" y la lista 2 "b","c" solo guarde en una nueva lista 3 los elementos b y c; si estos no son consecutivos que no los guarde). He escrito el siguiente código:

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
28
29
30
31
32
33
if __name__ == "__main__":
 
 
    def comparar(a, b):
 
        i = 0
        j = 0
        c1 = []
 
        while a[i] == b[j]:
            c1.append(a[i])
                j = j+1
                i=i+1
 
        return c1
 
 
 
 
    cadena_1=raw_input("Introduce la cadena 1 \n")
    cadena_2 = raw_input("Introduce la cadena 2 \n")
    #n=input("De cuantas letras quieres hacer la comparacion?\n")
 
    transf1=list(cadena_1) #transforma la cadena de caracteres en una lista de catacteres separados
    transf2 = list(cadena_2)
    print transf1
    print transf2
 
    i=0
    j=0
    n1=len(transf1)
    n2=len(transf2)
    print comparar(transf1,transf2)

No funciona el código ¿podrían ayudarme?
Muchas gracias de antemano
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 Zhisi

codigo comparador de listas

Publicado por Zhisi (21 intervenciones) el 10/01/2017 14:57:08
Buenas!

¿Qué quieres decir con "no funciona el código"? ¿No hace lo que tú quieres que haga o te da error? Es importante que cuando preguntas algo seas concreto y aportes toda la información posible para poder ayudarte.

La linea 1 no sé qué es. Obviando esa línea te puedo decir lo siguiente:
-En las líneas 29 y 30 asignas a i, j el valor cero, pero no lo usas para nada.
-Por otro lado, dentro de la función def comparar (a,b) pones un bucle con while a == b[j]: ¿por qué? Creo que deberías repasar cómo funcionan los bucles.
-Además de un bucle para recorrer los valores de a,b deberías insertar una condición con un [i]if
que compare los valores de a,b.
-También tendrías que añadir código para controlar si se producen dos igualdades consecutivas y en caso afirmativo almacenarlas en alguna variable o array.

No soy ningún experto en python, pero creo que tienes que repasar bastante la teoría para mejorar ese código. Si tienes más dudas, pregunta.

Un saludo y ánimo con ese código!
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
sin imagen de perfil
Val: 2.808
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

codigo comparador de listas

Publicado por tincopasan (1082 intervenciones) el 10/01/2017 20:06:23
podés probar con algo así:
1
2
3
4
5
6
7
8
contador=0
    while contador < len(a):
        if a[i] == b[j]:
            c1.append(a[i])
        j = j+1
        i+=1
        contador+=1
    return c1

agregue un contador y lo comparo con el largo de la cadena a
ahí comparo el valor de los index
uso basicamente tu código con unas modificaciones, pero guarda que es muy básico esto y te va a traer problemas si las cadenas no son del mismo largo, ya queda en vos mejorarlo
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