Упражнение в адресной книге. Я бы хотел, чтобы оно разбивало каждую строку списка, но оно занимает только последнюю - PullRequest
0 голосов
/ 05 января 2020

В качестве упражнения я должен реализовать адресную книгу, которая должна уметь читать содержимое файла, содержащего контакты, и выполнять CRUD (создание, чтение, обновление, удаление). У меня проблемы с адресной книгой, в частности с определением метода init . Я думал, что в этом методе я должен поместить атрибуты (в данном случае их нет) и функцию basi c, которую должен выполнять класс, чтобы выполнить требуемые функции (CRUD). Контакты находятся в текстовом файле, поэтому класс должен прочитать файл и скопировать все в списке, чтобы иметь возможность изменять его. Поэтому я подумал об этом коде, но если я распечатываю список контактов, он возвращает только последнюю строку. Кажется, цикл for не работает. Я не могу найти ошибку.

class Contact:  
    def __init__(self,name,surname,mail):
        self.name=name
        self.surname=surname
        self.mail=mail

    def __repr__(self):
        return"{},{},{}".format(self.name,self.surname,self.mail)

class AddressBook:    
    def __init__(self):
        File= open("contacts.txt").read()
        self.contacts=[]
        lines=File.splitlines()
        for line in lines:
            contact_section=line.split(',') 
        self.contacts.append(Contact(contact_section[0],contact_section[1],contact_section[2]))

1 Ответ

1 голос
/ 05 января 2020

Проблема с AddressBook заключается в том, что вы перебираете строки, но добавляете в список только последнюю.

def __init__(self):
    File= open("contacts.txt").read()
    self.contacts=[]
    lines=File.splitlines()
    for line in lines:
        contact_section=line.split(',') 
    # CHECK THE INDENTATION IS NOT INSIDE THE FOR LOOP
    self.contacts.append(Contact(contact_section[0],contact_section[1],contact_section[2]))

, просто поместите эту строку

self.contacts.append(Contact(contact_section[0],contact_section[1],contact_section[2]))

внутри для l oop вот так

def __init__(self):
    File= open("contacts.txt").read()
    self.contacts=[]
    lines=File.splitlines()
    for line in lines:
        contact_section=line.split(',')
        self.contacts.append(
            Contact(contact_section[0],contact_section[1],contact_section[2])
        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...