Ver Mensaje Individual
  #12 (permalink)  
Antiguo 31/12/2010, 13:11
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ayuda con un ejercicio de phyton!!gracias

sanfermin67, creo que el último "if p in f" debería ser "if p in l" (es decir, si la palabra está en la línea).
Tu código tiene el problema de que si la línea contiene a más de una de las palabras buscadas, se agregará a b tantas veces como palabras contenga.

Además hay otro detalle: la posición en donde está el return indica que la función terminará luego de encontrar la primera línea que contenga a alguna de las palabras. El return debería estar fuera del for.

Se me ocurre un sistema de "puntajes". Cada línea arranca en 0, y por cada vez que se encuentre cada palabra buscada, se incrementa en 1 su puntaje. Luego simplemente se selecciona la línea cuyo puntaje sea el más alto.

El cálculo puede ser algo así:

Código Python:
Ver original
  1. for linea in archivo:
  2.     for palabra in lista_de_palabras_buscadas:
  3.         puntaje[linea] += linea.count(palabra)

http://docs.python.org/library/stdtypes.html#str.count

Les dejo a ustedes pensar lo que falta:
- cómo inicializar el vector puntaje con todas sus entradas en 0
- cómo seleccionar al final el mayor puntaje y a partir de allí obtener la línea correspondiente
- cómo decicir en caso de empate

una forma simple puede ser leer el archivo con readlines(), crear el vector puntaje de tamaño len(lineas_del_archivo), ¡y ya no les digo más porque hay que pensarlo!


Saludos.