Python: пользовательский ввод в список выравнивается по индексу во втором списке, вывод второго элемента списка

#python #list #iteration

#python #Список #итерация

Вопрос:

Здесь новый программист!

У меня есть два списка. list1 list2 Мне нужно найти имя в list1, а затем распечатать соответствующий ему индекс из list2

#мое мышление

#Получить пользовательский ввод

# проверка ввода имени пользователя по списку имен (здесь должна выполняться проверка, когда цикл?)

#если проверка завершилась неудачно, попросите пользователя правильно ввести имя

#если проверка прошла успешно, мы продолжаем работу с программой

#используйте индекс входного имени, соответствующий индексу номера телефона этого человека

# вывод имени и номера телефона

Я считаю, что с моей логикой все в порядке, но это код, с которым я действительно борюсь. Я выполнил работу из ускоренного курса Python по спискам, я выполнил работу из Programming Logic и Design 5th edition, а также Введение в вычисления и программирование с использованием Python. Однако, похоже, я не могу найти много мест, где они делают что-то отдаленно похожее на это.

Спасибо за любую помощь / совет, который вы можете дать!

Ответ №1:

Это должно вам помочь:

 list1 = ['A','B','C'] #Name list
list2 = [985,900,876] #Phone Number list

while True:
    name = input("Name")
    if name in list1:
        index = list1.index(name)
        print(f"Name = {name} , Phone Number = {list2[index]}")
        break 
    else:
        print("Invalid input")
  

Вывод:

 Name>? A
Name = A , Phone Number = 985
  

Комментарии:

1. Я изначально был настроен на использование цикла for, затем я посмотрел видео от mulzy на YT, но никогда не использовал цикл while. извлекает ли index=list1.index(name) этот номер индекса в качестве ссылки, чтобы помочь вызвать соответствующую часть из другого списка?

2. ДА. Вот что он делает. И этот цикл while является бесконечным циклом, и он прерывается только тогда, когда пользователь вводит допустимый ввод. Просто скопируйте и вставьте мой код в свой редактор python и дайте мне знать, работает ли он.

3. Отлично, опять же, я просто хочу убедиться, что понимаю. Я ценю это!

Ответ №2:

Я думаю, что это намного проще со словарем:

 list1 = [a,b,c]
list2 = [d,e,f]
dic = {}
for i in list1:
    for j in list2:
        dic[i] = j
  

Это поместит каждое имя из list1 в словарь.

 while True:
    inp = input("Give a name please: ")
    if inp not in dic.keys():
        continue
    print(inp, str(dic[inp]))
    break
    
    
  

Комментарии:

1. Я только читал о словарях, я ничего не писал с ними на данный момент. Итак, вы устанавливаете индекс из словаря = на индекс из j, а затем печатаете соответствующие части?

2. Да, я как бы создаю своего рода связь между именем и номером телефона. Когда вы вызываете dicionary[name] , это выводит связанный номер, поэтому в данном случае phonenumber .

3. Я вижу, я уверен, что я буду использовать словари в некотором роде / форме / форме достаточно скоро! Спасибо!