#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 ее возвращаемое значение