Найти индекс последнего по счету элемента в массиве, который является меньше среднее арифметическое всех элементов массива

a=[int(x) for x in input('Input array:').split()]
n=0
for i in range(0,len(a)):
    n+=1
    i+=i
    if (a[i])<i/n):
        print(a[i])

ошибка ,хз как исправить,помогите пожалуйста:)


Ответы (4 шт):

Автор решения: Zhihar

первая ошибка

вы для начала вычислите среднее арифметическое, а потом уже ищите элементы

вторая ошибка

i/n

это не среднее арифметическое :) имеется в виду не среднее от кол-ва элементов, а среднее арифметическое самих элементов - т.е. сначала надо сложить значения всех элементов и потом только разделить на n

третья ошибка

в задаче требуется найти индекс, а вы выводите значение элемента

В общем вся задача сделана неправильно

Решение:

arr = [*map(int, input('Input array:').split())]

ave = sum(arr) / len(arr)

for i in range(len(arr) - 1, -1, -1):
    if arr[i] > ave:
        print(i)
        break

можно немного извратиться

arr = [*map(int, input('Input array:').split())]

ave = sum(arr) / len(arr)

for obj in reversed([*enumerate(arr)]):
    if obj[1] > ave:
        print(obj[0])
        break
→ Ссылка
Автор решения: Dmitriy Novikov

попробуйте вот так

a=[int(x) for x in input('Input array:').split()]
mean = sum(a) / len(a)
index = 0
for i in range(len(a)):
    if a[i] <= mean:
        index = i
        
print(i)
→ Ссылка
Автор решения: Alexey R.

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

a=[int(x) for x in input('Input array:').split()]
index = len(a) - 1
avg = sum(a) / len(a)
for item in reversed(a):
  if(item < avg):
    print(index)
    break
  else:
    index -= 1  
→ Ссылка
Автор решения: MarianD

«Первые будут последними и последние первыми.» ;-):

import statistics

numbers = [float(x) for x in input('Input array: ').split()]
numbers.reverse()

mean = statistics.mean(numbers) if numbers else 0      # любое число для пустого списка

for i, number in enumerate(numbers):
    if number < mean:
        print(len(numbers) - i - 1)
        break
else:
    print("No such number.")

Объяснение:

Функция enumerate() занумерует обратную последовательность, когда такой индекс существует, выражением len(numbers) - i - 1 он конвертируется на индекс оригинальной последовательности.

Таким образом достаточно найти только один подходящий элемент (команда break).

Ветвь else команды break выполнится тогда и только тогда, когда цикл полностью исчерпался, т.е. когда не встретилась команда break.

→ Ссылка