поиск элемента в массиве на основе пользовательского ввода - PullRequest
1 голос
/ 25 февраля 2020

Привет, новичок в python и программирование в целом. Я пытаюсь найти элемент в массиве на основе пользовательского ввода. Вот что я сделал

a =[31,41,59,26,41,58]
input = input("Enter number : ")
for i in range(1,len(a),1) :
    if input == a[i] :
       print(i)

Проблема в том, что он не распечатать что-нибудь. что я тут не так делаю?

Ответы [ 4 ]

1 голос
/ 25 февраля 2020

input возвращает строку. Чтобы сделать их целыми числами, оберните их в int.

inp=int(input('enter :'))
for i in range(0,len(a)-1): 
    if inp==a[i]:
        print(i)

Индексы в list начинаются с 0 до len (список) -1 .

Вместо использования range(0,len(a)-1) предпочтительнее использовать enumerate.

for idx,val in enumerate(a):
    if inp==val:
        print(idx)

Чтобы проверить, находится ли inp в a, вы можете сделать это.

>>> inp in a
True #if it exists or else False

Вы также можете использовать try-except.

try:
    print(a.index(inp))
except ValueError:
    print('Element not Found')
0 голосов
/ 25 февраля 2020

ввод дает вам ул, но вы сравниваете список целых. Это и ваш l oop начинается с 1, но ваш индекс начинается с 0

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

Пожалуйста, не объявляйте переменную ввод не является хорошей практикой и Пробел очень важен в Python

a =[31,41,59,26,41,58]
b = input("Enter number : ")
for i in range(1,len(a),1):
    if int(b) == a[i] :
        print(i)

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

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

input возвращает строку; a содержит целые числа.

Ваш l oop начинается с 1, поэтому он никогда не будет проверяться на a[0] (в данном случае 31).

И вам не следует заново определять имя input.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...