Представьте, что вы хотите вести список для чтения: какие книги уже прочитаны, какие ещё не начаты, как сохранить прогресс и продолжить с того же места в следующий раз?
Когда речь идёт об одной книге, достаточно нескольких строк кода. Добавьте десять книг — и понадобится хранить несколько записей; чтобы отобрать непрочитанные, нужно сформулировать правило отбора; а закрыв программу, вы обнаружите, что внесённые изменения не сохранились.
Такая, казалось бы, небольшая задача сразу выводит на первый план несколько ключевых вопросов программирования. Курс AI001 «Введение в программирование на Python» от EvoClass выстраивает десять занятий вокруг этих базовых навыков: от синтаксиса и управления потоком выполнения постепенно к спискам, функциям, словарям, модулям и чтению/записи файлов.
Как программа узнаёт, что делать дальше
Человек, глядя на список, обычно без труда решает, с каких пунктов начать. Программе же нужны явные условия и шаги.
В Уроке 2: управление потоком и логика курс переходит от последовательного выполнения к условным конструкциям, булевым выражениям и выбору из нескольких ветвей, а также подчёркивает роль отступов, задающих блоки кода.
Возвращаясь к списку для чтения, можно сначала задать лишь один вопрос: имеет ли статус данной записи значение «не прочитано»? В зависимости от ответа запись сохраняется или пропускается, а затем то же правило применяется к остальным записям.
На этом этапе полезно упражняться в превращении расплывчатых требований в чёткие условия. Например, «найти полезные пункты» — слишком широкая формулировка, а «оставить записи со статусом „не прочитано“» уже можно преобразовать в проверяемое правило.
Когда данных становится больше, сначала подумайте, как их хранить
Когда пунктов становится больше одного, способ организации данных начинает влиять на то, как пишется программа.
В Уроке 3: использование списков рассматриваются упорядоченные коллекции, индексы, срезы, а также добавление и удаление элементов. Набор названий книг можно поместить в список и затем обрабатывать его поэлементно в цикле.
Но у книги могут быть ещё автор, статус чтения и дата записи. Тогда, полагаясь только на позицию («что стоит вторым»), вы усложняете себе задачу при последующих изменениях. Урок 8: использование словарей вводит ключи и значения, давая полям явные имена.
Один из вариантов организации этого упражнения — хранить в списке по словарю на каждую запись. Это лишь учебная рекомендация, цель которой — почувствовать: выбор структуры данных делает одни операции более прямыми, а также влияет на то, как другие люди понимают эту программу.
Как сократить копирование, когда одно и то же повторяется
Если правило фильтрации копируется при выводе на экран, экспорте списка и подсчёте количества, то при изменении условия придётся проверять сразу несколько мест.
Урок 5: повторное использование кода с помощью функций посвящён определению функций, параметрам, вызову и возвращаемым значениям, а также тому, как организовать связанную операцию в повторно используемый блок.
Фильтрация в списке для чтения может стать таким упражнением: на вход подаётся набор записей, на выходе возвращаются подходящие. Место вызова отвечает за отображение или сохранение, а сама фильтрация сохраняет чёткую зону ответственности.
Когда имя функции, её входы и выходы определены, проверка становится конкретнее. Что вернуть, если записей нет? Что произойдёт, если все книги уже прочитаны? Эти граничные случаи часто помогают понять программу лучше, чем один удачный запуск кода.
Как сохранить результат после закрытия программы
Данные, хранящиеся в переменных во время выполнения, не становятся автоматически записями, которые останутся при следующем открытии программы.
Урок 9: ввод и вывод файлов выводит обучение за пределы программы: чтение и запись текста, управление файловыми ресурсами и знакомство с распространёнными форматами данных, такими как CSV и JSON.
Список для чтения можно продолжать совершенствовать по этому пути: сначала прочитать данные из файла, затем обработать записи и, наконец, записать результаты, которые нужно сохранить. При записи важно различать перезапись и добавление, чтобы при следующем запуске не изменить данные, которые вы хотели сохранить.
Этот список — учебный замысел, связывающий знания воедино, а не готовый проект, который уже предоставляет курс, и не проверка программного обеспечения, выполненная в этой статье. Его ценность в том, что каждый новый концепт отвечает на конкретную потребность, а не превращает синтаксические конструкции в изолированный перечень.
На странице курса AI001 можно постепенно учиться с самых основ или возвращаться к нужным главам со своей небольшой задачей. В итоге те несколько строк, которые уже работают, могут превратиться в инструмент, который вы понимаете, можете изменить и сможете снова использовать в следующий раз.
Статья подготовлена на основе текущего каталога курсов и учебных материалов EvoClass; ссылки на занятия ведут на англоязычные материалы. Список для чтения носит характер учебной рекомендации; в статье не выполнялись лабораторные работы курса и не даётся обещаний, что после прохождения курса можно будет выпускать производственное программное обеспечение. Условия полного доступа и использования функций программирования определяются подсказками на странице.