Как я могу вернуть значение индекса данного элемента из списка? - PullRequest
0 голосов
/ 20 мая 2019

Итак, моя проблема:

Сортированный массив целых чисел был повернут неизвестное число раз.

При наличии такого массива найдите индекс элемента в массиве быстрее, чемлинейное времяЕсли элемент не существует в массиве, вернуть ноль.

Например, учитывая массив [13, 18, 25, 2, 8, 10] и элемент 8, вернуть 4 (индекс8 в массиве).

Можно предположить, что все целые числа в массиве уникальны.

Код, который я уже пробовал:

def find_index(x, a):
    x = input("Enter number wish to be found:  ")
    a = [13, 18, 25, 2, 8, 10]
    for element in a:
        if x not in a:
            return None
        else:
            print(a.index(x))

print(find_index())

РЕДАКТИРОВАТЬ: Iперепутал ошибку с другим.Настоящая ошибка: find_index() missing 2 required positional arguments: 'x' and 'a'

Я ожидал, что смогу заставить пользователя ввести число и получить обратно значение позиции индекса или None.Я ударил кирпичную стену и не уверен, где продолжить.Есть идеи?

1 Ответ

2 голосов
/ 20 мая 2019
  1. Указанный вами код не приводит к указанной ошибке.

  2. Почему функция принимает 2 аргумента, а затем немедленно перезаписывает их?

  3. input возвращает строку.Вы должны конвертировать x в целое число.

Во всяком случае, цикл не имеет никакого смысла.Все, что вам нужно сделать, это обернуть .index:

def find_index():
    try:
        x = int(input("Enter number wish to be found:  "))
    except ValueError:
        return 'You have to input an integer'
    a = [13, 18, 25, 2, 8, 10]
    try:
        return a.index(x)
    except ValueError:
        return None
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...