Помощь в задаче

Pavel

Новичок
Пользователь
Апр 23, 2020
3
1
3
Имеется задача:
Необходимо создать функцию, целью которой является нахождение пропущенного члена в арифметической прогрессии. Т.е. функция принимает на вход вектор с членами арифметической прогрессии, один из которых пропущен. Результатом работы функции является этот пропущенный член. К примеру, если передать данной функции на вход следующий вектор [1,3,5,9,11], то результатом её работы будет являться число 7, т.к. оно было пропущено в векторе. Длина вектора как минимум равна трём. Пропущенный член никогда не находится на первой и последней позиции в векторе.
Версия Python 3.8
ОС Windows
И есть пробный код, но он не работает, кто знает, скажите как исправить данный код, чтобы он выводил искомый член?
Python:
def progres(array):
    i = 0
    for i in range(len(array)):
        step = array[i+1] - array[i]
        j = i + 1
        while j < len(array):
            j += 1
            if array[j] == array[j+1] - step:
                return True
            elif array[j] != array[j+1] - step:
                return(array[j]+step)
print(progres([1, 3, 5, 7, 11, 13, 15, 17, 19]))

 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Вот пример:
Python:
def progres(array):
    # шаг последовательности = (max - min) / количество элементов
    delta = (array[-1] - array[0]) / len(array)

    # проход в цикле
    for i, item in enumerate(array):
        # первый элемент пропускаем
        if i == 0:
            continue

        # если элемент больше чем предыдущий + шаг
        if item != (array[i - 1] + delta):
            # возвращаем его минус шаг
            return int(item - delta)


print(progres([1, 3, 5, 7, 11, 13, 15, 17, 19]))
print(progres([5, 8, 11, 14, 20, 23]))
print(progres([10, 20, 40, 50, 60, 70]))
 

Форум IT Специалистов