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
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/