Создание классов Book и Library по заданному использованию

Book хранит данные и форматирует info, Library управляет коллекцией и поиском. Правило удаления по названию задайте явно: ниже удаляется первое совпадение.

Короткий ответ

Что ответить на собеседовании

Book хранит данные и форматирует info, Library управляет коллекцией и поиском. Правило удаления по названию задайте явно: ниже удаляется первое совпадение.

Подробный разбор

Ответ с пояснениями

Условие

На основе приведённого примера реализуйте два класса — Book и Library — так, чтобы скрипт корректно выполнялся.

library = Library()

book1 = Book("1984", "George Orwell", 1949)
book2 = Book("To Kill a Mockingbird", "Harper Lee", 1960)
book3 = Book("Brave New World", "Aldous Huxley", 1932)

library.add_book(book1)
library.add_book(book2)
library.add_book(book3)

print("Все книги в библиотеке:")
library.show_books()

print("\nКниги автора 'George Orwell':")
orwell_books = library.find_by_author("George Orwell")
for book in orwell_books:
    print(book.info())

library.remove_book("1984")

print("\nПосле удаления '1984':")
library.show_books()

Ответ

Book хранит данные и форматирует info, Library управляет коллекцией и поиском. Правило удаления по названию задайте явно: ниже удаляется первое совпадение.

from dataclasses import dataclass

@dataclass
class Book:
    title: str
    author: str
    year: int

    def info(self):
        return f'{self.title} — {self.author}, {self.year}'

class Library:
    def __init__(self):
        self.books = []

    def add_book(self, book):
        self.books.append(book)

    def show_books(self):
        for book in self.books:
            print(book.info())

    def find_by_author(self, author):
        return [book for book in self.books if book.author == author]

    def remove_book(self, title):
        for index, book in enumerate(self.books):
            if book.title == title:
                return self.books.pop(index)
        return None

Сопоставление автора и названия регистрозависимое. В реальной библиотеке название не уникально: для точного удаления лучше отдельный идентификатор книги или экземпляра.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее