Пользователь по команде "p" может узнать владельца документа по его номеру

Дано:

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

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

Мой код:

def p():
    num = input("Введите номер документа:")
    for dic in documents:
        for key,value in dic.items():
            if key == "number" and value == num:
                print(dic["name"])
            elif key == "number" and value != num:
                print("Документ не найден в базе")
                                
p()

Выводит:

Введите номер документа:10006
Документ не найден в базе
Документ не найден в базе
Аристарх Павлов

Как сделать, чтоб выводило только имя пользователя, либо (если нет такого номера) только фразу "Документ не найден в базе"


Ответы (4 шт):

Автор решения: gil9red

Попробуйте:

def p():
    num = input("Введите номер документа:")
    for dic in documents:
        found = False

        for key, value in dic.items():
            if key == "number" and value == num:
                print(dic["name"])
                found = True
                break

        if not found:
            print("Документ не найден в базе")
                                
p()
→ Ссылка
Автор решения: R. Key

Будет работать и с несколькими документами на 1 персону

def p():
    found = False
    num = input("Введите номер документа:")
    for dic in documents:
        if "number" in dic.keys() and dic["number"] == num:
            print(dic["name"])
            found = True

    if not found:
        print("Документ не найден в базе")

p()
→ Ссылка
Автор решения: Виктор

Если номер документа в базе ТОЛЬКО один раз встречается

def p():
    num = input("Введите номер документа:")
    for dic in documents:
        if "number" in dic.keys() and dic["number"] == num:
            print(dic["name"])
            break
    else:
        print("Документ не найден в базе")                                
→ Ссылка
Автор решения: Максим

Выведите последние две строчки из цикла:

elif key == "number" and value != num:
 print("Документ не найден в базе")

Тогда фразы "Документ не найден в базе" при переборе не будут вылезать

→ Ссылка