Foros del Web » Programando para Internet » Python »

Ayuda con una Class y una Lista

Estas en el tema de Ayuda con una Class y una Lista en el foro de Python en Foros del Web. Hola amigos soy nuevo en Python y vengo de C, me cuesta un poco eso de las Clases, tengo que hacer un programita que guarde ...
  #1 (permalink)  
Antiguo 06/06/2010, 16:21
 
Fecha de Ingreso: junio-2010
Mensajes: 13
Antigüedad: 14 años, 5 meses
Puntos: 0
Pregunta Ayuda con una Class y una Lista

Hola amigos soy nuevo en Python y vengo de C, me cuesta un poco eso de las Clases, tengo que hacer un programita que guarde tipos de frutas, cada fruta tiene que tener su nombre, color y peso, esto tiene que ser dinamico cree una Class Fruta y una Lista frutas para ir guardando. bueno les dejo el codigo para que me guien, saludos.

Código Python:
Ver original
  1. class fruta:
  2.     def __init__(self, nombre, color, peso):
  3.         self.nombre = nombre
  4.         self.color = color
  5.         self.peso = peso
  6.        
  7. def agregarFruta(lista):
  8.     nombre = raw_input('Nombre:' )
  9.     color = raw_input('Color: ')
  10.     peso = raw_input('Peso: ')
  11.     lista.append(nombre,color, peso)
  12.  
  13. frutas = []
  14. print frutas
  15.  
  16. agregarFruta(frutas)
  17. print frutas

Última edición por programadornoob; 01/07/2010 a las 12:18
  #2 (permalink)  
Antiguo 06/06/2010, 19:38
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ayuda con una Class y una Lista

Bienvenido programadornoob

Lo puedes hacer mas pythonico y simplemente asignarle atributos al vuelo.

Código Python:
Ver original
  1. #Programa que guarda una lista de frutas con las siguietes propiedades
  2. #Nombre, Color, Peso
  3.  
  4.  
  5. #Clase Fruta, Notese que empieza con mayusculas por ser nombre de clase
  6. class Fruta:
  7.     pass
  8.  
  9. #Lista de frutas, inicialmente vacia.
  10. lista_de_frutas = []
  11.  
  12. #Ciclo infinito
  13. while True:
  14.     #Creamos un objeto fruta, notese que empieza con minusculas el objeto y con mayuscula la clase
  15.     fruta = Fruta()
  16.     #Creamos el atributo nombre y el valor que eliga el usuario
  17.     fruta.nombre = raw_input("Nombre: ")
  18.     #Creamos el atributo color y el valor que eliga el usuario
  19.     fruta.color = raw_input("Color: ")
  20.     #Creamos el atributo peso y el valor que eliga el usuario
  21.     fruta.peso = raw_input("Peso: ")
  22.     #Añadimos el objeto a la lista
  23.     lista_de_frutas.append(fruta)
  24.  
  25.     #Desea continuar?
  26.     s = raw_input("Desea continuar [S/n]")
  27.  
  28.     if not s: #Por default continua
  29.         continue
  30.     elif s[0] == "s" or s[0] == "S": #Si es 's' o 'S' el primer caracter continua
  31.         continue
  32.     else: #De cualquier otro modo termina el programa
  33.         break
  34.  
  35. print
  36. print "Lista de frutas".center(79, "#")
  37. for fruta in lista_de_frutas:
  38.     print "Nombre: %s\nColor: %s\nPeso: %s" % (fruta.nombre, fruta.color, fruta.peso)
  39.     print ""
  #3 (permalink)  
Antiguo 06/06/2010, 20:42
 
Fecha de Ingreso: junio-2010
Mensajes: 13
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Ayuda con una Class y una Lista

Muchas gracias razpeitia te agradesco mucho ahora a crear una funcion para buscar si tengo dudas te pregunto, saludos y muchas gracias :)

PD: En la linea 22 me dio error por la Ñ pero lo solucione cambiandola por una N xD
  #4 (permalink)  
Antiguo 30/06/2010, 10:58
 
Fecha de Ingreso: junio-2010
Mensajes: 13
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Ayuda con una Class y una Lista

Hola, bueno estoy creando una aplicacion mucho mas grande voy muy bien, con el ejemplo de las frutas tengo casi todo lo que necesito, pero a la hora de correr el programa tengo que ingresar siempre los datos para probar los cambios, ahora lo que necesito es guardar los datos en un archivo y recuperarlos al abrir, pero no tengo la mas minima idea de como hacerlo, espero me puedan ayudar, saludos.

PD: trabajo en Ubuntu :P
  #5 (permalink)  
Antiguo 30/06/2010, 12:08
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ayuda con una Class y una Lista

Hay muchas maneras de hacer eso te doy 3 alternativas todas usando los modulos estandar.

1.- Usar archivos de texto plano
2.- Usar Pickle o cPickle (Serialización de objetos)
3.- Usar una pequeña base de datos (sqlite3 para python)
  #6 (permalink)  
Antiguo 30/06/2010, 18:03
 
Fecha de Ingreso: junio-2010
Mensajes: 13
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Ayuda con una Class y una Lista

Muchas gracias por tu respuesta, necesito usar texto plano creo el archivo no hay problemas en eso y guarda el problema es recuperar los datos porque uso una lista dinamica y necesito recuperarlos de la misma manera. si me das un pequeño ejemplo estaria muy agradecido, saludos.
  #7 (permalink)  
Antiguo 30/06/2010, 19:01
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ayuda con una Class y una Lista

Código Python:
Ver original
  1. from random import randint
  2.  
  3. #Tenemos el nombre del archivo
  4. filename = 'texto.txt'
  5. #Abrimos el archivo en modo lectura
  6. f = open(filename, 'r')
  7. #Ponemos el contenido de todo el archivo en data
  8. data = f.read()
  9. #Cerramos el archivo
  10. f.close()
  11.  
  12. #Aqui convertimos el texto en una lista
  13. data = data.split()
  14. #Le añadimos algun dato
  15. data.append(str(randint(1, 10)))
  16.  
  17. #Abrimos el archivo, esto trunca todos los datos que ya teniamos
  18. f = open(filename, 'w')
  19. #Afortunadamente estan guardados en la variable data
  20. for item in data:
  21.     #Escribimos cada elemento de la lista en el archivo
  22.     f.write("%s\n" % item)
  23. #Cerramos el archivo
  24. f.close()

Aquí lo hice sin manejar errores, pero SIEMPRE es recomendable manejar los errores que se puedan presentar.
  #8 (permalink)  
Antiguo 30/06/2010, 23:44
 
Fecha de Ingreso: junio-2010
Mensajes: 13
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Ayuda con una Class y una Lista

Muchas gracias lo implemento y luego te cuento :)
  #9 (permalink)  
Antiguo 01/07/2010, 11:31
 
Fecha de Ingreso: junio-2010
Mensajes: 13
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Ayuda con una Class y una Lista

No me compila me da un error al guardar snfff

Código Python:
Ver original
  1. class Fruta:
  2. pass
  3.  
  4. filename = 'frutas.txt'
  5. f = open(filename, 'w')
  6.  
  7. lista_de_frutas = []
  8.  
  9.  
  10. while True:
  11.  
  12. fruta = Fruta()
  13. fruta.nombre = raw_input("Nombre: ")
  14. fruta.color = raw_input("Color: ")
  15. fruta.peso = raw_input("Peso: ")
  16. lista_de_frutas.append(fruta)
  17.  
  18. s = raw_input("Desea continuar [S/n]")
  19.  
  20. if not s:
  21. continue
  22. elif s[0] == "s" or s[0] == "S":
  23. continue
  24. else:
  25. break
  26.  
  27.  
  28. for i in lista_de_frutas:
  29. f.write(fruta)
  30.  
  31. f.close()

xD
  #10 (permalink)  
Antiguo 01/07/2010, 11:53
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ayuda con una Class y una Lista

1.- Que error te marca?
2.- Puedes indentar tu código?

Solo recuerda que fruta es un objeto y al momento de querer convertir tu objeto a un string debes de definir el método __str__
Código Python:
Ver original
  1. class Fruta:
  2.     def __init__(self, nombre, color, peso):
  3.         self.nombre = nombre
  4.         self.color = color
  5.         self.peso = peso
  6.  
  7.     def __str__(self):
  8.         return "%s %s %s" % (self.nombre, self.color, self.peso)
  9.  
  10. filename = 'texto.txt'
  11. f = open(filename, 'w')
  12.  
  13. lista_de_frutas = []
  14.  
  15. while True:
  16.     nombre = raw_input("Nombre: ")
  17.     color = raw_input("Color: ")
  18.     peso = raw_input("Peso: ")
  19.     fruta = Fruta(nombre, color, peso)
  20.     lista_de_frutas.append(fruta)
  21.  
  22.     s = raw_input("Desea continuar [S/n]: ")
  23.  
  24.     if not s:
  25.         continue
  26.     elif s[0] == 's' or s[0] == 'S':
  27.         continue
  28.     else:
  29.         break
  30.  
  31. for fruta in lista_de_frutas:
  32.     f.write("%s\n" % fruta)
  33. f.close()
Tu ejemplo funcionando

Última edición por razpeitia; 01/07/2010 a las 12:03
  #11 (permalink)  
Antiguo 01/07/2010, 12:17
 
Fecha de Ingreso: junio-2010
Mensajes: 13
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Ayuda con una Class y una Lista

Muchas gracias te pasaste :P
  #12 (permalink)  
Antiguo 01/07/2010, 12:50
 
Fecha de Ingreso: junio-2010
Mensajes: 13
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Ayuda con una Class y una Lista

Mira este es mi trabajo se trata de ingresar calles y al ingresar te pide la calle q esta al norte, sur, este y oeste, bueno eso sera en un futuro jajajaja tiene dos problemas ingreso la primera calle y me la guarda 2 veces y al querer guardar una tercera me tira error de:

Código consola:
Ver original
  1. Traceback (most recent call last):
  2.   File "calles.py", line 86, in <module>
  3.     menu()
  4.   File "calles.py", line 71, in menu
  5.     ingresarCalle()
  6.   File "calles.py", line 31, in ingresarCalle
  7.     guardar()
  8.   File "calles.py", line 83, in guardar
  9.     f.write("%s\n" % calle)
  10. IOError: [Errno 9] Bad file descriptor

Y el otro error al cerrar el programa y volverlo abrir me borra el contenido del archivo, aca dejo el codigo completo:

Código Python:
Ver original
  1. class Calle:
  2.     def __init__(self, nombre, norte, sur, este, oeste, estado):
  3.         self.nombre = nombre
  4.         self.norte = norte
  5.         self.sur = sur
  6.         self.este = este
  7.         self.oeste = oeste
  8.         self.estado = estado
  9.        
  10.     def __str__(self):
  11.         return "%s %s %s %s %s %s " % (self.nombre, self.norte, self.sur, self.este, self.oeste, self.estado)
  12.        
  13.  
  14. filename = 'calles.txt'
  15. f = open(filename, 'w')
  16.  
  17. listaCalles = []
  18.  
  19.  
  20. def ingresarCalle():
  21.    
  22.     nombre      = raw_input("Nombre: ")
  23.     norte       = raw_input("Calle al Norte: ")
  24.     sur         = raw_input("Calle al Sur: ")
  25.     este        = raw_input("Calle al Este: ")
  26.     oeste       = raw_input("Calle al Oeste: ")
  27.     estado      = False
  28.     calle = Calle(nombre, norte, sur, este, oeste, estado)
  29.  
  30.     listaCalles.append(calle)
  31.     guardar()
  32.  
  33. def listarCalles():
  34.    
  35.     print ""
  36.     print "Listado de Calles".center(79, "*")
  37.  
  38.     for calle in listaCalles:
  39.         print "Nombre de la Calle: %s\nCalle al Norte: %s\nCalle al Sur: %s" % (calle.nombre, calle.norte, calle.sur)
  40.         print "Calle al Este: %s\nCalle al Oeste: %s" % (calle.este, calle.oeste)
  41.        
  42.         if calle.estado == True:
  43.             print "Calle visitada"
  44.         else:
  45.             print "Calle sin visitar"
  46.        
  47.         print ""
  48.  
  49. def buscarCalle():
  50.     buscar = raw_input("Ingrese el nombre de la calle a buscar: ")
  51.     for nombre in listaCalles:
  52.         if buscar == nombre.nombre:
  53.             print ""
  54.             listarCalles()
  55.         else:
  56.             print "La Calle no existe\n"
  57.  
  58.  
  59. def menu():
  60.  
  61.     while True:
  62.         print 'MENU'.center(32, '=')
  63.         print '1.- Ingresar una Calle'
  64.         print '2.- Buscar Calle'
  65.         print '3.- Mostrar todas las Calles'
  66.         print '6.- Salir'
  67.        
  68.         op = input('Ingrese una Opcion: ')
  69.        
  70.         if op == 1:
  71.             ingresarCalle()
  72.         if op == 2:
  73.             buscarCalle()
  74.         if op == 3:
  75.             listarCalles()
  76.         if op == 6:
  77.             f.close()
  78.             break
  79.  
  80. def guardar():
  81.  
  82.     for calle in listaCalles:
  83.         f.write("%s\n" % calle)
  84.        
  85.        
  86. menu()

Última edición por programadornoob; 01/07/2010 a las 12:57
  #13 (permalink)  
Antiguo 01/07/2010, 14:22
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ayuda con una Class y una Lista

Es por que el modo 'w' borra todo lo que tenias en el archivo si buscas añadir al archivo entonces usa 'a+'

Otra cosa a mi no me apareció ese error, seguramente son los permisos que tienes para escribir en el archivo.
  #14 (permalink)  
Antiguo 01/07/2010, 14:48
 
Fecha de Ingreso: junio-2010
Mensajes: 13
Antigüedad: 14 años, 5 meses
Puntos: 0
De acuerdo Respuesta: Ayuda con una Class y una Lista

Cita:
Iniciado por razpeitia Ver Mensaje
Es por que el modo 'w' borra todo lo que tenias en el archivo si buscas añadir al archivo entonces usa 'a+'

Otra cosa a mi no me apareció ese error, seguramente son los permisos que tienes para escribir en el archivo.
mmmmm bueno con el cambio a "a+" no se borra el contenido, pero se sigue duplicando el contenido a medida que ingreso otra calle, creo el problema es la funsion guardar y lo otro no carga el contenido al volver a ejecutar el programa, ya solucionando esos problemas puntuales me voy por un tubo, muchas gracias por tu ayuda, saludos.
  #15 (permalink)  
Antiguo 02/07/2010, 08:03
 
Fecha de Ingreso: junio-2010
Mensajes: 13
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Ayuda con una Class y una Lista

Arregle el problema de guardar, solo me falta el de recuperar los datos, el problema es que me recupera solo la primera linea snff...

Ahora para guardar uso Serialización gracias a las guías que me recomendaste :P aca te dejo el codigo funciona 100% ahora estoy implementando lo de recuperar voy "recuperar 1 - yo 0" jajajaja

Código Python:
Ver original
  1. try:  
  2.     import cPickle as pickle  
  3. except ImportError:  
  4.     import pickle
  5.    
  6.    
  7. class Calle:
  8.     def __init__(self, nombre, norte, sur, este, oeste, estado):
  9.         self.nombre = nombre
  10.         self.norte = norte
  11.         self.sur = sur
  12.         self.este = este
  13.         self.oeste = oeste
  14.         self.estado = estado
  15.        
  16.     def __str__(self):
  17.         return "%s %s %s %s %s %s " % (self.nombre, self.norte, self.sur, self.este, self.oeste, self.estado)
  18.        
  19.  
  20. archivo = file("calles.dat", "a+")
  21.  
  22. listaCalles = []
  23.  
  24.  
  25. def ingresarCalle():
  26.    
  27.     nombre      = raw_input("Nombre: ")
  28.     norte       = raw_input("Calle al Norte: ")
  29.     sur         = raw_input("Calle al Sur: ")
  30.     este        = raw_input("Calle al Este: ")
  31.     oeste       = raw_input("Calle al Oeste: ")
  32.     estado      = False
  33.     calle = Calle(nombre, norte, sur, este, oeste, estado)
  34.  
  35.     listaCalles.append(calle)
  36.     pickle.dump(calle, archivo)
  37.  
  38. def listarCalles():
  39.    
  40.     print ""
  41.     print "Listado de Calles".center(79, "*")
  42.  
  43.     for calle in listaCalles:
  44.         print "Nombre de la Calle: %s\nCalle al Norte: %s\nCalle al Sur: %s" % (calle.nombre, calle.norte, calle.sur)
  45.         print "Calle al Este: %s\nCalle al Oeste: %s" % (calle.este, calle.oeste)
  46.        
  47.         if calle.estado == True:
  48.             print "Calle visitada"
  49.         else:
  50.             print "Calle sin visitar"
  51.        
  52.         print ""
  53.  
  54. def buscarCalle():
  55.     buscar = raw_input("Ingrese el nombre de la calle a buscar: ")
  56.     for nombre in listaCalles:
  57.         if buscar == nombre.nombre:
  58.             print ""
  59.             print "Resultado".center(79, "*")
  60.             print "Nombre de la Calle: %s\nCalle al Norte: %s\nCalle al Sur: %s" % (nombre.nombre, nombre.norte, nombre.sur)
  61.             print "Calle al Este: %s\nCalle al Oeste: %s" % (nombre.este, nombre.oeste)
  62.             print ""
  63.            
  64.         else:
  65.             print ""
  66.             print "Resultado".center(79, "*")
  67.             print "La Calle no existe\n"
  68.             print ""
  69.  
  70.  
  71. def menu():
  72.  
  73.     while True:
  74.         print 'MENU'.center(32, '=')
  75.         print '1.- Ingresar una Calle'
  76.         print '2.- Buscar Calle'
  77.         print '3.- Mostrar todas las Calles'
  78.         print '6.- Salir'
  79.        
  80.         op = input('Ingrese una Opcion: ')
  81.        
  82.         if op == 1:
  83.             ingresarCalle()
  84.         if op == 2:
  85.             buscarCalle()
  86.         if op == 3:
  87.             listarCalles()
  88.         if op == 6:
  89.             archivo.close()
  90.             break
  91.  
  92.        
  93. menu()

saludos :P

Última edición por programadornoob; 02/07/2010 a las 08:36
  #16 (permalink)  
Antiguo 09/07/2010, 09:29
 
Fecha de Ingreso: junio-2010
Mensajes: 13
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Ayuda con una Class y una Lista

Bueno retomando mi trabajo después de terminar otras tareas no puedo recuperar el contenido del archivo solo en eso estoy topando, espero me puedas guiar ya que necesito terminar este trabajo si o si este fin de semana snfff ya no teng vida jajajaja xD

Código Python:
Ver original
  1. try:  
  2.     import cPickle as pickle  
  3. except ImportError:  
  4.     import pickle
  5.  
  6.  
  7. class Fruta:
  8.     def __init__(self, nombre, color, peso):
  9.         self.nombre = nombre
  10.         self.color = color
  11.         self.peso = peso
  12.  
  13.     def __str__(self):
  14.         return "%s %s %s" % (self.nombre, self.color, self.peso)
  15.  
  16. archivo = file("frutas2.dat", "a+") #aca abre o crea el archivo si no existe
  17.  
  18. lista_de_frutas = []    #crea la lista
  19.  
  20. #====================================================================================
  21. for fruta in lista_de_frutas:
  22.     pickle.load(archivo)    #se supone que carga el archivo si es que tiene contenido
  23. archivo.close()
  24. #====================================================================================
  25.  
  26. #====================================================================================
  27. print
  28. print "Lista de frutas".center(79, "#") #Muestra si tiene contenido recuperado
  29. for fruta in lista_de_frutas:
  30.     print "Nombre: %s\nColor: %s\nPeso: %s" % (fruta.nombre, fruta.color, fruta.peso)
  31.     print ""
  32. print "".center(79, "#")
  33. print
  34. #====================================================================================
  35.  
  36. while True:
  37.     nombre = raw_input("Nombre: ")
  38.     color = raw_input("Color: ")
  39.     peso = raw_input("Peso: ")
  40.     fruta = Fruta(nombre, color, peso)
  41.    
  42.     lista_de_frutas.append(fruta)
  43.    
  44.     s = raw_input("Desea continuar [S/n]: ")
  45.  
  46.     if not s:
  47.         continue
  48.     elif s[0] == 's' or s[0] == 'S':
  49.         continue
  50.     else:
  51.         break
  52.  
  53. for fruta in lista_de_frutas:
  54.     pickle.dump(fruta, archivo)
  55. archivo.close()
  56.  
  57.  
  58. print
  59. print "Lista de frutas".center(79, "#")
  60. for fruta in lista_de_frutas:
  61.     print "Nombre: %s\nColor: %s\nPeso: %s" % (fruta.nombre, fruta.color, fruta.peso)
  62.     print ""

Saludos :P
  #17 (permalink)  
Antiguo 10/07/2010, 13:48
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ayuda con una Class y una Lista

Código Python:
Ver original
  1. class Fruta:
  2.     def __init__(self, nombre, peso, precio):
  3.         self.nombre = nombre
  4.         self.peso = peso
  5.         self.precio = precio
  6.  
  7.     def __str__(self):
  8.         return "%s %s %s\n" % (self.nombre, self.peso, self.precio)
  9.    
  10. def load(filename):
  11.     f = None
  12.     try:
  13.         f = open(filename, "r")
  14.         data = f.read()
  15.     except IOError, e:
  16.         pass
  17.     finally:
  18.         if f:
  19.             f.close()
  20.             data = filter(bool, data.split("\n"))
  21.             return [Fruta(*i.split()) for i in data]
  22.         else:
  23.             return []
  24.  
  25. def do_something(data):
  26.     while True:
  27.         name = raw_input("Nombre: ")
  28.         weight = raw_input("Peso: ")
  29.         price = raw_input("Precio: ")
  30.         fruta = Fruta(name, weight, price)
  31.         data.append(fruta)
  32.  
  33.         op = raw_input("Desea continuar? [S/n]")
  34.         if not (not op or op[0] == 's' or op[0] == 'S'):
  35.             break
  36.  
  37. def save(filename, data):
  38.     f = None
  39.     try:
  40.         f = open(filename, "w")
  41.         for item in data:
  42.             f.write(str(item))
  43.     except IOError:
  44.         pass
  45.     finally:
  46.         if f:
  47.             f.close()
  48.         else:
  49.             print "No se pudo guardar"
  50.  
  51. data = load("input.txt")
  52. for i in data:
  53.     print i
  54. do_something(data)
  55. save("input.txt", data)
  #18 (permalink)  
Antiguo 10/07/2010, 13:52
 
Fecha de Ingreso: junio-2010
Mensajes: 13
Antigüedad: 14 años, 5 meses
Puntos: 0
Sonrisa Respuesta: Ayuda con una Class y una Lista

Cita:
Iniciado por razpeitia Ver Mensaje
Código Python:
Ver original
  1. class Fruta:
  2.     def __init__(self, nombre, peso, precio):
  3.         self.nombre = nombre
  4.         self.peso = peso
  5.         self.precio = precio
  6.  
  7.     def __str__(self):
  8.         return "%s %s %s\n" % (self.nombre, self.peso, self.precio)
  9.    
  10. def load(filename):
  11.     f = None
  12.     try:
  13.         f = open(filename, "r")
  14.         data = f.read()
  15.     except IOError, e:
  16.         pass
  17.     finally:
  18.         if f:
  19.             f.close()
  20.             data = filter(bool, data.split("\n"))
  21.             return [Fruta(*i.split()) for i in data]
  22.         else:
  23.             return []
  24.  
  25. def do_something(data):
  26.     while True:
  27.         name = raw_input("Nombre: ")
  28.         weight = raw_input("Peso: ")
  29.         price = raw_input("Precio: ")
  30.         fruta = Fruta(name, weight, price)
  31.         data.append(fruta)
  32.  
  33.         op = raw_input("Desea continuar? [S/n]")
  34.         if not (not op or op[0] == 's' or op[0] == 'S'):
  35.             break
  36.  
  37. def save(filename, data):
  38.     f = None
  39.     try:
  40.         f = open(filename, "w")
  41.         for item in data:
  42.             f.write(str(item))
  43.     except IOError:
  44.         pass
  45.     finally:
  46.         if f:
  47.             f.close()
  48.         else:
  49.             print "No se pudo guardar"
  50.  
  51. data = load("input.txt")
  52. for i in data:
  53.     print i
  54. do_something(data)
  55. save("input.txt", data)
Muchas gracias por tu ayuda no sabes de la que me salvaste

Etiquetas: class, lista
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:07.