Python с нуля: от основ до первых проектов

Пошаговый курс для начинающих, охватывающий синтаксис, структуры данных и создание простых приложений. Идеально подходит для самостоятельного изучения и получения практических навыков программирования.

1. Введение в Python: установка среды, переменные и типы данных

Введение в Python: установка среды, переменные и типы данных

Добро пожаловать в курс «Python с нуля: от основ до первых проектов». Если вы читаете эту статью, значит, вы решили освоить один из самых популярных и востребованных языков программирования в мире. Python любят за его простоту, читаемость и невероятную мощь. На нём пишут искусственный интеллект, веб-сайты, анализируют данные и автоматизируют рутинные задачи.

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

Шаг 1: Подготовка рабочего места

Прежде чем строить дом, нужно купить инструменты. В программировании нам понадобятся две вещи:

  • Интерпретатор Python — программа, которая «читает» ваш код и выполняет его.
  • Редактор кода (IDE) — удобный блокнот, где мы будем писать программы.
  • Установка Python

  • Перейдите на официальный сайт python.org.
  • Скачайте последнюю версию для вашей операционной системы (Windows или macOS).
  • ВАЖНО: При запуске установщика обязательно поставьте галочку напротив пункта Add Python to PATH (Добавить Python в PATH). Если этого не сделать, компьютер не сможет найти Python через командную строку.
  • Нажмите Install Now и дождитесь окончания установки.
  • Выбор редактора кода

    Код можно писать хоть в «Блокноте», но это неудобно. Для начинающих и профессионалов отличным выбором является Visual Studio Code (VS Code). Он бесплатный, легкий и поддерживает русский язык.

  • Скачайте его с code.visualstudio.com.
  • Установите и запустите.
  • Внутри VS Code найдите вкладку «Extensions» (квадратики слева) и установите расширение Python от Microsoft.
  • !Схема правильной подготовки среды разработки: интерпретатор плюс редактор кода

    Шаг 2: Ваша первая программа

    В мире программирования есть традиция: первая программа должна просто поздороваться с миром. Давайте не будем её нарушать.

  • Создайте на компьютере папку PythonCourse.
  • Откройте эту папку в VS Code (File -> Open Folder).
  • Создайте новый файл с названием hello.py. Обратите внимание на расширение .py — оно говорит компьютеру, что внутри находится код на Python.
  • Напишите в файле следующую строку:
  • Запустите программу (обычно это кнопка Play в углу или клавиша F5).
  • В нижней части экрана (в терминале) вы должны увидеть надпись: Привет, мир!.

    Разбор полетов: * print() — это функция. Команда компьютеру: «Напечатай то, что внутри скобок». * "Привет, мир!" — это текст. В Python текст всегда пишется в кавычках (одинарных ' или двойных ").

    Шаг 3: Переменные — коробки для данных

    Представьте, что вы переезжаете. Чтобы не потерять вещи, вы складываете их в коробки и подписываете маркером: «Книги», «Посуда», «Одежда». В программировании такие коробки называются переменными.

    Переменная — это именованная область памяти, в которой хранится значение.

    Когда вы пишете name = "Алексей", происходит следующее:

  • Создается значение "Алексей".
  • На него вешается ярлык (имя) name.
  • Знак = — это оператор присваивания. Он не означает равенство, как в математике. Он означает: «положи значение справа в переменную слева».
  • !Визуальная метафора переменных как коробок с данными

    Правила именования переменных

    Чтобы Python вас понимал, соблюдайте правила: * Имя может состоять из букв, цифр и нижнего подчеркивания _. * Имя не может начинаться с цифры (1name — ошибка, name1 — верно). * Не используйте пробелы. Вместо них используйте нижнее подчеркивание: my_favorite_color (этот стиль называется snake_case). * Python чувствителен к регистру: Age и age — это две разные переменные.

    Шаг 4: Типы данных

    В коробку можно положить книгу, а можно налить воду. Коробки разные. В Python данные тоже бывают разных типов. Рассмотрим четыре основных, которые покроют 90% ваших задач на старте.

    1. Целые числа (Integer или int)

    Это обычные числа без дробной части: 1, 100, -5, 0.

    С ними можно производить арифметические операции. Например, формула сложения:

    где — первое слагаемое, — второе слагаемое, а — сумма.

    2. Числа с плавающей точкой (Float)

    Это дробные числа. Важно: в программировании для разделения целой и дробной части используется точка, а не запятая.

    3. Строки (String или str)

    Любой текст, заключенный в кавычки.

    > «Если вы забудете кавычки вокруг текста, Python подумает, что это имя переменной, и выдаст ошибку». — Народная мудрость программистов.

    4. Логический тип (Boolean или bool)

    Всего два значения: Истина (True) или Ложь (False). Это нужно для принятия решений (например, если пользователь авторизован — показать профиль).

    Шаг 5: Динамическая типизация

    Python — язык с динамической типизацией. Это значит, что вам не нужно заранее сообщать компьютеру, какой тип данных будет в переменной. Python сам догадается по контексту.

    Чтобы узнать, какой тип данных хранится в переменной прямо сейчас, используйте команду type():

    Шаг 6: Ввод данных от пользователя

    Программы становятся интересными, когда они взаимодействуют с человеком. Для этого используется функция input().

    Критически важный момент: Функция input() всегда возвращает строку (текст). Даже если вы введете цифры.

    Попробуем написать калькулятор возраста:

    Этот код сломается с ошибкой TypeError, потому что мы пытаемся вычесть текст из числа. Чтобы это исправить, нужно превратить строку в число с помощью функции int().

    Исправленный вариант:

    Здесь мы использовали простую математическую модель:

    где — возраст (age), — текущий год (current year), а — год рождения (birth year).

    Практические советы и частые ошибки

  • SyntaxError: invalid syntax. Вы где-то пропустили скобку или кавычку. Проверьте парность символов () и "".
  • NameError: name 'x' is not defined. Вы пытаетесь использовать переменную, которую еще не создали, или опечатались в названии (например, создали count, а вызываете Count).
  • Отступы. В Python отступы (пробелы в начале строки) имеют значение. Пока пишите весь код без отступов слева, прижимая его к краю.
  • Практическое задание

    Чтобы закрепить материал, напишите программу «Визитка».

  • Запросите у пользователя его имя.
  • Запросите его город.
  • Запросите его возраст.
  • Выведите на экран красивое предложение, например: «Иван из города Минск, возраст: 25».
  • Попробуйте реализовать это самостоятельно в VS Code перед тем, как переходить к следующему уроку.

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

    2. Управление логикой программы: условные операторы if-else и циклы

    Управление логикой программы: условные операторы if-else и циклы

    В предыдущем уроке мы научились создавать «коробки» для данных (переменные) и класть в них информацию (типы данных). Но пока наши программы работают линейно: они просто выполняют команды одну за другой, сверху вниз, как поезд, идущий по единственному пути.

    В реальности программы должны уметь принимать решения («Если пользователь ввел правильный пароль, пропусти его») и повторять действия («Отправь письмо каждому из 1000 подписчиков»).

    Сегодня мы превратим наш код из прямолинейного поезда в умного робота. Мы изучим условные операторы и циклы.

    Часть 1: Условные операторы (if, elif, else)

    В жизни мы постоянно используем конструкцию «ЕСЛИ — ТО». Если на улице дождь, то я беру зонт. В Python для этого существует оператор if.

    Простой выбор: if

    Синтаксис в Python очень похож на обычный английский язык. Давайте напишем программу, которая проверяет, совершеннолетний ли пользователь.

    Обратите внимание на две критически важные вещи:

  • Двоеточие (:) в конце строки с if. Оно говорит Python: «Дальше пойдет блок команд, который нужно выполнить, если условие истинно».
  • Отступ (Indentation). Строки print сдвинуты вправо (обычно на 4 пробела или 1 нажатие Tab). В Python отступы — это не просто красота, это часть синтаксиса. Всё, что сдвинуто, находится внутри условия.
  • !Блок-схема работы условного оператора if

    Операторы сравнения

    Чтобы задать условие, нам нужны инструменты сравнения. Вот основные из них:

    * > — больше * < — меньше * >= — больше или равно * <= — меньше или равно * == — равно (проверка на равенство) * != — не равно

    > «Новички часто путают = и ==. Запомните: один знак = — это присваивание (положить значение в переменную), а два знака == — это вопрос (равны ли они?)».

    Альтернатива: else

    Что делать, если условие ложно? Для этого есть оператор else (иначе).

    Множественный выбор: elif

    Иногда вариантов больше, чем два. Например, в игре персонаж может быть «Здоров», «Ранен» или «Мертв». Для этого используется elif (сокращение от else if — иначе если).

    Python проверяет условия сверху вниз. Как только он находит первое истинное условие (True), он выполняет его блок и пропускает все остальные.

    Логические операторы: and, or, not

    Иногда нужно проверить сразу несколько условий. Например, чтобы получить скидку, нужно купить товар на сумму больше 1000 И иметь карту лояльности.

    * and (И) — истина, только если оба условия верны. * or (ИЛИ) — истина, если хотя бы одно условие верно. * not (НЕ) — переворачивает значение (делает ложь истиной и наоборот).

    Часть 2: Циклы (Loops)

    Представьте, что вам нужно вывести на экран фразу «Я люблю Python» 100 раз. Копировать строку print 100 раз — плохая идея. Программисты ленивы, поэтому они придумали циклы.

    Цикл while (Пока)

    Этот цикл работает до тех пор, пока условие остается истинным. Это похоже на многократный if.

    Как это работает:

  • Проверяется условие count <= 5.
  • Если оно верно, выполняется код внутри (print и увеличение count).
  • Программа возвращается к шагу 1.
  • Когда count станет равен 6, условие станет ложным, и цикл остановится.
  • Математически мы можем описать увеличение счетчика так:

    где — новое значение переменной, а — текущее значение.

    Опасность: Если вы забудете увеличить count, условие всегда будет истинным, и программа зависнет в бесконечном цикле. Чтобы прервать его, нажмите Ctrl+C в терминале.

    Цикл for (Для)

    Это самый популярный цикл в Python. Он используется, когда мы знаем, сколько раз нужно повторить действие, или когда нужно перебрать набор элементов (например, буквы в слове).

    Для создания последовательности чисел используется функция range().

    Функция range(start, stop, step) может принимать три параметра: * range(5) — от 0 до 4. * range(1, 6) — от 1 до 5. * range(1, 10, 2) — от 1 до 9 с шагом 2 (1, 3, 5, 7, 9).

    !Визуализация работы цикла for с функцией range

    Управление циклом: break и continue

    Иногда нужно вмешаться в работу цикла: * break — немедленно прерывает цикл полностью. * continue — пропускает текущую итерацию и переходит к следующей.

    Пример с поиском:

    Практический пример: Сумма чисел

    Давайте посчитаем сумму всех чисел от 1 до 100. В математике это записывается как:

    где — итоговая сумма, — знак суммирования, — переменная счетчика, меняющаяся от 1 до 100.

    В Python это выглядит так:

    Часть 3: Вложенность

    Вы можете вкладывать if в if, циклы в циклы и if в циклы. Главное — следить за отступами.

    Часть 4: Частые ошибки новичков

  • IndentationError. Вы забыли сделать отступ или смешали пробелы и табуляцию. VS Code обычно помогает это исправить, но будьте внимательны.
  • Пропущенное двоеточие. В конце строк с if, else, while, for всегда должно быть :.
  • Путаница диапазонов. Помните, что range(1, 5) дает числа 1, 2, 3, 4. Верхняя граница не включается.
  • Практическое задание: Игра «Угадай число»

    Теперь мы готовы написать настоящий проект. Компьютер загадает число, а вы будете его угадывать.

    Нам понадобится модуль random (мы изучим импорты подробнее позже, пока просто используйте этот код).

    Задание:

  • Импортируйте модуль random.
  • Сгенерируйте случайное число от 1 до 100.
  • Запустите бесконечный цикл while True.
  • Внутри цикла спросите у пользователя число.
  • Если число пользователя меньше загаданного — напишите «Мало».
  • Если больше — напишите «Много».
  • Если угадал — напишите «Победа!» и используйте break, чтобы выйти из цикла.
  • Пример кода (попробуйте сначала сами!):

    Поздравляю! Вы написали свою первую интерактивную игру. В следующем уроке мы научимся структурировать код с помощью функций, чтобы не писать одно и то же много раз.

    3. Работа с данными: списки, словари, кортежи и методы строк

    Работа с данными: списки, словари, кортежи и методы строк

    Приветствую вас в третьем модуле курса «Python с нуля: от основ до первых проектов». В прошлых уроках мы научились создавать переменные (коробки для данных) и управлять логикой программы (принимать решения и повторять действия).

    Но что, если данных становится слишком много? Представьте, что вам нужно сохранить список покупок из 50 товаров. Создавать 50 переменных (item1, item2, item3...) — это долго, неудобно и неэффективно.

    Сегодня мы изучим структуры данных (коллекции). Это специальные инструменты, которые позволяют хранить множество значений в одной переменной. Мы разберем списки, кортежи и словари, а также научимся виртуозно управлять текстом.

    Часть 1: Списки (Lists) — универсальные контейнеры

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

    Создание списка

    Списки создаются с помощью квадратных скобок [].

    !Визуализация списка как поезда с нумерацией вагонов (индексов)

    Индексация: как достать данные

    Самое важное правило программирования: счет начинается с нуля.

    Чтобы получить элемент списка, мы обращаемся к нему по индексу (номеру) в квадратных скобках.

    Математически доступ к элементу можно описать так:

    где — получаемое значение, — массив (список), а — индекс элемента (целое число ).

    Отрицательная индексация — это фишка Python. Если вы хотите взять последний элемент, не зная длины списка, используйте -1.

    Изменение списков

    Списки — это изменяемый (mutable) тип данных. Вы можете менять содержимое вагонов прямо на ходу.

    Методы списков

    У списков есть встроенные функции (методы) для управления содержимым:

  • Добавление: append() добавляет элемент в конец.
  • Вставка: insert() добавляет элемент в конкретное место.
  • Удаление: pop() удаляет элемент по индексу (по умолчанию последний) и возвращает его.
  • Удаление по значению: remove() удаляет первое совпадение значения.
  • Срезы (Slicing)

    Иногда нужно взять не один элемент, а часть списка. Для этого используются срезы: [старт:стоп:шаг].

    * numbers[1:4] — элементы с 1-го по 3-й (4-й не включается!). * numbers[:3] — с начала до 3-го. * numbers[::2] — каждый второй элемент.

    Часть 2: Кортежи (Tuples) — защита от изменений

    Кортеж — это тот же список, только неизменяемый (immutable). Он создается с помощью круглых скобок ().

    Если вы попытаетесь сделать coordinates[0] = 100, Python выдаст ошибку.

    Зачем это нужно?

  • Безопасность: Вы гарантируете, что важные данные (например, координаты GPS или настройки сервера) никто случайно не изменит в коде.
  • Скорость: Кортежи работают немного быстрее списков и занимают меньше памяти.
  • Часть 3: Словари (Dictionaries) — поиск по ключу

    Списки хороши, когда данные упорядочены. Но что, если нам нужно найти телефон друга по его имени? Искать по индексу 0, 1, 2 неудобно. Нам нужна структура «Ключ — Значение».

    Словарь (dict) — это неупорядоченная коллекция пар. Создается фигурными скобками {}.

    !Визуализация словаря как набора именованных ячеек

    Работа со словарем

    Мы обращаемся к данным не по номеру, а по ключу:

    Формально доступ к значению выглядит так:

    где — значение (Value), — словарь (Dictionary), а — уникальный ключ (Key).

    Важно: Ключи в словаре должны быть уникальными. Если вы добавите второй ключ "name", он перезапишет первый.

    Часть 4: Методы строк — магия текста

    Строка (str) в Python — это тоже своего рода коллекция символов. С ней можно работать почти как со списком (брать индексы, делать срезы), но у неё есть свои суперсилы.

    Полезные методы

  • Изменение регистра:
  • Разделение строки (split):
  • Превращает строку в список слов. Очень полезно при обработке ввода пользователя.

  • Замена (replace):
  • Очистка (strip):
  • Удаляет лишние пробелы в начале и конце строки (частая проблема при вводе паролей).

    Часть 5: Итерация по данным

    Теперь объединим знания из прошлого урока (циклы) и текущего.

    Перебор списка

    Перебор словаря

    У словаря есть метод .items(), который возвращает пары.

    Часть 6: Частые ошибки

  • IndexError: list index out of range.
  • Вы пытаетесь обратиться к элементу, которого нет. Например, в списке из 3 элементов (0, 1, 2) вы просите list[3]. Формула последнего индекса: где — индекс последнего элемента, а — длина списка.

  • KeyError.
  • Вы ищете в словаре ключ, которого там нет. Используйте метод .get(), чтобы избежать ошибки: user.get("address") вернет None, а не сломает программу.

  • TypeError: 'tuple' object does not support item assignment.
  • Вы пытаетесь изменить кортеж. Если нужно менять данные — используйте список.

    Практическое задание: «Менеджер задач»

    Напишите программу, которая помогает управлять списком дел.

    Алгоритм:

  • Создайте пустой список tasks = [].
  • Запустите бесконечный цикл while True.
  • Выведите меню:
  • * 1. Добавить задачу * 2. Показать задачи * 3. Выход
  • Спросите выбор пользователя.
  • Если 1: спросите текст задачи и добавьте её в список через .append().
  • Если 2: пройдитесь циклом for по списку и выведите задачи. Бонус: используйте enumerate(), чтобы выводить номера задач.
  • Если 3: прервите цикл через break.
  • Пример работы с enumerate для бонуса:

    В следующем уроке мы разберем функции — способ упаковывать код в собственные команды, чтобы делать программы модульными и профессиональными.

    4. Функциональное программирование: создание функций и работа с модулями

    Функциональное программирование: создание функций и работа с модулями

    Добро пожаловать в четвертый модуль курса «Python с нуля: от основ до первых проектов». До этого момента мы писали код, который выполнялся сверху вниз, строка за строкой. Это отлично работает для маленьких скриптов, но представьте, что вы пишете программу для управления банком или сложную игру. Если писать всё в один длинный файл, получится «спагетти-код» — запутанный, длинный и сложный для понимания.

    Сегодня мы переходим на новый уровень. Мы научимся упаковывать повторяющиеся действия в функции и разделять код на модули. Это главные инструменты профессионального разработчика для борьбы с хаосом.

    Часть 1: Что такое функция?

    Вспомните, как вы готовите еду. Если вам нужно сварить яйцо, вы не задумываетесь о физике процесса кипения воды каждый раз. У вас в голове есть готовый алгоритм: «Взять яйцо -> Положить в воду -> Варить 10 минут -> Достать».

    В программировании функция — это именованный блок кода, который выполняет конкретную задачу. Вы пишете его один раз, а затем просто «вызываете» по имени столько раз, сколько нужно.

    !Функция как черный ящик: принимает данные, обрабатывает их и возвращает результат

    Принцип DRY

    Программисты следуют философии DRYDon't Repeat Yourself (Не повторяй себя). Если вы скопировали один и тот же кусок кода в двух разных местах программы — это сигнал, что пора создавать функцию.

    Часть 2: Создание первой функции

    В Python функции создаются с помощью ключевого слова def (от английского define — определить).

    Синтаксис

  • def — команда Python: «Сейчас я буду создавать функцию».
  • say_hello — имя функции. Правила именования такие же, как у переменных (snake_case, маленькие буквы).
  • () — скобки. В них могут быть параметры (об этом ниже).
  • : — двоеточие, открывающее блок кода.
  • Тело функции — код с отступом.
  • Вызов функции

    Если вы просто напишете код выше и запустите программу, ничего не произойдет. Функция создана, но не запущена. Чтобы она сработала, её нужно вызвать.

    Часть 3: Параметры и аргументы

    Функция say_hello() скучная — она всегда говорит одно и то же. Чтобы функция стала умной, ей нужно передать данные. Данные передаются в скобках.

    Здесь name — это параметр (переменная внутри функции), а "Алексей" — это аргумент (конкретное значение, которое мы передаем).

    Несколько параметров

    Можно передавать сколько угодно данных, разделяя их запятыми.

    Математически это похоже на запись функции:

    Где — имя функции, и — аргументы, а результат — их сумма.

    Значения по умолчанию

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

    Часть 4: Возврат значения (return)

    Это самый важный момент для новичков.

    Функции бывают двух типов:

  • Те, что просто что-то делают (печатают текст, рисуют график) — как print().
  • Те, что возвращают результат, который можно сохранить в переменную — как input() или len().
  • Чтобы функция вернула результат, используется слово return.

    В чем разница? Если вы используете print внутри функции, вы не сможете использовать результат вычислений дальше в программе. return позволяет передать результат из функции обратно в основной код.

    > «Функция с return — это как сотрудник, который сделал отчет и положил вам на стол. Функция с print — это сотрудник, который просто прокричал цифры в коридор и ушел».

    Рассмотрим пример расчета площади круга:

    Где — площадь (Area), — математическая константа (примерно 3.14), — радиус круга.

    В коде это выглядит так:

    Часть 5: Область видимости (Scope)

    Переменные, созданные внутри функции, называются локальными. Они невидимы снаружи. Это сделано для безопасности, чтобы функции не мешали друг другу.

    Однако функция может видеть переменные, созданные снаружи (глобальные). Но менять их внутри функции без специальной команды global (которую лучше не использовать без нужды) нельзя.

    Часть 6: Модули — используем чужой код

    Python славится своей библиотекой. «Batteries included» (Батарейки в комплекте) — девиз Python. Это значит, что для большинства задач уже есть готовый код.

    Файлы с готовым кодом называются модулями.

    Импорт модулей

    Чтобы использовать модуль, нужно написать import в начале файла.

    #### 1. Модуль random (Случайные числа)

    #### 2. Модуль math (Математика)

    Формула корня:

    Где — результат, — число, из которого извлекается корень, — знак квадратного корня.

    Импорт конкретных функций

    Если вам не нужен весь модуль, а только одна функция, используйте конструкцию from ... import ....

    Практическое задание: «Конвертер валют»

    Давайте объединим знания о функциях и условных операторах.

    Задача: Напишите программу, которая конвертирует рубли в доллары или евро.

  • Создайте функцию convert(amount, currency), где amount — сумма в рублях, а currency — код валюты ("USD" или "EUR").
  • Внутри функции задайте курс (например, USD = 90, EUR = 100).
  • Если валюта неизвестна, верните текст "Ошибка".
  • Функция должна возвращать (return) итоговую сумму.
  • В основной части программы спросите у пользователя сумму и валюту, вызовите функцию и выведите результат.
  • Пример реализации:

    Советы и частые ошибки

  • Забыли return. Если функция ничего не возвращает, но вы пытаетесь присвоить её результат переменной, там окажется специальное значение None (пустота).
  • Отступы. Весь код внутри функции должен быть сдвинут вправо.
  • Порядок определения. Сначала создайте функцию (def), и только ниже по коду вызывайте её. Python читает файл сверху вниз.
  • В следующем уроке мы углубимся в работу с файловой системой: научимся читать и записывать текстовые файлы, чтобы сохранять результаты работы наших программ навсегда.

    5. Основы ООП, работа с файлами и разработка финального проекта

    Основы ООП, работа с файлами и разработка финального проекта

    Поздравляю! Вы добрались до финального модуля курса «Python с нуля: от основ до первых проектов». Мы прошли большой путь: от установки Python и переменных до циклов, структур данных и функций. Вы уже умеете писать работающий код, но, скорее всего, заметили, что с ростом программы управлять ею становится сложнее. Переменные разбросаны по файлу, функции путаются, а данные исчезают сразу после закрытия программы.

    В этом уроке мы решим эти проблемы. Мы изучим Объектно-Ориентированное Программирование (ООП) — подход, который используют профессионалы для создания сложных систем. Мы также научимся сохранять данные в файлы, чтобы ваша программа «помнила» информацию. И, наконец, мы объединим все знания, чтобы создать финальный проект.

    Часть 1: Объектно-Ориентированное Программирование (ООП)

    До сих пор мы писали код в процедурном стиле: данные отдельно, функции отдельно. ООП предлагает другой подход: объединить данные и действия над ними в единую сущность — Объект.

    Класс и Объект: в чем разница?

    Представьте, что вы инженер на автозаводе. У вас есть чертеж автомобиля. На чертеже написано: «4 колеса, руль, двигатель, цвет — любой». Этот чертеж — это Класс.

    По этому чертежу завод выпускает тысячи реальных машин. Одна красная, другая синяя, третья с мощным мотором. Каждая конкретная машина — это Объект (или экземпляр класса).

    * Класс (Class) — это шаблон, инструкция, описание того, каким должен быть объект. * Объект (Object) — это конкретная реализация этого шаблона в памяти компьютера.

    !Визуальная метафора различия между классом-чертежом и объектами-реализациями

    Создаем первый класс

    В Python классы создаются ключевым словом class. Имена классов принято писать с большой буквы (CamelCase).

    Давайте разберем этот код, так как здесь много нового:

  • class Cat: — мы объявили новый тип данных «Кошка».
  • __init__ — это специальный метод, который называется конструктор. Он запускается автоматически в момент создания нового объекта. Его задача — настроить начальные характеристики.
  • self — это ссылка на сам объект. Когда вы создаете кошку Мурку, self — это Мурка. Когда создаете Барсика, self — это Барсик. Это способ объекта сказать «Я» или «Моё».
  • self.name = name — мы берем переданное имя и сохраняем его внутри объекта.
  • Создание объектов

    Теперь, когда у нас есть чертеж (класс), давайте создадим реальных котов.

    Обратите внимание: функция meow одна и та же, но результат разный, потому что self в каждом случае указывает на разные данные.

    Часть 2: Работа с файлами

    Все переменные, которые мы создавали ранее, живут в оперативной памяти (RAM). Как только программа завершается или вы выключаете компьютер, они исчезают. Чтобы сохранить данные (например, прогресс в игре или список дел), нам нужно записать их на жесткий диск в файл.

    Чтение и запись

    В Python для этого используется встроенная функция open(). У неё есть режимы работы: * 'r' (read) — только чтение (по умолчанию). * 'w' (write) — запись. Внимание: если файл существовал, он будет полностью стерт и перезаписан! * 'a' (append) — дозапись. Новые данные добавятся в конец файла.

    Конструкция with

    Работать с файлами нужно аккуратно. Если вы открыли файл, но забыли закрыть его (команда close()), он может повредиться или заблокировать память. Чтобы не думать об этом, в Python используют менеджер контекста with.

    Запись в файл:

    Чтение из файла:

    Параметр encoding="utf-8" важен для корректного отображения кириллицы (русских букв).

    Оценка объема данных

    Представим, что мы сохраняем огромный лог событий. Как понять, сколько места он займет? Размер текстового файла можно приблизительно рассчитать по формуле:

    где — итоговый размер файла в байтах, — общее количество символов в тексте, а — размер одного символа в байтах (в кодировке UTF-8 английская буква занимает 1 байт, а русская — обычно 2 байта).

    Часть 3: Финальный проект — «Умный менеджер задач»

    Пришло время объединить всё, чему мы научились: переменные, циклы, условия, списки, функции, классы и файлы. Мы напишем программу TaskManager, которая позволяет добавлять задачи, отмечать их выполнение и сохранять список при выходе.

    Шаг 1: Проектирование класса Задачи

    Сначала опишем, что такое одна задача. У неё должно быть описание и статус (выполнена или нет).

    Шаг 2: Класс Менеджера Задач

    Этот класс будет управлять списком задач и отвечать за сохранение в файл.

    Шаг 3: Основной цикл программы

    Теперь создадим интерфейс для пользователя.

    !Схема логики работы приложения TaskManager

    Заключение курса

    Поздравляю! Вы только что написали полноценное приложение с использованием принципов ООП и постоянным хранением данных.

    В этом курсе мы прошли путь от print("Hello World") до создания собственных классов и файловых баз данных. Python — это огромный мир. Дальше вы можете изучать: * Веб-разработку (Django, Flask) — создание сайтов. * Анализ данных (Pandas, Matplotlib) — работа с таблицами и графиками. * Ботов (Aiogram) — создание ботов для Telegram.

    Главный секрет программиста: практика. Не бойтесь ошибаться, читайте документацию и пишите код каждый день. Удачи в ваших проектах!