Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Meta en 14 Noviembre 2010, 00:45 am



Título: [Python] Comparar listas de palabras
Publicado por: Meta en 14 Noviembre 2010, 00:45 am
Buenas:

Aquí si que Python me tumba.

Ver ejercicio. (http://www.subeimagenes.com/img/hex-c-6825.jpg)

Parece que aquí voy a tardar un tiempito con este ejercicio ya que parece o al menos me da la impresión que es código largo.


Título: Re: [Python] Comparar listas de palabras
Publicado por: .:WindHack:. en 14 Noviembre 2010, 03:26 am
Realmente el código no es extenso. A mí se me ocurrió hacerlo de la siguiente manera:

Código
  1. sString = raw_input('Cadena: ') # Pedimos la cadena...
  2. sString = sString.lower() # Convertimos a minusculas...
  3. lListA = sString.split() # Creo la lista con todos los elementos de la cadena...
  4. lListB = [] # Lista vacia
  5.  
  6. for i in lListA: # Recorro la lista original
  7. if i not in lListB: # Si el elemento no esta en la otra lista...
  8. lListB.append(i) #... lo agrego
  9.  
  10. print lListB


Título: Re: [Python] Comparar listas de palabras
Publicado por: Meta en 14 Noviembre 2010, 04:43 am
Gracias, me funciona.

Con C# lo he encontrado así:

Código
  1. static void Main(string[] args)
  2.        {
  3.            List<int> lista = new List<int>(9;
  4.            int ingresos = 0;
  5.  
  6.            while(ingresos <= 9)
  7.            {
  8.                Console.WriteLine("Ingrese un numero positivo:");
  9.                string valor = Console.ReadLine();
  10.  
  11.                int valint = 0;
  12.                if (!int.TryParse(valor, out valint))
  13.                {
  14.                    Console.WriteLine("El valor ingresado no es numerico");
  15.                    continue;
  16.                }
  17.  
  18.                if(valint < 0)
  19.                {
  20.                    Console.WriteLine("El valor ingresado debe ser positivo");
  21.                    continue;
  22.                }
  23.  
  24.                lista.Add(valint);
  25.                ingresos++;
  26.  
  27.            }
  28.  
  29.            //se muestra la lista de valores ingresados
  30.            Console.WriteLine("Numeros Ingresados:");
  31.            foreach (int item in lista)
  32.            {
  33.                Console.WriteLine(item);
  34.            }
  35.  
  36.        }

Edito:


Otra forma de hacerlo.

Código
  1. # Declaro las listas
  2. lista_1 = ["Una","frase","formada","con","palabras"]
  3. lista_2 = ["Otra","frase","con","otras","palabras"]
  4. resultado = []
  5.  
  6. # Convierto la palabra a minúsculas y la agrego a la lista
  7. for palabra in lista_1:
  8.    palabra_min = palabra.lower()
  9.    resultado.append(palabra_min)
  10.  
  11. # Comparo ambas listas y luego convierto a mínusculas
  12. for a in lista_2:
  13.    if a not in lista_1:
  14.        palabra_min = a.lower()
  15.        resultado.append(palabra_min)
  16.  
  17. print resultado


Título: Re: [Python] Comparar listas de palabras
Publicado por: Novlucker en 16 Noviembre 2010, 14:03 pm
Aunque creo que usaría el método de .:WindHack:. por simplicidad, aquí tienes ooootra manera más de hacerlo sin usar una segunda lista, solo modificando la que hemos obtenido en principio.

Código
  1. frase = raw_input('Ingresa una frase: ')
  2. lista = frase.lower().split(' ')
  3. i = 0
  4. while i<len(lista):
  5.    if lista[i] in lista[:i]:
  6.        lista.pop(i)
  7.    else:
  8.        i+=1
  9. print lista

Saludos