Списки и обработка измерений

Один датчик за смену выдаёт сотни значений. Держать каждое в своей переменной невозможно — для набора данных есть список. Сегодня научимся хранить серию измерений в списке, перебирать её и считать сводку: сумму, среднее, максимум, число превышений. В конце соберём анализатор лога датчика.

Список измерений датчика и сводка: среднее, максимум, число превышений порога

После урока сможешь: Учим хранить серию измерений в списке: индексы, append, перебор циклом, готовые sum/min/max и фильтрация по порогу. В конце собираешь анализатор лога датчика со сводкой.

Список — набор значений по порядку

Список (list) хранит несколько значений в одной переменной, по порядку. Записывают в квадратных скобках через запятую. У каждого элемента есть номер — индекс, и считают с нуля. Длину списка даёт len, отдельный элемент берут по индексу.

izmereniya = [20, 35, 28, 41]
print(len(izmereniya))
print(izmereniya[0])
print(izmereniya[-1])
4
20
41
  Список — значения по порядку, у каждого свой индекс:

  izmereniya = [20, 35, 28, 41]

  значение:  20  35  28  41
  индекс:     0   1   2   3

  len(izmereniya) = 4
  izmereniya[0]  = 20   (первый)
  izmereniya[-1] = 41   (последний)

Индексы начинаются с 0, а не с 1. Первый элемент — [0], последний удобно брать как [-1].

Добавляем элемент: append

Часто список наполняют по ходу: пришло измерение — добавили в конец списка методом .append(). Так список «растёт» во время работы программы.

log = []
log.append(20)
log.append(35)
print(log)
[20, 35]

Перебор списка циклом

Цикл for умеет идти прямо по элементам списка: for x in spisok — на каждом круге x становится очередным элементом. Так удобно обработать все измерения по очереди.

izmereniya = [20, 35, 28]
for x in izmereniya:
    print("Измерение:", x)
Измерение: 20
Измерение: 35
Измерение: 28
  for x in izmereniya:   — перебор по элементам

  izmereniya = [20, 35, 28]

  круг 1:  x = 20
  круг 2:  x = 35
  круг 3:  x = 28

  (x по очереди становится каждым элементом списка)

Готовая сводка: sum, min, max

Для частых задач есть готовые команды: sum — сумма всех элементов, min — минимальное, max — максимальное. Среднее считают как сумма, делённая на количество: sum(spisok) / len(spisok).

izmereniya = [20, 35, 28, 41]
print(sum(izmereniya))
print(min(izmereniya))
print(max(izmereniya))
print(round(sum(izmereniya) / len(izmereniya), 2))
124
20
41
31.0

sum, min, max и len работают со списком целиком. Но если нужна нестандартная сводка (например, сколько значений выше порога) — это считают перебором в цикле со счётчиком.

Фильтрация: сколько превысило порог

Чтобы посчитать, сколько измерений превысили порог, перебирают список и в цикле проверяют условие, увеличивая счётчик. Это соединение списка, цикла (занятие 4) и условия (занятие 3).

izmereniya = [20, 35, 28, 41, 90]
porog = 40
prevysheniy = 0
for x in izmereniya:
    if x > porog:
        prevysheniy = prevysheniy + 1
print("Превышений:", prevysheniy)
Превышений: 2

Миссия: анализатор лога датчика

Скопируй программу в песочницу и запусти. В списке уже лежит лог измерений. Программа считает сводку: количество, среднее, максимум и число превышений порога. Поменяй числа в списке и порог — посмотри, как меняется отчёт.

# Анализатор лога датчика
izmereniya = [20, 35, 28, 41, 90, 12, 77]
porog = 40

prevysheniy = 0
for x in izmereniya:
    if x > porog:
        prevysheniy = prevysheniy + 1

print("Измерений:", len(izmereniya))
print("Среднее:", round(sum(izmereniya) / len(izmereniya), 2))
print("Максимум:", max(izmereniya))
print("Превышений порога:", prevysheniy)
Измерений: 7
Среднее: 43.29
Максимум: 90
Превышений порога: 3

Контрольный вопрос. Какой индекс у первого элемента списка?

А0 — индексы начинаются с нуля
Б1 — счёт идёт с единицы
В-1 — это первый элемент

Подсказка: В Python нумерация элементов начинается не с единицы.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Что выведет программа из этого задания? Впиши число.

Исходный код для этого задания:

izmereniya = [20, 35, 28, 41]
print(izmereniya[0])

Подсказка: Индекс 0 — это первый элемент списка.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Что выведет программа из этого задания? Впиши число.

Исходный код для этого задания:

izmereniya = [20, 35, 28, 41]
print(len(izmereniya))

Подсказка: len считает количество элементов в списке.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Что выведет программа из этого задания? Впиши число.

Исходный код для этого задания:

izmereniya = [20, 35, 28, 41]
print(sum(izmereniya))

Подсказка: sum складывает все элементы списка: 20+35+28+41.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Что выведет программа из этого задания? Впиши число.

Исходный код для этого задания:

izmereniya = [20, 35, 28, 41]
print(max(izmereniya))

Подсказка: max возвращает самый большой элемент списка.

Онлайн-проверка ответа появится позже

Задание. Напиши код сам. В список log нужно добавить в конец число 50. Напиши эту строку.

Исходный код для этого задания:

log = [20, 35]
# напиши ниже строку, которая добавит в конец списка log число 50

Подсказка: Добавление в конец — метод .append(). Шаблон: log.append(50).

✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.

Онлайн-проверка ответа появится позже

Задание. Напиши код сам. В списке izmereniya лежат измерения. Напиши команду print, которая выведет их сумму.

Исходный код для этого задания:

izmereniya = [20, 35, 28, 41]
# напиши ниже команду print, которая выведет сумму элементов списка

Подсказка: Сумму всех элементов даёт sum(список). Шаблон: print(sum(izmereniya)).

✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.

Онлайн-проверка ответа появится позже

Задание. Напиши код сам. Напиши команду print, которая выведет максимальное измерение из списка izmereniya.

Исходный код для этого задания:

izmereniya = [20, 35, 28, 41]
# напиши ниже команду print с максимальным элементом списка

Подсказка: Максимум даёт max(список). Шаблон: print(max(izmereniya)).

✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Что выведет программа из этого задания? Впиши число (среднее).

Исходный код для этого задания:

izmereniya = [10, 20, 30]
print(round(sum(izmereniya) / len(izmereniya), 2))

Подсказка: Среднее = сумма / количество. Сумма 60, элементов 3.

Онлайн-проверка ответа появится позже

Задание. Напиши код сам. Внутри цикла нужно проверить: если измерение x больше порога porog — увеличить счётчик prevysheniy на 1. Напиши строку с условием if (с двоеточием).

Исходный код для этого задания:

izmereniya = [20, 35, 41, 90]
porog = 40
prevysheniy = 0
for x in izmereniya:
    # напиши ниже строку: если x больше porog (с двоеточием)
        prevysheniy = prevysheniy + 1
print(prevysheniy)

Подсказка: Шаблон: if x > porog:. Не забудь двоеточие в конце.

✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Что выведет программа из этого задания? Впиши число (сколько значений больше порога).

Исходный код для этого задания:

izmereniya = [20, 35, 41, 90, 12]
porog = 30
schet = 0
for x in izmereniya:
    if x > porog:
        schet = schet + 1
print(schet)

Подсказка: Считаем элементы строго больше 30: пройди по списку и отметь подходящие.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Программа должна сложить измерения, но падает с ошибкой. В чём причина?

Исходный код для этого задания:

izmereniya = [20, "35", 28]
print(sum(izmereniya))
АВ списке есть текст «35» в кавычках — sum не складывает число с текстом
БСписок не может содержать больше двух элементов
Вsum работает только с двумя числами

Подсказка: Посмотри на типы элементов списка. Один из них в кавычках — это текст, а не число.

Онлайн-проверка ответа появится позже

Задание. Проектное задание. Напиши программу целиком (около 9-10 строк) — анализатор лога. Дан список izmereniya = [20, 35, 90, 41, 95] и порог porog = 80. Перебери список и посчитай в prevysheniy, сколько значений строго больше порога. Затем выведи тремя строками: среднее (округли до 2 знаков), максимум и число превышений.

Исходный код для этого задания:

izmereniya = [20, 35, 90, 41, 95]
porog = 80
# 1) prevysheniy = 0
# 2) for x in izmereniya: if x > porog: prevysheniy += 1
# 3) print среднего round(sum/len, 2)
# 4) print максимума max(...)
# 5) print числа превышений

Подсказка: Заведи prevysheniy = 0; в цикле for x in izmereniya проверяй if x > porog и увеличивай prevysheniy; потом print(round(sum(izmereniya)/len(izmereniya), 2)), print(max(izmereniya)), print(prevysheniy).

✅ Готово, если: программа запускается без ошибок и выводит то, что просят в задании.

Онлайн-проверка ответа появится позже

Что дальше

Теперь ты умеешь хранить серию измерений в списке, перебирать её и считать сводку — сумму, среднее, максимум, число превышений. На следующем занятии займёмся текстовыми данными: научимся разбирать строку телеметрии на части.

Итог: Теперь ты умеешь хранить серию измерений в списке, перебирать её и считать сводку — сумму, среднее, максимум, число превышений. На следующем занятии займёмся текстовыми данными: научимся разбирать строку телеметрии на части.

Назад  ·  ↑ В начало урока  ·  ⌂ В начало курса  ·  Вперёд →

Школа Виктора Комлева