Ниже подробное решение с объяснениями и сам код на Python. Я ориентируюсь на школьный уровень и учитываю, что цель — понять процесс.
Цель и подход
- Что делаем: читаем n, заполняем список из n целыми случайными числами в диапазоне [0, 40], выводим список, считаем среднее арифметическое элементов, считаем количество элементов больше 10, и проверяем наличие двух соседних элементов с одинаковыми значениями.
- Сложность: время O(n) и память O(n) для списка.
- Важное: диапазон включительно 0 и 40, поэтому используем random.randint(0, 40).
Пояснения к шагам
- Ввод n
- Просим пользователя ввести размер списка n и приводим к целому числу.
- Если n <= 0, список будет пустым, и некоторые шаги должны корректно обработаться (среднее по пустому списку мы задаем как 0).
- Заполнение списка случайными числами
- Используем генератор списка: [random.randint(0, 40) for _ in range(n)]
- random.randint(a, b) возвращает целое число в диапазоне [a, b], включая границы.
- Вывод списка
- Просто распечатываем получившийся список.
- Среднее арифметическое
- Среднее равно сумме элементов делить на количество элементов.
- Для пустого списка избегаем деления на ноль (задаем 0).
- Элементы, большие 10
- Считаем количества элементов x, для которых x > 10.
- Соседние равные элементы
- Проверяем пары соседних элементов: lst[i] == lst[i+1] для i от 0 до len(lst)-2.
- Если таких пар нет, результат False.
Код (пояснения встроены в комментарии)
import random
def main(): # 1) Ввод размера списка try: n = int(input("Введите размер списка n: ")) except ValueError: print("Неверный ввод. Ожидалось целое число.") return
# Обработаем случай n <= 0
if n <= 0:
lst = []
else:
# 2) Заполнение списка случайными целыми числами в диапазоне [0, 40]
lst = [random.randint(0, 40) for _ in range(n)]
# 3) Вывод списка
print("Список:", lst)
# 4) Среднее арифметическое
if len(lst) > 0:
avg = sum(lst) / len(lst)
else:
avg = 0
print("Среднее арифметическое:", avg)
# 5) Количество элементов > 10
count_gt_10 = sum(1 for x in lst if x > 10)
print("Количество элементов больше 10:", count_gt_10)
# 6) Наличие двух соседних равных элементов
has_adjacent_equal = any(lst[i] == lst[i+1] for i in range(len(lst) - 1)) if len(lst) >= 2 else False
print("Есть ли в списке два соседних элемента с одинаковыми значениями?:", has_adjacent_equal)
if name == "main": main()
Пояснение по каждому результату
- Список: выводится именно тот набор случайных чисел, который сгенерировался.
- Среднее арифметическое: сумма элементов делится на количество элементов; если список пустой, возвращаем 0.
- Количество элементов > 10: количество элементов, у которых значение strictly больше 10.
- Наличие соседних равных: True, если найдется пара соседних элементов с одинаковыми значениями, иначе False.
Пример работы (условный) Введите n: 6 Список: [3, 15, 2, 15, 0, 28] Среднее арифметическое: 9.5 Количество элементов больше 10: 3 Есть ли соседние элементы равные?: False
Если хотите, можно дополнительно:
- вывести среднее с форматом x.yz (например, 2 знака после запятой);
- зафиксировать генератор случайных чисел(seed) для воспроизводимости;
- обработать нецелочисленный ввод и повторно запрашивать n.