Найти - Пользователи
Полная версия: Передать аргумент в class
Начало » Python для новичков » Передать аргумент в class
1
oxeed
Интересует, как можно имя, фамилию, телефон вводить по запросу Input и далее пользоваться, как аргументом класса.

class Phone_Book:
    def new_contact(self, name, surname, tel):
        self.name = name
        self.surname = surname
        self.tel = tel
        print 'Person:', self.name, self.surname
        print 'Telephone number: ', self.tel
if __name__ == '__main__':
    new_contact = Phone_Book()
    new_contact.new_contact('Vasya', 'Pupkin', 295598789)
Romissevd
if __name__ == __main__:
    new_contact = Phone_Book()
    name = input("Enter name:")
    surname = input("Enter surname:")
    tel = int(input("Enter tel:"))
    new_contact.new_contact(name, surname, tel)
oxeed
Продолжаю учиться на основе телефонной книги. Вопрос возник в записи значений в текстовой файл.
Создаю список с именем, фамилией, телефоном и записываю в файл. Как можно сделать так, чтобы следующий контакт( имя, фамилия, телефон) записывались в новой строке.

class PhoneBook:
    def new_contact(self, name, surname, tel):
        self.name = name
        self. surname = surname
        self.tel = tel
        print 'Person:', name, surname
        print'Telephone number: ', tel
    def contact_write(self, contacts):
        self.contacts = contacts
        address_book = open('address_book.txt', 'a')
        for item in contacts:                   
            address_book.write('%s ' % item)
        address_book.close()
        print'Contact saved'
if __name__ == '__main__':
    new_contact = PhoneBook()
    while True:
        name = str(input('Name: '))                
        surname = str(input('Surname: '))
        tel = str(input('Telephone number: '))
        contacts = [name, surname, tel]
        new_contact.new_contact(name, surname, tel)
        new_contact.contact_write(contacts)
terabayt
address_book.write('%s\n' % item)
oxeed
Возможно неправильно задал вопрос.
terabayt
address_book.write('%s\n' % item)
В данном случае вывод записи в файл будет такой:

Имя
Фамилия
Телефон
Имя1
Фамилия1
Телефон1


А я хочу добиться вывода:

Имя Фамилия Телефон
Имя1 Фамилия1 Телефон1
terabayt
def contact_write(self, contacts):
    with open('address_book.txt', 'a') as address_book:
        address_book.write('%s\n' % ' '.join(contacts))
    print'Contact saved'
oxeed
Столкнулся со следубщей задачей. Поиск в телефонной книге.
Реализовал это, таким образом:
def search_name(name):
    name = name
    with open('address_book.txt', 'r') as address_book:
            for line in address_book:
                if name in line:
                    print(line)
               else:
                    print("Don't find")
if __name__ == '__main__':
    name = str(input('Input name: '))
    search_name(name)

Как сделать, так чтобы, выдача текста ('Dont find') происходила только один раз, а не на каждой строке.
botinag
def search_name(name):
    with open('address_book.txt', 'r') as address_book:
        lines = [line for line in address_book.readlines() if name in line]
        if lines:
            for line in lines:
                print line
        else:
            print("Don't find")
 
if __name__ == '__main__':
    name = str(input('Input name: '))
    search_name(name)
oxeed
botinag
lines = [line for line in address_book.readlines() if name in line]

Можете объяснить вот эту строчку? Как она работает?
botinag
lines = [line for line in address_book.readlines() if name in line]
=
lines = []
for line in address_book:
    if name in line:
        lines.append(line)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB