Ver Mensaje Individual
  #30 (permalink)  
Antiguo 04/01/2011, 15:59
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: ayuda con un ejercicio de phyton!!gracias

Punto 1:
Código Python:
Ver original
  1. for termino in linea:
??? ¿para cada término de la línea? ¿No será "para cada término de la lista de términos"?

Punto 2:
No hay separación entre las líneas, usen \n para generar un salto de línea en el texto o de lo contrario estarán leyendo una sola línea del archivo.

Punto 3:
Código Python:
Ver original
  1. if puntos_actual > puntos_mejor:
Este if debería estar sangrado un nivel menos, al mismo nivel del for en vez de dentro de él. Piensen por qué.

Punto 4:
están pasando la variable "terminos" como una cadena, por lo que al hacer "for termino in terminos" están iterando por cada caracter de la misma. Deben usar split() para separar la cadena de términos por espacios e iterar por palabras.


En cuanto a considerar solamente palabras completas, una solución posible es partir también la cadena a analizar con split(), para eliminar los espacios y obtener las palabras, pudiendo luego comparar cada palabra con cada término y utilizar eso para sumar puntos.

Aquí les dejo una versión arreglada con los detalles que les mencioné antes:

Código Python:
Ver original
  1. def buscar(terminos, archivo):
  2.     mejor = ""
  3.     puntos_mejor =0
  4.     for linea in archivo:
  5.         puntos_actual = 0
  6.         for termino in terminos:
  7.             print "_BUSCANDO_", termino, "_EN_", linea
  8.             puntos = linea.count(termino)
  9.             print "_", str(puntos), "PUNTOS_"
  10.             puntos_actual += puntos
  11.         if puntos_actual > puntos_mejor:
  12.             mejor = linea
  13.             puntos_mejor = puntos_actual
  14.  
  15.     return mejor
  16.  
  17.  
  18. a = open("noticias.txt")
  19. terminos = ["ayer", "la"]
  20. r = buscar(terminos, a)
  21. print "RESULTADO: ", r
  22. a.close()