#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. Я вижу, я уверен, что я буду использовать словари в некотором роде / форме / форме достаточно скоро! Спасибо!