Статья Автор: Деникина Н.В., Деникин А.В.

Обход строк и счётчики

Главный цикл всего модуля

После load таблица лежит в переменной movies — это список, каждый элемент которого словарь с ключами-столбцами. Значит любой вопрос к таблице решается одним и тем же приёмом: пройти по всем строкам и что-то сосчитать.

for m in movies:
    # m - один фильм, m["genre"] - его жанр

Этот цикл будет встречаться дальше сотни раз. Всё остальное — вариации того, что мы делаем внутри.


Счётчик

Заводим переменную-ноль, проходим по строкам, увеличиваем на единицу, когда условие выполнилось. Схема одна на все задачи такого вида:

count = 0
for m in movies:
    if условие:
        count = count + 1

Ловушка, на которой спотыкаются все. Всё, что прочитано из файла, — это строки, даже если выглядит как число. Сравнение m["year"] > 2010 либо упадёт с ошибкой, либо сравнит тексты по алфавиту. Число надо получить явно: int(m["year"]). С жанром такой проблемы нет — он и так текст.



Что показал вывод

Фильмов жанра Action оказалось 1411, а вышедших с 2010 года — 1507, то есть больше четверти всей таблицы.

Обрати внимание на главное: оба ответа получены одним и тем же циклом со счётчиком, поменялось только условие внутри. Отличие лишь в том, что для жанра сравнение идёт как есть, а для года понадобился int.


Сколько в таблице фильмов жанра Action? Ответ числом.

Сколько фильмов вышло в 2010 году или позже? Ответ числом.

Что вернёт выражение m["year"] > 2010, если load прочитал год как строку?

Отметь верные утверждения про обход таблицы.

Расставь шаги подсчёта фильмов с оценкой выше 8 в правильном порядке.
Загрузка...
Чтобы оставить комментарий, необходимо авторизоваться
💬
Пока нет комментариев. Будьте первым!
Печать