Python - Opcion eliminar contacto de agenda.csv

 
Vista:
sin imagen de perfil
Val: 4
Ha disminuido su posición en 21 puestos en Python (en relación al último mes)
Gráfica de Python

Opcion eliminar contacto de agenda.csv

Publicado por Kenin (2 intervenciones) el 04/12/2020 12:20:13
Buenas, estoy haciendo una agenda de teléfonos. Se me pide que en el menú me de la opción de borrar a 1 contacto. No consigo que me salga bien. Soy novel, así que puede que sea un fallo garrafal muy obvio y no me estoy dando cuenta:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import csv
import re
import itertools
 
 
class Contacto:
    nuevoId=itertools.count()
    def __init__(self,nombre,apellido,movil):
        self.codigo=next(self.nuevoId)
        self.nombre=nombre
        self.apellido=apellido
        self.movil=movil
class Agenda:
    def __init__(self):
        self.contactos=[]
    def añadir(self,nombre,apellido,movil):
        contacto=Contacto(nombre,apellido,movil)
        self.contactos.append(contacto)
    def mostrarTodos(self):
        for contacto in self.contactos:
            self.imprimeContacto(contacto)
    def buscar(self,textoBuscar):
        encontrado=0
        for contacto in self.contactos:
            if (re.findall(textoBuscar,contacto.nombre)) or (re.findall(textoBuscar,contacto.apellido)):
                self.imprimeContacto(contacto)
                encontrado=encontrado+1
        if encontrado==0:
            self.noEncontrado()
    def grabar(self):
        with open('agenda.csv','w') as fichero:
            escribir=csv.writer(fichero)
            escribir.writerow(('codigo', 'nombre', 'apellido', 'movil'))
            for contacto in self.contactos:
                escribir.writerow((contacto.codigo,contacto.nombre,contacto.apellido,contacto.movil))
    def imprimeContacto(self,contacto):
        print()
        print('-----------------------------------')
        print('Codigo: {}'.format(contacto.codigo))
        print('Nombre:{}'.format(contacto.nombre))
        print('Apellido:{}'.format(contacto.apellido))
        print('Movil:{}'.format(contacto.movil))
        print('-----------------------------------')
    def noEncontrado(self):
        print()
        print('-----------------------------------')
        print('Contacto no encontrado')
        print('-----------------------------------')
def ejecutar():
    global movil
    agenda=Agenda()
    try:
        with open('agenda.csv','r') as fichero:
            lector=csv.DictReader(fichero,delimiter=',')
            for fila in lector:
                agenda.añadir(fila['nombre'],fila['apellido'],fila['movil'])
     while True:
        Menu=str(input("""
        1. Mostrar lista de contactos \n
        2. Buscar contacto \n
        3. Añadir contacto \n
        4. Eliminar contacto \n
        5. Salir \n
        Elija una opción escribiendo el número:
        """))
        if Menu=='1':
            agenda.mostrarTodos()
        elif Menu=='2':
            texto=str(input('Escribe el nombre o apellido del contacto: '))
            agenda.buscar(texto.capitalize())
        elif Menu=='3':
            nombre=str(input('Escribe el nombre: '))
            apellido=str(input('Escribe el apellido: '))
            movil=str(input('Escribe el movil: '))
            agenda.añadir(nombre,apellido,movil)
            agenda.grabar()
        elif Menu=='4':
            texto=str(input('Escriba codigo de contacto: '))
            for contacto in self.contactos:
                if contacto.codigo==codigo
                del self.contactos[codigo]
            agenda.grabar()
        elif Menu=='5':
            print('Ha finalizado')
            agenda.grabar()
            break
        else:
            print('Debe marcar una opcion del Menu')
if __name__=='__main__':
    ejecutar()
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder