Пользователь по команде "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("Документ не найден в базе")
Тогда фразы "Документ не найден в базе" при переборе не будут вылезать