Для решения этой задачи нужно написать программу, которая:
- Генерирует массив из 30 случайных целых чисел в диапазоне от 0 до 100, представляющих баллы.
- Определяет, какие из этих баллов превышают 20.
- Подсчитывает средний балл только для тех элементов массива, которые больше 20.
Программа должна учитывать, что могут быть ситуации, когда никто не сдал экзамен (все баллы ≤ 20), и в этом случае нужно обработать ситуацию (например, вывести сообщение, что никто не сдал экзамен).
Пример программы на Python:
import random
# Шаг 1: Генерация массива из 30 случайных чисел от 0 до 100
scores = [random.randint(0, 100) for _ in range(30)]
# Шаг 2: Отбор баллов, превышающих 20
passed_scores = [score for score in scores if score > 20]
# Шаг 3: Подсчет среднего балла
if len(passed_scores) > 0: # Проверяем, есть ли учащиеся, сдавшие экзамен
average_score = sum(passed_scores) / len(passed_scores)
print("Баллы всех учащихся:", scores)
print("Баллы учащихся, сдавших экзамен:", passed_scores)
print("Средний балл учащихся, сдавших экзамен:", round(average_score, 2))
else:
print("Никто не сдал экзамен (все баллы 20 или ниже).")
Пояснение:
Генерация массива:
- Используется функция
random.randint(0, 100)
для генерации случайного числа от 0 до 100.
- Генерация массива из 30 элементов выполнена с помощью спискового включения (
[random.randint(0, 100) for _ in range(30)]
).
Отбор сдавших экзамен:
- Список
passed_scores
формируется с помощью другого спискового включения: [score for score in scores if score > 20]
. В него попадают только те элементы из scores
, которые больше 20.
Подсчет среднего балла:
- Средний балл вычисляется как сумма всех баллов, делённая на их количество.
- Если количество учащихся, сдавших экзамен (
len(passed_scores)
), равно нулю, программа выводит сообщение о том, что никто не сдал экзамен.
Вывод результатов:
- Программа отображает исходные данные (все баллы), баллы сдавших экзамен и средний балл.
Пример вывода программы:
Предположим, что массив случайных баллов выглядит так:
Баллы всех учащихся: [12, 45, 67, 23, 19, 34, 56, 9, 80, 21, 18, 40, 25, 100, 60, 15, 22, 33, 10, 5, 27, 38, 41, 50, 70, 65, 8, 29, 31, 20]
Тогда вывод программы будет:
Баллы учащихся, сдавших экзамен: [45, 67, 23, 34, 56, 80, 40, 25, 100, 60, 22, 33, 27, 38, 41, 50, 70, 65, 29, 31]
Средний балл учащихся, сдавших экзамен: 46.7
Если никто не сдал экзамен (все баллы ≤ 20), программа выведет:
Никто не сдал экзамен (все баллы 20 или ниже).
Плюсы подхода:
- Код легко читается и расширяется.
- Использование списковых включений делает поиск и фильтрацию данных лаконичными и эффективными.
- Обработка ситуации, когда никто не сдал экзамен, предотвращает деление на ноль и ошибки.
Такой алгоритм универсален и может быть адаптирован для других задач с подобной логикой.