Python

Решить проблемную задачу через Python

Написать программу, которая находит среднее арифметическое элементов списка, которые больше заданного числа.
Решается парой декларативных конструкций без нагромождения внушительно выглядящего, но пустого по сути кода. Да и числа лучше вводить с клавиатуры, чем хардкодить в программе.
 from statistics import mean
ns = map(int, input().split())
print(mean(filter(int(input()).__lt__, ns)))

Правда, если преподаватель не оценит использование готовой функции среднего арифметического, то можно посчитать раздельно сумму и количество и поделить одно на другое:
 from functools import reduce
ns = map(int, input().split())
fs = filter(int(input()).__lt__, ns)
print(int.__truediv__(*reduce(lambda t, n: map(int.__add__, t, (n, 1)), fs, (next(fs), 1))))

Пример. Вводим:
 4 7 6 5 8
6
Получаем:
 7.5 
(среднее арифметическое 7 и 8, т.к. только они больше 6)

А если кому не нравятся лямбды, то так:
 from functools import partial, reduce; from itertools import repeat
ns = map(int, input().split())
ts = zip(filter(int(input()).__lt__, ns), repeat(1))
print(int.__truediv__(*reduce(partial(map, int.__add__), ts, next(ts))))

Если нужно, чтоб работало на вещественных числах, замени int на float во всей программе.
Emre Yilmaz
Emre Yilmaz
87 571
Лучший ответ
 def calculate_average_above(numbers, threshold): 
count = 0
total = 0

for number in numbers:
if number > threshold:
count += 1
total += number

if count == 0:
return 0 # Если нет элементов больше заданного числа, возвращаем 0, чтобы избежать деления на ноль
else:
average = total / count
return average


# Пример использования
numbers = [1, 5, 9, 12, 7, 3, 8, 10]
threshold = 5

average = calculate_average_above(numbers, threshold)
print(f"Среднее арифметическое элементов списка, больших {threshold}: {average}")
Артем Купрацевич Без нейросети не можете решить даже такой примитив?
Арсен Саркисян корректно ли возвращать ноль если нет подходящих элементов?