Hola, bueno tengo un problema con una funcion, se supone que por parametro le envio el nombre de una calle, lo deberia buscar en la lista y cuando lo encuentra devolver el numero del indice de donde se encuentra el nombre, aca dejo la funcion y adjunto codigo y archivo con contenido.
def buscarIndice(nombre): indice = 0 for buscar in listaCalles: if buscar.nombre == nombre: break else: indice = indice + 1 return indice espero puedan ayudarme -- El buen Informático es como un Bibliotecario, no lo sabe todo pero sabe donde buscarlo...
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
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 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 uns 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 Indice ---> %s" % (buscarIndice('G')) #Esto es para probar que valor devuelve la funcion bucarIndice() menu()
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/