Solo una linea de codigo mas !! El 13 de julio de 2010 22:48, René Rolando Elizalde Solano < reroes...@gmail.com> escribió:
> el problema es q lista_calle esta siempre vacia, es decir en los metodos no > está cargada.. revisale lo que le hice en los metodos y mira si te sirve!! > me explico.. lo qye hago en buscar indice es llamar a el metodo abrir() el > cual me devuelve una lista en "caliente" de listacalles, entons puedo > trabajar con eso!! no es lo optimo pero creo q el problema es ese!!! > > > El 13 de julio de 2010 22:30, Juan Marcelo Leiva Sandoval < > chelitole...@gmail.com> escribió: > > Claro te adjunto codigo y archivo con los datos de las calles, saludos >> >> >> >> El 13/07/10, René Rolando Elizalde Solano <reroes...@gmail.com> escribió: >> > Haber el indice de quien se necesita de un elemento de la lista ? seria >> > mejor q nos envies la listacalles !! para entender mejor el problema >> > >> > Espero poder ayudar en algo! >> > >> > El 13 de julio de 2010 22:18, Juan Marcelo Leiva Sandoval < >> > chelitole...@gmail.com> escribió: >> > >> >> Claro algo como eso, pero como explica Angel Alvarez wrote, es >> >> "nombre" es un atributo de los objetos de listaCalles, por eso no >> >> puedo usar lo que tu me explicas, pero si yo imprimo ejemplo >> >> listaCalles[0].nombre me muestra el nombre de la calle que esta en ese >> >> indice, por eso que yo uso 2 tipos de ciclos para recorrer la lista, >> >> el proble es que ninguno entra a la lista y me devuelve el numero con >> >> el que inicializo el contador. >> >> >> >> ejemplo: >> >> >> >> def mmmIndice(buscar): >> >> indice = 0 >> >> i = 0 >> >> while i < len(listaCalles): >> >> if listaCalles[i].nombre == buscar: >> >> break >> >> else: >> >> indice = indice + 1 >> >> i = i + 1 >> >> return indice >> >> >> >> no me devuelve 0 >> >> >> >> espero explicarme mucho mejor, y gracias por su ayuda >> >> >> >> El 13/07/10, René Rolando Elizalde Solano <reroes...@gmail.com> >> escribió: >> >> > Espero haber entendido el problema y te ayude lo siguiente >> >> > >> >> > def indice(nombre): >> >> > l = ["a","b","c"] >> >> > print l.count(nombre) >> >> > >> >> > #tomando encuenta que nombre es "a", debe salir >> >> > el print 1 >> >> > >> >> > algo asi quieres!!! >> >> > >> >> > disculpa si no lo entendi!!! >> >> > >> >> > El 13 de julio de 2010 22:04, Juan Marcelo Leiva Sandoval < >> >> > chelitole...@gmail.com> escribió: >> >> > >> >> >> Tengo 3 funciones distintas y cada una diferente: >> >> >> >> >> >> def otroIndice(buscar): >> >> >> indice = 0 >> >> >> for i in listaCalles: >> >> >> if i == buscar: >> >> >> break >> >> >> else: >> >> >> indice = indice + 1 >> >> >> return indice >> >> >> >> >> >> >> >> >> def mmmIndice(buscar): >> >> >> indice = 0 >> >> >> i = 0 >> >> >> while i < len(listaCalles): >> >> >> if listaCalles[indice].nombre == buscar: >> >> >> break >> >> >> else: >> >> >> indice = indice + 1 >> >> >> return indice >> >> >> >> >> >> def buscarIndice(nombre): >> >> >> """Recibe el nombre de la calle y lo busca, al encontrarlo >> >> devuelve >> >> >> el indice""" >> >> >> indice = 0 >> >> >> for buscar in listaCalles: >> >> >> if buscar.nombre == nombre: >> >> >> break >> >> >> else: >> >> >> indice = indice + 1 >> >> >> return indice#El problema es que siempre retorna 0 >> >> >> >> >> >> aca lo que devuelven: >> >> >> >> >> >> Resultado otroIndice ---> 0 >> >> >> Resultado mmmIndice ---> 0 >> >> >> Resultado buscarIndice ---> 0 >> >> >> Numerate ---> <enumerate object at 0xb7856824> >> >> >> >> >> >> El problema de todas es que no entran al siclo :'( >> >> >> >> >> >> El 13/07/10, Juan Marcelo Leiva Sandoval <chelitole...@gmail.com> >> >> >> escribió: >> >> >> > def buscarIndice(nombre): >> >> >> > indice = 0 >> >> >> > for buscar in listaCalles: >> >> >> > if buscar == nombre: >> >> >> > break >> >> >> > else: >> >> >> > indice = indice + 1 >> >> >> > return indice >> >> >> > >> >> >> > - con ese ejemplo me devuelve 0 >> >> >> > >> >> >> > print "Numerate ---> %s" % (enumerate(listaCalles)) >> >> >> > >> >> >> > - me devuelve Numerate ---> <enumerate object at 0xb76c970c> >> >> >> > >> >> >> > def otroIndice(buscar): >> >> >> > indice = 1 >> >> >> > for i in listaCalles: >> >> >> > if i == buscar: >> >> >> > break >> >> >> > else: >> >> >> > indice = indice + 1 >> >> >> > return indice >> >> >> > >> >> >> > - me devuelve 0 >> >> >> > >> >> >> > Bueno seguire buscando muchas gracias por su ayuda espero me >> puedan >> >> >> > seguir guiando Saludos. >> >> >> > >> >> >> > -- >> >> >> > El buen Informático es como un Bibliotecario, no lo sabe todo pero >> >> >> > sabe donde buscarlo... >> >> >> > >> >> >> >> >> >> >> >> >> -- >> >> >> El buen Informático es como un Bibliotecario, no lo sabe todo pero >> >> >> sabe donde buscarlo... >> >> >> _______________________________________________ >> >> >> Python-es mailing list >> >> >> Python-es@python.org >> >> >> http://mail.python.org/mailman/listinfo/python-es >> >> >> FAQ: http://python-es-faq.wikidot.com/ >> >> >> >> >> > >> >> > >> >> > >> >> > -- >> >> > René Rolando Elizalde Solano >> >> > Ingeniero en Sistemas - Universidad Nacioanal de Loja >> >> > Miembro del Sección de Software del Departamento de >> Telecomunicaciones e >> >> > Información - Universidad Nacional de Loja >> >> > Desarrollador Sistema de Gestión Académica. S G A >> >> > >> >> > http://reroes79.wordpress.com >> >> > http://reroes799.blogspot.com/ >> >> > http://twitter.com/reroes >> >> > rer...@unl.edu.ec >> >> > reroes...@gmail.com >> >> > reroe...@hotmail.com >> >> > reroe...@yahoo.es >> >> > >> >> >> >> >> >> -- >> >> El buen Informático es como un Bibliotecario, no lo sabe todo pero >> >> sabe donde buscarlo... >> >> _______________________________________________ >> >> Python-es mailing list >> >> Python-es@python.org >> >> http://mail.python.org/mailman/listinfo/python-es >> >> FAQ: http://python-es-faq.wikidot.com/ >> >> >> > >> > >> > >> > -- >> > René Rolando Elizalde Solano >> > Ingeniero en Sistemas - Universidad Nacioanal de Loja >> > Miembro del Sección de Software del Departamento de Telecomunicaciones e >> > Información - Universidad Nacional de Loja >> > Desarrollador Sistema de Gestión Académica. S G A >> > >> > http://reroes79.wordpress.com >> > http://reroes799.blogspot.com/ >> > http://twitter.com/reroes >> > rer...@unl.edu.ec >> > reroes...@gmail.com >> > reroe...@hotmail.com >> > reroe...@yahoo.es >> > >> >> >> -- >> El buen Informático es como un Bibliotecario, no lo sabe todo pero >> sabe donde buscarlo... >> >> _______________________________________________ >> Python-es mailing list >> Python-es@python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ >> >> > > > -- > René Rolando Elizalde Solano > Ingeniero en Sistemas - Universidad Nacioanal de Loja > Miembro del Sección de Software del Departamento de Telecomunicaciones e > Información - Universidad Nacional de Loja > Desarrollador Sistema de Gestión Académica. S G A > > http://reroes79.wordpress.com > http://reroes799.blogspot.com/ > http://twitter.com/reroes > rer...@unl.edu.ec > reroes...@gmail.com > reroe...@hotmail.com > reroe...@yahoo.es > -- René Rolando Elizalde Solano Ingeniero en Sistemas - Universidad Nacioanal de Loja Miembro del Sección de Software del Departamento de Telecomunicaciones e Información - Universidad Nacional de Loja Desarrollador Sistema de Gestión Académica. S G A http://reroes79.wordpress.com http://reroes799.blogspot.com/ http://twitter.com/reroes rer...@unl.edu.ec reroes...@gmail.com reroe...@hotmail.com reroe...@yahoo.es
import os.path, csv class Calle: def __init__(self, nombre, derecha, izquierda, vdd, vdi, estado): self.nombre = nombre self.derecha = derecha self.izquierda = izquierda self.vdd = vdd self.vdi = vdi self.estado = estado def __str__(self): return "%s %s %s %s %s %s " % (self.nombre, self.derecha, self.izquierda, self.vdd, self.vdi, self.estado) #Lista con los datos de las Calles listaCalles = [] def abrir(): """Si existe el archivo lee y guarda el contenido en la lista""" if os.path.exists('calles.csv'): l = csv.reader(open('calles.csv', 'r')) for i in l: nombre = i[0] derecha = i[1] izquierda = i[2] vdd = i[3] vdi = i[4] estado = i[5] calle = Calle(nombre, derecha, izquierda, vdd, vdi, estado) listaCalles.append(calle) #Si no existe lo crea else: l = open('calles.csv', 'a') return listaCalles def buscarIndice(nombre): """Recibe el nombre de la calle y lo busca, al encontrarlo devuelve el indice""" print nombre print abrir() indice = 0 for buscar in listaCalles: if buscar.nombre == nombre: print "el count es ",listaCalles.count(buscar) print "el indice es ",listaCalles.index(buscar) break else: indice = indice + 1 return indice#El problema es que siempre retorna 0 def otroIndice(buscar): indice = 0 for i in listaCalles: if i == buscar: break else: indice = indice + 1 return indice def mmmIndice(buscar): indice = 0 i = 0 while i < len(listaCalles): if listaCalles[i].nombre == buscar: break else: indice = indice + 1 i = i + 1 return indice def buscarRuta(desde, hasta): """Busca una Ruta (No la mas optima)""" tabu = 0 #Marca el Tabu solucion = []#Guarda las distancias ruta = []#Guarda el nombre de la Calle siguiente = 0 while (listaCalles[siguiente].nombre != hasta): if listaCalles[siguiente].vdd < listaCalles[siguiente].vdi and listaCalles[siguiente + 1].nombre != 'Salida': solucion.append(int(listaCalles[siguiente].vdd)) ruta.append(listaCalles[siguiente].nombre) siguiente = buscarIndice(listaCalles[siguiente].derecha) if listaCalles[siguiente].vdi < listaCalles[siguiente].vdd and listaCalles[siguiente + 1].nombre != 'Salida': solucion.append(int(listaCalles[siguiente].vdi)) ruta.append(listaCalles[siguiente].nombre) siguiente = buscarIndice(listaCalles[siguiente].izquierda) else: continue else: continue print "La ruta seria= %s" % (ruta) resul = sum(solucion) print "con una distancia de: %s Kms." % (resul) print def listarCalles(): """Muestra el detalle de todas las calles""" print"\n" print "Listado de Calles".center(79, "*") for calle in listaCalles: print "Nombre de la Calle: %s\nCalle a la Derecha: %s\nCalle a la Izquierda: %s" % (calle.nombre, calle.derecha, calle.izquierda) print "Valor dd: %s\nValor di: %s" % (calle.vdd, calle.vdi) if calle.estado == True: print "Tabu" print else: print "" def guardar(): """Guarda todo el contenido de la lista y reemplaza todo lo que esta en el archivo""" grabar = csv.writer(open('calles.csv', 'w')) for calle in listaCalles: grabar.writerow([calle.nombre, calle.derecha, calle.izquierda, calle.vdd, calle.vdi, calle.estado]) def buscarCalle(): """Busca una calle por nombre""" nombre = raw_input("Ingrese el nombre de la calle a buscar: ") for buscar in listaCalles: if nombre == buscar.nombre: print "" print "Resultado".center(79, "*") print "Nombre de la Calle: %s\nCalle a la Derecha: %s\nCalle a la Izquierda: %s" % (buscar.nombre, buscar.derecha, buscar.izquierda) print "" break def menu(): """Menu principal""" abrir() while True: print 'MENU'.center(32, '=') print '1.- Busca una Ruta' print '2.- Busca Ruta mas Optima' print '3.- Muestra las Calles' print '4.- Busca una Calle' print '5.- Salir' op = input('Ingrese una Opcion: ') print if op == 1: buscarRuta('G', 'S')#Busca ruta entre 2 Calles if op == 2: buscarRutaOptima()#No implementado aun Sera "Tabu Search" if op == 3: listarCalles()#Muestra las Calles ingresadas if op == 4: buscarCalle()#Busca calle por su nombre if op == 5: guardar() break #main print "Resultado otroIndice ---> %s" % (otroIndice('G')) #Esto es para probar que valor devuelve la funcion bucarIndice() print "Resultado mmmIndice ---> %s" % (mmmIndice('G')) print "Resultado buscarIndice ---> %s" % (buscarIndice('G')) print "Numerate ---> %s" % (enumerate(listaCalles)) menu()
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/