Python с нуля для взрослого
Логист каждый месяц получает выгрузку из учётной системы: таблицу в несколько тысяч строк, из которой нужно вытащить задержанные поставки, сгруппировать их по перевозчикам и отправить сводку руководителю. Делает он это руками, на третий день месяца, и каждый раз ругается, потому что формулы в таблице ломаются, когда в выгрузке меняется порядок столбцов. Python в этой истории нужен ровно для одного: чтобы три дня превратились в запуск одного файла и проверку результата.
Такая задача определяет, что учить, лучше любой программы курса. Язык большой, и его изучение можно растянуть на годы, но человеку с рабочей задачей нужна небольшая часть: чтение файла, работа со строками таблицы, запись результата. Всё остальное подождёт, пока в нём появится нужда. О том, брать ли курс или репетитора для программирования в целом, написано в статье программирование для взрослого: что учить сначала, а здесь речь о самом Python и о том, как к нему подступиться взрослому с работой и без свободных вечеров.
Какой Python вам нужен
Слово «Python» обозначает несколько разных занятий. Для одних это обработка таблиц и подготовка отчётов, для других автоматизация однообразной работы с файлами и письмами, для третьих разбор текстов, для четвёртых запросы к чужим сервисам и забор оттуда данных. Первые три почти не пересекаются с тем, чему учат в школьной информатике, и в них вам не пригодится знание про классы, наследование и многопоточность, пока вы не начнёте писать программы длиннее нескольких сотен строк.
Поэтому первый вопрос к себе формулируется не про язык, а про дело: что вы сейчас делаете руками и повторяете больше двух раз. Если ничего, учить Python придётся «на всякий случай», и такая учёба бросается чаще остальных, потому что негде проверить, получилось или нет. Если находится одна такая работа, она и есть ваш учебник. Каждая тема курса либо помогает её решить, либо откладывается.
Соблазнов в начале два. Первый: пройти всё про типы данных и функции, прежде чем коснуться своих файлов. Тогда к тому дню, когда пора открыть выгрузку, неделя ушла на примеры про кошек и яблоки, а желание закончилось. Второй: сразу взять большую библиотеку для таблиц, вроде pandas, и не понять, что она делает за вас. Я бы шёл через маленькое: сначала прочитать файл самому, строку за строкой, потом уже брать готовый инструмент. После этого библиотека перестаёт быть магией, и её ошибки понятны.
Где взрослый быстрее, где медленнее
Быстрее он в двух местах, и взрослые обычно недооценивают оба. Он знает свою предметную область и сразу видит, что результат неправдоподобен: сводка по перевозчикам, в которой одного перевозчика нет, подросток пропустил бы. И он умеет сформулировать задачу словами, а это половина программы: «берём строки, где дата доставки позже плановой, группируем по перевозчику, считаем число» уже почти код. К этому добавляется опыт работы в таблицах: фильтр, сводная, сортировка у вас уже есть, остаётся только назвать их по-новому.
Медленнее взрослый в другом. Ему труднее терпеть бессмысленные упражнения: вывести «Привет, мир», сложить два числа, посчитать сдачу в выдуманном магазине. Подросток делает это как игру, а у вас вечер один, и тратить его на задачу, которая не связана с вашей жизнью, жалко. Выход простой: своё упражнение придумывается с первого вечера, пусть даже кривое.
Ещё медленнее он из-за боязни что-нибудь сломать. Взрослый, привыкший отвечать за рабочие файлы, долго не решается запустить программу, которая может «испортить таблицу». Работать нужно с копиями, и это единственное правило безопасности, которое пригодится в первые месяцы: исходный файл не трогается, результат пишется в новый.
Первые вечера
Порядок ниже подходит для задачи с таблицей; для других он меняется, но принцип остаётся: от запуска к своему файлу, минуя общий курс.
- поставить Python и один раз запустить маленький файл из одной строки, чтобы убедиться, что запуск работает
- научиться читать сообщение об ошибке: намеренно сломать этот файл и посмотреть, что скажет программа
- открыть свою выгрузку и распечатать первые строки на экран, чтобы увидеть данные глазами программы
- пройти по строкам циклом и посчитать одну величину, например число задержанных поставок
- записать результат в новый файл и сверить с тем, что вы получили бы вручную
Пятый пункт обычно пропускают, а он единственный показывает, что программа делает то, что нужно. Если число из программы не сошлось с числом, посчитанным вручную на десяти строках, ошибка в программе. Это лучше выяснить в первую неделю, пока сводка не ушла руководителю.
Готовый скрипт логиста, если пересказать его словами, выглядит скромно. Он открывает файл выгрузки, пропускает строку с названиями столбцов, для каждой следующей строки сравнивает плановую дату доставки с фактической, откладывает строку в отдельный список, если факт позже плана, а в конце считает, сколько строк у каждого перевозчика, и записывает итог в новый файл. Это несколько десятков строк, и каждую из них можно объяснить вслух. Если вы можете так объяснить свой скрипт, вы его понимаете; если не можете, скрипт работает случайно, и первая смена формата выгрузки покажет это.
Ошибка читается снизу
Сообщение об ошибке в Python выглядит как длинная простыня, и первое желание — закрыть её. Читать её надо с конца. Последняя строка называет тип ошибки и причину, строки выше показывают, в каком файле и в какой строке это случилось и какие вызовы к ней привели. Для начинающего самое полезное — последняя строка и номер строки в вашем файле.
Первые ошибки у большинства одни и те же. IndentationError: в Python отступы — часть синтаксиса, лишний пробел в начале строки ломает программу, и текстовый редактор, который показывает пробелы, экономит много вечеров. NameError: вы опечатались в имени переменной или использовали её раньше, чем создали. FileNotFoundError: программа ищет файл в той папке, откуда её запустили, а не там, где лежит ваш скрипт, и именно из-за этого у людей «всё работает у преподавателя». ModuleNotFoundError: библиотека не установлена в ту версию Python, которой вы запускаете. Каждая из четырёх решается за пять минут тем, кто видел её раньше, и это объясняет, почему взрослые, застрявшие в одиночку, теряют на них целые вечера.
Один совет, который курс редко даёт: когда ошибка непонятна, прежде чем искать ответ в интернете, скажите вслух или запишите, что это за строка и что программа хотела в этом месте сделать. Привычка формулировать до поиска превращает ошибку из препятствия в вопрос, у которого есть адрес.
Старый материал и новые версии
Курсы и ответы на форумах живут годами, а в языке за это время что-то меняется. Python 2 снят с поддержки в 2020 году, но примеры под него встречаются до сих пор, и признак самый простой: если в примере print написан без скобок, материал старый, и на нём не стоит учиться. Вторая неприятность связана с запуском: на Mac и Linux команда обычно называется python3, на Windows бывает py или python, и у начинающего, который скопировал команду из чужого примера, она может не сработать без всякой его вины.
Относитесь к этому спокойно: так устроена любая учёба на материале из сети, и первый вечер, потраченный на «почему не запускается», не показывает ваших способностей. Он показывает лишь то, что среда ещё не настроена, и настраивается она один раз.
Занятия без показа экрана
Для занятий по программированию у платформы есть неудобство, и узнать о нём лучше до первого занятия. Ни вы, ни специалист не видите экран друг друга и чужой редактор; общей доски нет, а сам урок не записывается, так что вернуться к показанному потом не получится. Код ходит через чат, он открывается после того, как репетитор получил ваш контакт. В сообщение помещается до четырёх тысяч знаков, этого хватит на небольшую функцию, а всё остальное отправляется файлами: до пяти за раз, каждый не больше двадцати мегабайт.
На практике это значит, что небольшой фрагмент вы вставляете в чат текстом, а целую программу и кусок выгрузки (без чужих персональных данных, лучше десять строк из файла) отправляете файлами. Объяснение «на лету» с курсором по экрану не получится, и специалисту приходится говорить словами то, что обычно показывают. Занятия хорошо идут короткими кусками: вы присылаете файл накануне, он его читает, и на занятии вы обсуждаете три места, а не ищете, в чём дело.
Перед первым занятием спросите кандидата, как он работает без показа экрана. Конкретный ответ (фрагменты в чат, разбор вслух, файлы накануне) хороший знак. Ответ «разберёмся по ходу» повод поискать дальше. Сами вы тоже можете облегчить ему задачу: когда что-то не работает, присылайте текст ошибки целиком, пересказ из памяти специалисту почти ничего не даёт. По полному тексту он находит причину ещё до занятия.
Чего не стоит ждать
Первый рабочий скрипт не делает вас программистом, и это нормально: задача была другая. Спрос на профессию, зарплаты и сроки перехода обсуждать здесь не будем. Это отдельные вопросы, и ответить на них за вас текст не может. Есть и неприятная сторона, о ней лучше сказать сразу. Скрипт, написанный новичком, ломается, когда меняются исходные данные: в выгрузке появилась пустая строка, дата записана иначе, перевозчик назван с опечаткой. Через несколько месяцев после первого успеха вы столкнётесь с этим впервые, и провалом это назвать трудно, скорее следующий урок. Именно поэтому полезно, чтобы скрипт печатал, сколько строк он обработал и сколько пропустил: расхождение с ожидаемым видно сразу, и не нужно разбираться, почему сводка вышла странной.
Зато прикладной Python даёт то, что можно проверить сразу: сводка, которую вы раньше делали три дня, делается запуском одного файла, и вы знаете, что она посчитана одинаково каждый раз.
Если ваша цель дальше, например магистратура по прикладной информатике, где Python входит в программу, математика там отдельная тема: о ней математика для поступления в магистратуру. Для работы с данными без магистратуры пригодится разбор, что именно подтянуть из математики: математика для аналитика данных. Общий порядок возвращения к учёбе описан в статье репетитор для взрослого: с чего начать обучение заново, а то, что подтягивают взрослые чаще всего, собрано в статье что подтягивают взрослые чаще всего.
Начать поиск:
- репетиторы по информатике для взрослых
- репетиторы для взрослых
- репетиторы для взрослых с пробным занятием
- занятия вечером
Вопросы и ответы
Нужна ли математика, чтобы начать? Для первых скриптов нет: хватает арифметики и привычки мыслить по шагам. Математика понадобится, когда вы дойдёте до анализа данных, и тогда её подтягивают точечно.
С какой версии начинать? С третьей, и брать актуальную. Всё, что написано под вторую, содержит print без скобок и к вашей версии не подойдёт.
Можно ли учить Python вместе с английским? Можно, но не обязательно в первые вечера. Сообщения об ошибках и документация английские, и вы довольно быстро привыкнете к десятку повторяющихся слов; читать большие тексты пока не придётся. Когда дойдёте до документации библиотек, пригодится отдельный навык чтения технических текстов, а до этого можно обходиться переводчиком и выписыванием слов.
Что делать, если я застрял на ошибке больше чем на вечер? Отправить специалисту (или в чат курса, если вы учитесь по курсу) файл и текст ошибки, а не пересказ. С файлом ему понятно, где искать, а пересказ почти всегда теряет именно то, что нужно.
Оставить заявку
- Людмила Фомина — Русский язык для школьников и взрослых · от 1 300 ₽
- Алёна Викторовна Чернышова — Английский и русский для выпускников, студентов и взрослых · от 2 100 ₽
- Ирина Леонидовна Савицкая — Английский язык: ОГЭ, ЕГЭ, студенты и взрослые · от 2 200 ₽