Помогите решить задачку по питону!

Рейтинг: -2Ответов: 1Опубликовано: 21.03.2023

Я работаю секретарём, и мне постоянно приходят различные документы. Я должен быть очень внимателен, чтобы не потерять ни один документ. Каталог документов хранится в следующем виде:

documents = [
    {"type": "passport", "number": "2207 876234", "name": "Василий Гупкин"},
    {"type": "invoice", "number": "11-2", "name": "Геннадий Покемонов"},
    {"type": "insurance", "number": "10006", "name": "Аристарх Павлов"},
    {"type": "driver license", "number": "5455 028765", "name": "Василий Иванов"},
]

Перечень полок, на которых находятся документы, хранится в следующем виде:

directories = {
    '1': ['2207 876234', '11-2', '5455 028765'],
    '2': ['10006'],
    '3': []
}

Необходимо реализовать следующие функции.

get_name — функция. Принимает номер документа и выводит имя человека, которому он принадлежит. Если такого документа не существует вывести “Документ не найден”.
get_directory — функция. Принимает номер документа и выводит номер полки, на которой он находится. Если такой документ не найден на полках вывести “Полки с таким документом не найдено”.
add — функция, которая добавит новый документ в каталог и перечень полок.

В результате корректного выполнения задания будет выведен следующий результат:

Аристарх Павлов
1
Документ не найден
3
Александр Пушкин
Полки с таким документом не найдено

Уже битый час сижу и просто не понимаю, что делаю не так.

Мой код:

def get_name(doc_number):
    for numbers in documents:
        if numbers['number'] == doc_number:
            return numbers['name']
    return 'Документ не найден'

def get_directory(doc_number):
    for shelf_number in directories:
        if doc_number in directories.items():
            return shelf_number(directories.items())
        return 'Полки с таким документом не найдено'

def add(document_type, number, name, shelf_number: str):
    d = {"title": document_type, "number": number, "name": name}
    documents.append(d)
    if shelf_number in directories.keys():
      directories[str(shelf_number)].append(number)
      return 'Документ добавлен'
    else:
      return 'Такой полки не существует'

И то, что выводит: Документ добавлен
Аристарх Павлов
Полки с таким документом не найдено
Документ не найден
Полки с таким документом не найдено
Александр Пушкин
Полки с таким документом не найдено

Ответы

▲ 1
documents = [
    {"type": "passport", "number": "2207 876234", "name": "Василий Гупкин"},
    {"type": "invoice", "number": "11-2", "name": "Геннадий Покемонов"},
    {"type": "insurance", "number": "10006", "name": "Аристарх Павлов"},
    {"type": "driver license", "number": "5455 028765", "name": "Василий Иванов"},
]
directories = {
    '1': ['2207 876234', '11-2', '5455 028765'],
    '2': ['10006'],
    '3': []
}


def get_name(doc_number):
    for numbers in documents:
        if numbers['number'] == doc_number:
            return numbers['name']
    return 'Документ не найден'

def get_directory(doc_number):
    for shelf_number, doc_numbers in directories.items():
        if doc_number in doc_numbers:
            return shelf_number
    return 'Полки с таким документом не найдено'

def add(document_type, number, name, shelf_number: str):
    d = {"type": document_type, "number": number, "name": name}
    documents.append(d)
    if shelf_number in directories.keys():
        directories[str(shelf_number)].append(number)
        return 'Документ добавлен'
    else:
        return 'Такой полки не существует'

add("driver","111","Ариста",'10006' )
print(get_name("111"))
print(get_directory('10006'))