Поиск массива в Python, возвращающая позиция

#python #arrays

#Python #массивы

Вопрос:

Это довольно просто, но я не могу в этом разобраться. Я пишу короткую программу, в которой вы вводите имя, оно будет сравниваться с каждым элементом в массиве, затем, если оно найдено, выведите, какое число оно находится в массиве. если он не найден, введите новое имя

 Names = ['alice', 'bob', 'carol', 'david']
name = input("Enter Name ").lower()
c = 0
while name != Names[c]:
    c = c   1
    if c == (len(Names)):
        name = input("Name Not Found n nEnter Name ").lower()
        c = 0
if name == Names[c]:
    print ("name found, in position ", c)
  

Он всегда выдает имя, которое не найдено

Ответ №1:

Имя.lower без () в конце вернет всю функцию lower, и это приведет к путанице с переменной

Так что просто замените это на name .lower() и он должен работать

Ответ №2:

В качестве альтернативы вы можете использовать Name.index(name) и создать рекурсивную функцию для поиска имен, например:

 Names = ['alice', 'bob', 'carol', 'david']

def findName():
  name = input("Enter Name: ").lower()
  if name in Names:
    print(f'Name at position {Names.index(name)}')
  else: 
    print('Name not found; try again')
    findName()

findName()
  

Или тот же код, но в цикле:

 while True:
  name = input("Enter Name: ").lower()
  if name in Names:
    print(f'Name at position {Names.index(name)}')
    break
  else: 
    print('Name not found; try again')
  

Ответ №3:

Используйте name = input("Enter Name ").lower() вместо name = input("Enter Name ").lower . name = input("Enter Name ").lower назначил бы имя функции ниже, в то время name = input("Enter Name ").lower() как запускает функцию ниже и присваивает name ее возвращаемое значение