Основы программирования на Python

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

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

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

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

Почему именно Python?

Python (читается как «Пайтон», хотя часто говорят «Питон») — это высокоуровневый язык программирования общего назначения. Его главная философия — читаемость кода. Программы на Python часто выглядят как обычный текст на английском языке.

Вот основные причины его популярности:

* Простота: У него минималистичный синтаксис. Там, где в C++ или Java нужно написать 10 строк кода, в Python часто достаточно одной. * Универсальность: На нем пишут веб-сайты (Instagram, Pinterest), создают искусственный интеллект (ChatGPT, Tesla Autopilot), анализируют данные (NASA, CERN) и автоматизируют рутинные задачи. * Огромное сообщество: Если у вас возникнет вопрос, скорее всего, кто-то уже задал его на форуме и получил ответ.

Установка окружения

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

Шаг 1: Установка Python

  • Перейдите на официальный сайт Python.org.
  • Скачайте последнюю версию для вашей операционной системы (Windows, macOS или Linux).
  • Важно для пользователей Windows: При установке обязательно поставьте галочку напротив пункта Add Python to PATH. Это позволит запускать Python из командной строки.
  • Шаг 2: Выбор редактора кода

    Код можно писать даже в «Блокноте», но это неудобно. Программисты используют IDE (интегрированные среды разработки). Для начала я рекомендую:

    * IDLE: Устанавливается вместе с Python. Простая и подходит для первых шагов. * Visual Studio Code (VS Code): Самый популярный современный редактор. Легкий, красивый и мощный. * PyCharm Community Edition: Профессиональный инструмент, созданный специально для Python.

    Ваша первая программа

    В мире программирования есть традиция: первой программой всегда должен быть вывод фразы «Hello, World!». Давайте не будем нарушать традиции.

    Откройте ваш редактор кода, создайте файл с названием hello.py (расширение .py обязательно) и напишите следующую строку:

    Запустите программу. Если вы увидели на экране текст Hello, World!, поздравляю — вы написали свой первый код!

    Функция print() — это команда, которая говорит компьютеру: «Выведи то, что находится внутри скобок, на экран».

    Синтаксис Python: почему отступы так важны

    В большинстве языков программирования (Java, C, JavaScript) блоки кода выделяются фигурными скобками {}. В Python всё иначе. Здесь структуру определяют отступы (пробелы в начале строки).

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

    Пример правильного кода:

    Если вы уберете пробелы перед print, Python выдаст ошибку IndentationError. Это значит, что он не понимает, к чему относится эта команда.

    Комментарии

    Иногда нам нужно оставить заметку для себя или других программистов, которую компьютер должен игнорировать. Это называется комментарием. В Python для этого используется символ решетки #.

    Переменные: коробки с данными

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

    В программировании переменная — это и есть такая подписанная коробка, в которой хранится какое-то значение.

    !Визуализация концепции переменных как коробок с названиями, хранящих разные типы данных.

    Чтобы создать переменную, нужно придумать ей имя и присвоить значение с помощью знака равно =.

    Здесь мы создали три «коробки»:

  • user_name, в которой лежит текст «Алекс».
  • age, в которой лежит число 25.
  • height, в которой лежит число 1.85.
  • Правила именования переменных

    Имя переменной — это её идентификатор. Чтобы Python вас понял, следуйте правилам:

  • Имя может состоять из букв (a-z, A-Z), цифр (0-9) и нижнего подчеркивания (_).
  • Имя не может начинаться с цифры (1name — ошибка).
  • Нельзя использовать пробелы (user name — ошибка, используйте user_name).
  • Python чувствителен к регистру: Age, age и AGE — это три разные переменные.
  • > В Python принято использовать стиль snake_case (змеиный регистр): все буквы строчные, слова разделяются подчеркиванием. Например: my_favorite_color.

    Динамическая типизация

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

    Типы данных

    Хотя Python сам определяет тип данных, программист должен понимать, с чем он работает. Рассмотрим основные базовые типы.

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

    Это числа без дробной части: 1, 100, -50, 0. Тип называется int (от англ. integer).

    С ними можно производить математические операции. Рассмотрим пример присваивания с арифметикой. В математике запись не имеет смысла (если конечное число), но в программировании это одна из самых частых операций.

    Формула обновления переменной:

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

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

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

    Это дробные числа: 3.14, 2.5, -0.01. Разделителем всегда служит точка, а не запятая. Тип называется float.

    3. Строки (str)

    Строка — это любой текст, заключенный в кавычки. Тип называется str (от англ. string). Можно использовать как одинарные ', так и двойные " кавычки, главное — чтобы они были парными.

    Строки можно «складывать» (это называется конкатенация):

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

    Самый простой тип, который имеет всего два значения: True (Истина) и False (Ложь). Обратите внимание, они пишутся с большой буквы. Тип называется bool (от англ. boolean).

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

    Преобразование типов

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

    Для этого используются функции с названиями типов:

    * int() — превращает в целое число. * float() — превращает в дробное число. * str() — превращает в строку.

    Ввод данных от пользователя

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

    Важное правило: Функция input() всегда возвращает строку (str). Даже если пользователь введет цифры «123», для программы это будет текст «123».

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

    Заключение

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

    В следующей статье мы научим нашу программу принимать решения с помощью условных операторов if, else и elif.

    А пока — выполните домашнее задание, чтобы закрепить материал!

    2. Управляющие конструкции: условные операторы и циклы

    Управляющие конструкции: условные операторы и циклы

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

    Сегодня мы добавим в наш арсенал ветвления и циклы. Это превратит ваш код из прямолинейного списка инструкций в умную систему, способную принимать решения и автоматизировать рутину. Мы научим программу говорить «Если... то...» и «Повторяй, пока...».

    Условные операторы: искусство принятия решений

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

    Оператор if (Если)

    Самая простая проверка — это оператор if. Он выполняет блок кода, только если условие истинно (True).

    Синтаксис выглядит так:

    Обратите внимание на двоеточие : в конце строки с if и на отступ (4 пробела) перед print. Как мы помним из прошлого урока, отступы в Python критически важны. Они показывают, какой код находится внутри условия.

    !Схема работы условного оператора if: действие выполняется только при истинности условия.

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

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

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

    Пример математического сравнения:

    Где — первое сравниваемое число, — второе число, а символ означает операцию сравнения «больше».

    Оператор else (Иначе)

    Что делать, если условие не выполнилось? Для этого существует else. Он срабатывает, когда if вернул ложь.

    Оператор elif (Иначе если)

    Иногда вариантов больше, чем два. Например, светофор: красный, желтый, зеленый. Для таких случаев используется elif (сокращение от else if).

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

    Логические операторы

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

    Для этого используются логические связки:

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

    Представьте, что вам нужно вывести на экран фразу «Я люблю Python» 100 раз. Писать 100 строк print() — это долго и неэффективно. В программировании есть принцип DRY (Don't Repeat Yourself — Не повторяйся). Для повторения действий используются циклы.

    Цикл while (Пока)

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

    Разберем, что здесь происходит:

  • Мы создаем переменную-счетчик count равную 1.
  • Цикл проверяет: ? Да. Выполняем код внутри.
  • Выводим текст.
  • Увеличиваем count на 1. Теперь count равен 2.
  • Цикл снова проверяет: ? Да. Повторяем.
  • ...Процесс идет до тех пор, пока count не станет 6. Условие ложно, цикл останавливается.
  • > Осторожно: Бесконечный цикл! > Если вы забудете увеличить счетчик (count = count + 1), условие всегда будет истинным, и программа зависнет, бесконечно печатая текст. Это называется «зацикливанием».

    Цикл for (Для)

    Цикл for в Python устроен иначе, чем в многих других языках. Он предназначен для перебора элементов в какой-либо последовательности (например, букв в строке или чисел в диапазоне).

    #### Перебор строки

    Этот код возьмет первую букву 'P', положит её в переменную letter, выполнит блок кода. Затем возьмет 'y', положит в letter, и так далее до конца слова.

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

    #### Функция range()

    Если нам нужно просто повторить действие раз, мы используем функцию range(). Она генерирует последовательность чисел.

    Математически диапазон range(start, stop) можно записать как полуинтервал:

    Где — начальное число (включительно), а — конечное число (не включительно). Если не указан, он по умолчанию равен 0.

    Пример сложения чисел от 1 до 100 с помощью цикла:

    Здесь мы реализуем формулу суммы:

    Где — итоговая сумма, — знак суммирования, — переменная, которая принимает значения от 1 до 100, и на каждом шаге прибавляется к общей сумме.

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

    Иногда нам нужно вмешаться в работу цикла.

  • break (Прервать) — немедленно останавливает цикл полностью.
  • continue (Продолжить) — прерывает текущую итерацию (круг) и переходит к следующей.
  • Пример с break:

    Пример с continue:

    Вложенные конструкции

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

    Заключение

    Поздравляю! Теперь вы владеете инструментами управления потоком программы. Вы можете заставить код принимать решения с помощью if и выполнять рутинную работу с помощью while и for. Это огромный шаг вперед.

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

    А пока — проверьте свои знания в тесте ниже!

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

    Структуры данных: списки, кортежи, словари и множества

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

    Создавать для каждого элемента отдельную переменную (item1, item2, item3...) — это тупиковый путь. Нам нужны контейнеры, способные вмещать множество значений сразу. В Python такие контейнеры называются структурами данных.

    Сегодня мы изучим «большую четверку» встроенных структур данных Python:

  • Списки (Lists) — упорядоченные изменяемые коллекции.
  • Кортежи (Tuples) — упорядоченные неизменяемые коллекции.
  • Словари (Dictionaries) — коллекции пар «ключ-значение».
  • Множества (Sets) — коллекции уникальных элементов.
  • Списки (Lists): Универсальные коробки

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

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

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

    Индексация: Доступ к элементам

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

    !Визуализация индексов списка: первый элемент всегда имеет индекс 0.

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

    Если список имеет длину , то индекс последнего элемента равен . Попытка обратиться к индексу, которого нет (например, fruits[10]), вызовет ошибку IndexError.

    Математически диапазон допустимых индексов можно записать так:

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

    Отрицательная индексация

    Python имеет удобную фишку: отрицательные индексы позволяют считать с конца. -1 — это последний элемент, -2 — предпоследний.

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

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

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

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

    * append(item) — добавляет элемент в конец списка. * insert(index, item) — вставляет элемент на указанную позицию. * pop(index) — удаляет элемент по индексу и возвращает его (по умолчанию удаляет последний). * remove(item) — удаляет первый найденный элемент по значению.

    Кортежи (Tuples): Защищенные списки

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

    Кортежи создаются с помощью круглых скобок ().

    Попытка изменить кортеж приведет к ошибке:

    Зачем нужны кортежи?

  • Защита данных: Если вы передаете в программу настройки, которые не должны меняться (например, координаты GPS), используйте кортеж.
  • Скорость: Кортежи работают немного быстрее списков и занимают меньше памяти.
  • Ключи словарей: Только неизменяемые типы могут быть ключами в словарях (об этом ниже).
  • Словари (Dictionaries): Ключ к данным

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

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

    !Словарь похож на камеру хранения, где доступ к содержимому осуществляется по уникальному ключу, а не по номеру.

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

    В отличие от списков, здесь мы обращаемся к данным не по индексу (0, 1, 2), а по ключу.

    Ключом может быть строка, число или кортеж (любой неизменяемый тип). Значением может быть что угодно.

    Множества (Sets): Уникальность превыше всего

    Множество — это неупорядоченная коллекция уникальных элементов. В множестве не может быть дубликатов.

    Они также создаются фигурными скобками {}, но без двоеточий, или функцией set().

    Обратите внимание: Python автоматически удалил повторы тройки.

    Математика множеств

    Множества в Python поддерживают классические математические операции, известные вам из теории множеств. Это мощный инструмент для аналитики.

    Пусть у нас есть два множества: * — друзья, которых позвал Вася. * — друзья, которых позвал Петя.

    1. Объединение (Union)

    Кто придет на вечеринку в итоге (все уникальные люди)?

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

    2. Пересечение (Intersection)

    Кого знают и Вася, и Петя (общие друзья)?

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

    Как выбрать структуру данных?

    Чтобы не запутаться, используйте эту простую шпаргалку:

    | Нужен порядок? | Нужна изменяемость? | Нужны уникальные элементы? | Нужны ключи? | Выбирайте | Пример | | :--- | :--- | :--- | :--- | :--- | :--- | | Да | Да | Нет | Нет | Список (List) | Список задач | | Да | Нет | Нет | Нет | Кортеж (Tuple) | Координаты | | Нет | Да | Да | Нет | Множество (Set) | ID пользователей | | Нет | Да | Да (ключи) | Да | Словарь (Dict) | Анкета пользователя |

    Итерация по структурам

    Все эти структуры отлично работают с циклом for, который мы изучили в прошлом уроке.

    Заключение

    Сегодня мы значительно расширили возможности наших программ. Теперь вы можете хранить и обрабатывать большие объемы информации, структурировать данные о пользователях и выполнять математические операции над группами объектов.

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

    А пока — закрепите знания на практике, выполнив задания ниже!

    4. Функции, модули и работа с файловой системой

    Функции, модули и работа с файловой системой

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

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

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

    Функции: принцип DRY

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

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

    !Визуализация функции как механизма преобразования входных данных в результат.

    Создание функции

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

    Этот код только создает инструмент, но не использует его. Чтобы код внутри функции сработал, её нужно вызвать по имени с круглыми скобками:

    Аргументы функции

    Функции становятся по-настоящему полезными, когда они могут работать с разными данными. Данные, которые мы передаем в функцию, называются аргументами (или параметрами).

    Давайте напишем функцию, которая приветствует конкретного человека:

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

    Возврат значения (return)

    До сих пор наши функции просто печатали текст на экран. Но в реальном программировании функции чаще всего должны возвращать результат, чтобы программа могла использовать его дальше (например, сохранить в базу данных или использовать в математических расчетах).

    Для этого используется ключевое слово return.

    Рассмотрим пример перевода температуры из градусов Цельсия в градусы Фаренгейта. Формула выглядит так:

    Где — температура в Фаренгейтах, — температура в Цельсиях, — коэффициент масштабирования, а — смещение точки замерзания воды.

    Реализуем это в коде:

    Важно: После выполнения команды return функция немедленно прекращает работу и выходит. Любой код, написанный после return внутри функции, никогда не выполнится.

    Область видимости переменных (Scope)

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

    Программа «забывает» переменную secret_code сразу после того, как функция завершила работу. Это сделано для безопасности и экономии памяти.

    Модули: не изобретайте велосипед

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

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

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

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

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

    Этот модуль содержит сложные математические функции.

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

    Незаменим для игр и симуляций.

    #### 3. Модуль datetime (Дата и время)

    Позволяет работать с календарем и часами.

    Внешние библиотеки

    Кроме встроенных модулей, существует сотни тысяч библиотек, написанных сообществом (для создания сайтов, анализа данных, искусственного интеллекта). Они устанавливаются через специальную программу pip, которая идет в комплекте с Python, но это тема для отдельного разговора.

    Работа с файловой системой

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

    Чтение и запись файлов

    В Python для работы с файлами используется встроенная функция open(). Она принимает два основных аргумента: имя файла и режим работы.

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

    !Иллюстрация различий между режимами чтения, записи и добавления.

    Правильный способ: менеджер контекста with

    Работая с файлами, очень важно не забывать их закрывать, чтобы освободить ресурсы системы. Раньше для этого использовали метод .close(), но если в программе случалась ошибка до закрытия, файл мог повредиться.

    Современный стандарт Python — использовать конструкцию with. Она автоматически закрывает файл, даже если произошла ошибка.

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

    Обратите внимание на encoding="utf-8". Это важно указывать, чтобы корректно сохранять кириллицу (русские буквы).

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

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

    Практический пример: Дневник

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

    Теперь, каждый раз запуская эту программу, вы будете пополнять свой файл diary.txt новыми записями, и они не пропадут.

    Заключение

    Сегодня вы перешли на новый уровень. Вы научились:

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

    А пока — выполните задания, чтобы закрепить материал!

    5. Основы объектно-ориентированного программирования (ООП) и обработка исключений

    Основы объектно-ориентированного программирования (ООП) и обработка исключений

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

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

    Здесь на сцену выходит Объектно-Ориентированное Программирование (ООП). Это подход, который позволяет моделировать реальный мир внутри компьютера.

    Что такое ООП?

    В процедурном программировании (то, что мы делали раньше) главными были действия (функции). В ООП главными становятся объекты.

    Посмотрите вокруг. Мир состоит из объектов: стол, кот, автомобиль, телефон. У каждого объекта есть:

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

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

    Это два фундаментальных понятия, которые часто путают новички.

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

    !Визуализация различия между абстрактным классом-чертежом и конкретными объектами, созданными на его основе.

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

    Создание первого класса

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

    Давайте создадим класс Cat (Кот).

    Разберем этот код по кирпичикам.

    Метод __init__

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

    Обратите внимание на нижние подчеркивания: два до init и два после. Это сигнал Python, что метод служебный.

    Загадочный self

    Вы заметили, что первым аргументом везде стоит self? Это ссылка на текущий объект.

    Когда мы пишем self.name = name, мы говорим компьютеру: «Возьми имя, которое нам передали, и сохрани его внутри этого конкретного кота».

    Без self переменная name просто исчезла бы после завершения функции. С self она остается в памяти объекта навсегда.

    Создание объектов

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

    Инкапсуляция, Наследование, Полиморфизм

    Это три кита, на которых стоит ООП. Сегодня мы подробно разберем Наследование, так как это самый мощный инструмент для новичка.

    Наследование

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

    Вместо этого мы создаем общий класс Animal (Родитель), а остальные классы (Потомки) наследуют его возможности.

    Класс Dog получил метод sleep бесплатно. Если мы захотим исправить логику сна, мы поменяем её только в одном месте — в классе Animal, и это изменение применится ко всем зверям сразу.

    Практический пример: Геометрические фигуры

    Давайте применим ООП для математических расчетов. Создадим класс Circle (Круг), который умеет считать свою площадь.

    Формула площади круга:

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

    Реализация в коде:

    Обработка исключений: когда все идет не по плану

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

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

    Конструкция try ... except

    Чтобы программа была надежной, мы используем «ловушку» для ошибок.

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

  • Python пытается выполнить код внутри try.
  • Если все хорошо, блоки except игнорируются.
  • Если случается ошибка, Python ищет подходящий except.
  • Программа не падает, а выполняет код обработки ошибки и идет дальше.
  • Блок finally

    Иногда нужно выполнить действие независимо от того, была ошибка или нет (например, закрыть файл или разорвать соединение с сервером). Для этого существует блок finally.

    Заключение

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

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

    А пока — выполните домашнее задание, чтобы закрепить материал!