una libreta de direcciones en python

Iniciado por s1d4rt4, 30 Agosto 2006, 03:22 AM

0 Miembros y 1 Visitante están viendo este tema.

s1d4rt4

emmmm, eso,me leí algunos manuales (como el de la uji y el libro byte of python), y decidí escribir una libreta de direcciones de email para probar si había digerido el contenido o no... el programa funciona, no es gran cosa pero cumple su cometido.

Se los posteo para saber k opinan y si la forma en que lo escribí es la correcta o no, pork se me ocurren por lo menos 3 o 4 formas distintas de escribirlo

#!/usr/bin/python
# -*- coding: iso-8859-15 -*-

import cPickle as p

class AddressBook:

        email = {}
        inputt = ''
        archivo = 'ab.data'

        def __init__(self): # decidiendo si es necesario cargar o crear ab.data
                try:
                        f = file(AddressBook.archivo)
                        AddressBook.email = p.load(f)
                        f.close()
                except:
                        f = file(AddressBook.archivo,'w')
                        f.close()

                print '---------------------------------------'
                print ' AddressBook 1.0'
                print '---------------------------------------'

        def menu(self):
                while not ('a'<= AddressBook.inputt <='f'):
                        print 'a) Agregar contacto'
                        print 'b) Modificar Contacto'
                        print 'c) Eliminar contacto'
                        print 'd) Buscar contacto'
                        print 'e) Mostrar todos'
                        print 'f) Salir'
           
                        AddressBook.inputt = raw_input('ingrese una opción: ')
           
                        if not ('a'<= AddressBook.inputt <='f'):
                                print '---------------------------------------'
                                print 'La opción "%s" no es correcta' % AddressBook.inputt
                                print '---------------------------------------'

        def add(self): # agregar contacto
                contact = raw_input('Ingrese el nombre del contacto: ')
                email = raw_input('Ingrese email: ')
                AddressBook.email[contact] = email

                print '---------------------------------------'
                print '"%s" ha sido agregado(a)' % contact
                print '---------------------------------------'

                AddressBook.inputt = ''
       
        def modify(self): # modificar contacto
                contact = raw_input('Ingrese el contacto que desea modificar: ')

                if contact in AddressBook.email:
                        email = raw_input('ingrese el nuevo email: ')
                        AddressBook.email[contact] = email
                        print '---------------------------------------'
                        print '"%s" ha sido actualizado(a)' % contact
                        print '---------------------------------------'
                else:
                        print '---------------------------------------'
                        print '"%s" no existe' % contact
                        print '---------------------------------------'

                AddressBook.inputt = ''
       
        def delete(self): # eliminar contacto
                contact = raw_input('Ingrese el contacto que desea eliminar: ')

                if contact in AddressBook.email:
                        del AddressBook.email[contact]
                        print '---------------------------------------'
                        print '"%s" ha sido eliminado(a)' % contact
                        print '---------------------------------------'
                else:
                        print '---------------------------------------'
                        print '"%s" no existe(a)' % contact
                        print '---------------------------------------'
           
                AddressBook.inputt = ''

        def search(self): # buscar contacto
                contact = raw_input('Ingrese el nombre del contacto: ')

                if contact in AddressBook.email:
                        print '---------------------------------------'
                        print 'El email de %s es %s' % (contact, AddressBook.email[contact])
                        print '---------------------------------------'

                else:
                        print '---------------------------------------'
                        print '"%s" no existe' % contact
                        print '---------------------------------------'
           
                AddressBook.inputt = ''

        def view_all(self): # mostrar todos los contactos
                print '---------------------------------------'
                for name, email in AddressBook.email.items():
                        print 'El email de %s es %s' % (name,email)
                        print '---------------------------------------'


                AddressBook.inputt = ''

# programa principal
a = AddressBook()
a.menu()

while a.inputt != 'f':
        if a.inputt == 'a':
                a.add()
                a.menu()
   
        elif a.inputt == 'b':
                a.modify()
                a.menu()
   
        elif a.inputt == 'c':
                a.delete()
                a.menu()

        elif a.inputt == 'd':
                a.search()
                a.menu()
       
        elif a.inputt == 'e':
                a.view_all()
                a.menu()

if a.inputt == 'f': # guardar los emails en un archivo
        f = file(a.archivo,'w')
        p.dump(a.email,f)
        f.close()


eso pues =) espero sus comentarios... saludos!

sirdarckcat

pues esta bien.. incluso funciona xD, podrias agregarle una opcion de agrupar en "amigos" "trabajo" etc.. pero
esta bien :P

Saludos!!

s1d4rt4

hahaha xD si lo habia pensado (o leído la sugerencia de byte of python), pero me da la impresión que quedaría muy cargado y poco intuitivo para un programa de consola

Division-x



mu bueno y mu bonito, enhorabuena.

S4lu2!!!

T1g3r

quedo muy bueno... felizitaciones. Tal vez podrias ponerle para que te pida el telefono y el fax :P