Задача 910 – використання list comprehension для введення даних з фільтруванням

Надрукувати

Середнє арифметичне додатних

https://www.e-olymp.com/uk/problems/910

 

Задано послідовність дійсних чисел. Визначити середнє арифметичне додатних чисел.

Вхідні дані

У першому рядку задано кількість дійсних чисел n (0 < n ≤ 100). У наступному рядку задано n чисел, значення яких не перевищують за модулем 100.

Вихідні дані

Вивести середнє арифметичне додатних чисел з 2 десятковими знаками. У випадку відсутності додатних чисел вивести повідомлення "Not Found" (без лапок).

 

Вхідні дані #1

3

5.2 -2 4

Вихідні дані #1

4.60

 


 

Використання list comprehension для розв’язання даної задачі допоможе нам ввести дані з одночасним їх фільтруванням. Розбираючи рядок введення, ми можемо вибрати лише додатні елементи. Наприклад, при введенні даних таким  чином:

lst = [float(x) for x in input().split()]

ми в списку lst отримаємо всі вхідні дані. А використання умови в list comprehension дозволить нам додати в список лише додатні елементи вхідних даних:

lst = [float(x) for x in input().split() if float(x)>0]

А отримав список додатних чисел ми можемо проаналізувати довжину цього списку за допомогою функції len(). Якщо довжина нульова, це означає що у вхідних даних немає жодного додатного числа. Якщо так сталося, виводимо відповідне повідомлення, інакше виводимо середнє арифметичне. Формати виведення реальних чисел можна знайти у нашому довіднику «input_print», а для обрахування середнього арифметичного, хто забув, треба суму елементів поділити на їх кількість, в python це просто sum(lst)/len(lst).

 

ps. Якщо ваші батьки збираються на батьківські збори і у вас є список всіх ваших оцінок, то що буде з даним списком після такого:

otsynky = [x for x in otsynky if 10 <= x <= 12]

Ну і додаткове питання – що буде, коли вас піймають?  :)