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...
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') 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 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()
A,B,C,2,3,True B,E,D,4,3,False C,G,F,2,1,False D,H,G,2,3,False E,H,D,3,2,False F,K,L,2,3,True G,J,K,3,5,True H,M,I,2,4,False I,J,G,1,4,False J,M,K,4,2,False K,O,P,3,2,False L,Q,K,3,4,False M,R,I,5,8,False N,J,M,3,2,False O,N,R,4,1,False P,O,S,8,6,False Q,S,P,18,9,False R,S,N,3,4,False S,O,P,3,5,False Salida,,,,,False
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/