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/

Responder a