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 <
[email protected]> escribió:
> Claro te adjunto codigo y archivo con los datos de las calles, saludos
>
>
>
> El 13/07/10, René Rolando Elizalde Solano <[email protected]> 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 <
> > [email protected]> 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 <[email protected]>
> 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 <
> >> > [email protected]> 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 <[email protected]>
> >> >> 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
> >> >> [email protected]
> >> >> 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
> >> > [email protected]
> >> > [email protected]
> >> > [email protected]
> >> > [email protected]
> >> >
> >>
> >>
> >> --
> >> El buen Informático es como un Bibliotecario, no lo sabe todo pero
> >> sabe donde buscarlo...
> >> _______________________________________________
> >> Python-es mailing list
> >> [email protected]
> >> 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
> > [email protected]
> > [email protected]
> > [email protected]
> > [email protected]
> >
>
>
> --
> El buen Informático es como un Bibliotecario, no lo sabe todo pero
> sabe donde buscarlo...
>
> _______________________________________________
> Python-es mailing list
> [email protected]
> 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
[email protected]
[email protected]
[email protected]
[email protected]
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 indice es ",listaCalles.count(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
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/