/
partamonova
/
test
Обзор
Документация
Войти
/
partamonova
/
test
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
function.py
111 строк
4 KB
Polina Artamonova
Function
14 май 2026, 10:45
14 май 2026, 10:45
bd2c51a
Код
Авторство
О чём код?
books = [ {'genre': 'поэзия', 'number': '978-5-1000-1234-7', 'title': 'Евгений Онегин', 'author': 'Александр Пушкин'}, {'genre': 'фэнтези', 'number': '88006', 'title': 'Властелин колец', 'author': 'Джон Р. Р. Толкин'}, {'genre': 'детектив', 'number': 'D-1122', 'title': 'Безмолвный свидетель', 'author': 'Агата Кристи'} ] directories = { '1': ['978-5-1000-1234-7', '88006'], '2': ['D-1122'], '3': [] } def find_book_by_number(books_list, number): for book in books_list: if book['number'] == number: return book return None def find_shelf_by_book_title(books_list, directories_dict, title): book_number = None for book in books_list: if book['title'] == title: book_number = book['number'] break if not book_number: return None for shelf, numbers in directories_dict.items(): if book_number in numbers: return shelf return None def get_shelf_for_book_number(directories_dict, number): for shelf, numbers in directories_dict.items(): if number in numbers: return shelf return None def show_all_books(books_list, directories_dict): for book in books_list: shelf = get_shelf_for_book_number(directories_dict, book['number']) print(f"№: {book['number']}, жанр: {book['genre']}, название: {book['title']}, автор: {book['author']}, полка хранения: {shelf}") def add_shelf(shelf_number): global directories if shelf_number in directories: shelves = sorted(directories.keys()) return f"Такая полка уже существует. Текущий перечень полок: {', '.join(shelves)}." else: directories.setdefault(shelf_number, []) shelves = sorted(directories.keys()) return f"Полка добавлена. Текущий перечень полок: {', '.join(shelves)}." def delete_shelf(shelf_number): global directories if shelf_number not in directories: shelves = sorted(directories.keys()) return f"Такой полки не существует. Текущий перечень полок: {', '.join(shelves)}." if directories[shelf_number]: shelves = sorted(directories.keys()) return f"На полке есть книги, удалите их перед удалением полки. Текущий перечень полок: {', '.join(shelves)}." else: del directories[shelf_number] shelves = sorted(directories.keys()) return f"Полка удалена. Текущий перечень полок: {', '.join(shelves)}." def main(): global directories print("Добро пожаловать в библиотечный помощник!") print("Доступные команды: book_info, shelf, all, add_shelf, del_shelf, q - выход.") while True: command = input("\nВведите команду: ").strip().lower() match command: case "q": print("До свидания!") break case "book_info": number = input("Введите номер книги: ").strip() book = find_book_by_number(books, number) if book: print(f"Название книги: {book['title']}\nАвтор: {book['author']}") else: print("Книга не найдена в базе") case "shelf": title = input("Введите название книги: ").strip() shelf = find_shelf_by_book_title(books, directories, title) if shelf: print(f"Книга хранится на полке: {shelf}") else: print("Книга не найдена в базе") case "all": show_all_books(books, directories) case "add_shelf": shelf_num = input("Введите номер полки: ").strip() print(add_shelf(shelf_num)) case "del_shelf": shelf_num = input("Введите номер полки: ").strip() print(delete_shelf(shelf_num)) case _: print("Неизвестная команда. Попробуйте снова.") if __name__ == "__main__": main()