Мои функции ввода поиска работают, но он печатает только информацию последнего человека в списке диктов - PullRequest
0 голосов
/ 01 февраля 2020

Я новичок в python, и мне нужна помощь. Я делаю список сотрудников. Мой список словарей:

person_infos = [ {'name': 'John Doe', 'age': '46', 'job position': 'Chair Builder', 'pay per hour': '14.96','date hired': '2/26/19'},

  {'name': 'Phillip Waltertower', 'age': '19', 'job position': 'Sign Holder', 'pay per hour': '10','date hired': '5/9/19'},

  {'name': 'Karen Johnson', 'age': '40', 'job position': 'Manager', 'pay per hour': '100','date hired': '9/10/01'},

  {'name': 'Linda Bledsoe', 'age': '60', 'job position': 'CEO', 'pay per hour': '700', 'date hired': '8/24/99'},

  {'name': 'Beto Aretz', 'age': '22', 'job position': 'Social Media Manager', 'pay per hour': '49','date hired': '2/18/12'}]

, а мой «поиск по списку диктов» - это то, как программа должна печатать правильный словарь на основе имени, введенного пользователем:

def search_query(person_infos):
  if answer == '3':
    search_query = input('Who would you like to find: ')
    they_are_found = False
    location = None
    for i, each_employee in enumerate(person_infos):
      if each_employee['name'] == search_query:
        they_are_found = True
      location = i
    if they_are_found:
      print('Found: ', person_infos[location]['name'], person_infos[location]['job position'], person_infos[location]['date hired'], person_infos[location]['pay per hour'])
  else:
      print('Sorry, your search query is non-existent.')

и у меня тоже есть это -

elif answer =='3':
  person_infos = search_query(person_infos)

Это похоже на шаг в правильном направлении, но для

search_query = input('Who would you like to find: ')

, если я ввожу имена в person_infos как и «Джон Доу», он просто печатает информацию о последнем словаре (независимо от того, какой именно c словарь он указан, последний в порядке всегда будет выводиться) вместо информации Джона Доу. в этом случае он напечатал бы только «Бето Арец». Может кто-нибудь помочь, пожалуйста? Это то, над чем я боролся некоторое время, и это было бы здорово. Я так много исследовал, и я не мог найти что-то с вещами, которые я либо знал, как делать, либо выполнял поиск входных данных.

Спасибо, LR

1 Ответ

0 голосов
/ 01 февраля 2020

На первый взгляд это выглядит так, потому что ваш location=i не имеет отступа внутри вашего оператора if, поэтому он устанавливается на самое последнее i на каждой итерации for для l oop. Дайте мне знать, если это поможет.

def search_query(person_infos):
  if answer == '3':
    search_query = input('Who would you like to find: ')
    they_are_found = False
    location = None
    for i, each_employee in enumerate(person_infos):
      if each_employee['name'] == search_query:
        they_are_found = True
        location = i
    if they_are_found:
      print('Found: ', person_infos[location]['name'], person_infos[location]['job position'], person_infos[location]['date hired'], person_infos[location]['pay per hour'])
  else:
      print('Sorry, your search query is non-existent.')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...