Создайте список из n чисел, n введите с клавиатуры. Заполните список целыми случайными числами в диапазоне [0; 40]. Выведите список на экран (15 баллов). Определите и выведите на экран среднее арифметическое элементов списка (15 баллов). Подсчитайте количество элементов, значение которых больше 10. Результат выведите на экран (15 баллов). Определите, есть ли в списке два соседних элемента, имеющих одинаковые значения. Выведите на экран True (истина) или False (ложь) (20 баллов).
Ниже подробное решение с объяснениями и сам код на Python. Я ориентируюсь на школьный уровень и учитываю, что цель — понять процесс.
Цель и подход
- Что делаем: читаем n, заполняем список из n целыми случайными числами в диапазоне [0, 40], выводим список, считаем среднее арифметическое элементов, считаем количество элементов больше 10, и проверяем наличие двух соседних элементов с одинаковыми значениями.
- Сложность: время O(n) и память O(n) для списка.
- Важное: диапазон включительно 0 и 40, поэтому используем random.randint(0, 40).
Пояснения к шагам
1) Ввод n
- Просим пользователя ввести размер списка n и приводим к целому числу.
- Если n <= 0, список будет пустым, и некоторые шаги должны корректно обработаться (среднее по пустому списку мы задаем как 0).
2) Заполнение списка случайными числами
- Используем генератор списка: [random.randint(0, 40) for _ in range(n)]
- random.randint(a, b) возвращает целое число в диапазоне [a, b], включая границы.
3) Вывод списка
- Просто распечатываем получившийся список.
4) Среднее арифметическое
- Среднее равно сумме элементов делить на количество элементов.
- Для пустого списка избегаем деления на ноль (задаем 0).
5) Элементы, большие 10
- Считаем количества элементов x, для которых x > 10.
6) Соседние равные элементы
- Проверяем пары соседних элементов: 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.