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

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

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

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

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

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

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

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

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

Установка и настройка среды

Прежде чем писать код, нам нужно установить «переводчик», который объяснит компьютеру наши команды. Этот переводчик и есть интерпретатор Python.

Шаг 1: Скачивание Python

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

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

    * IDLE — устанавливается вместе с Python. Простая и минималистичная среда, идеальна для первых шагов. * Visual Studio Code (VS Code) — мощный редактор от Microsoft. Он более сложный, но очень популярный в профессиональной среде.

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

    Давайте проверим, что все работает. Откройте IDLE или другой редактор, создайте новый файл и напишите следующую строку:

    Запустите код (в IDLE это клавиша F5). Если вы увидели на экране текст «Привет, мир!», поздравляем! Вы официально написали свою первую программу.

    Команда print() — это функция, которая выводит информацию на экран. То, что находится внутри скобок и кавычек, называется аргументом.

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

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

    !Визуальная метафора переменной как контейнера для хранения значений.

    Создание переменной

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

    Здесь знак = — это не математическое равенство, а оператор присваивания. Мы говорим компьютеру: «Возьми значение справа и положи его в переменную с именем слева».

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

    Чтобы ваш код был понятен и работал корректно, следуйте этим правилам:

  • Имя переменной может содержать буквы (a-z, A-Z), цифры (0-9) и знак подчеркивания (_).
  • Имя не может начинаться с цифры.
  • Нельзя использовать пробелы. Вместо них используйте подчеркивание. Этот стиль называется snake_case (змеиный регистр).
  • Python чувствителен к регистру: Score, score и SCORE — это три разные переменные.
  • Примеры: * my_variable — правильно. * variable2 — правильно. * 2variableошибка (начинается с цифры). * my variableошибка (содержит пробел).

    Базовые типы данных

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

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

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

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

    где — периметр, — количество сторон, а — длина одной стороны.

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

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

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

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

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

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

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

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

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

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

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

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

    Если вы хотите использовать введенное число для математики, вам нужно превратить строку в число. Для этого используются функции int() и float().

    Представим, что нам нужно рассчитать площадь прямоугольника по формуле:

    где — площадь, — длина, а — ширина.

    Вот как это будет выглядеть в коде:

    Если бы мы не использовали int(), Python попытался бы умножить строку на строку, что вызвало бы ошибку.

    Комментарии

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

    Заключение

    Сегодня вы сделали огромный шаг — настроили среду, узнали, как хранить данные в переменных, и познакомились с основными типами данных: int, float, str и bool. Вы также научились вводить и выводить информацию.

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

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

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

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

    Представьте, что вы пишете инструкцию для робота. Если вы скажете ему просто «Иди вперед», он упрется в стену и продолжит буксовать. Нам нужны конструкции вроде: «Если перед тобой стена, поверни направо, иначе иди прямо». А если нужно перенести 100 коробок? Мы не будем писать команду «Возьми коробку» 100 раз. Мы скажем: «Пока есть коробки, переноси их».

    В программировании это называется управлением потоком (Control Flow). Сегодня мы изучим два кита, на которых держится логика любой программы: условные операторы и циклы.

    Логика и сравнения

    Прежде чем учить программу принимать решения, нужно научиться задавать вопросы, на которые можно ответить «Да» (True) или «Нет» (False). Для этого в Python используются операторы сравнения.

    Вот основные из них:

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

    Примеры:

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

    Иногда нужно проверить сразу несколько условий. Например: «Если на улице тепло И нет дождя, я пойду гулять». В Python для этого есть слова and, or и not.

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

    Условные конструкции: if, elif, else

    Теперь, когда мы умеем сравнивать, давайте напишем код, который реагирует на условия. Главный инструмент здесь — оператор if (если).

    !Блок-схема работы условного оператора if.

    Синтаксис и отступы

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

    Если переменная age будет меньше 18, то строки с отступом просто проигнорируются.

    Ветвление: else и elif

    Что, если мы хотим сделать что-то, когда условие не выполнено? Для этого есть else (иначе).

    А если условий много? Например, проверка оценки студента. Используем elif (сокращение от else if — иначе если).

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

    Циклы: повторение действий

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

    Цикл while (Пока)

    Цикл while выполняет блок кода до тех пор, пока условие остается истинным.

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

  • Проверяется условие counter <= 5.
  • Если True, выполняется код внутри (печать и увеличение счетчика).
  • Программа возвращается к шагу 1.
  • Когда counter станет равен 6, условие станет False, и цикл завершится.
  • Осторожно: Бесконечный цикл! Если вы забудете увеличить счетчик (counter = counter + 1), условие всегда будет истинным, и программа «зависнет», бесконечно печатая единицы. Чтобы прервать такую программу, обычно используют сочетание клавиш Ctrl+C.

    Цикл for (Для)

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

    !Метафора работы цикла for: последовательная обработка элементов.

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

    Чаще всего for используют с функцией range(), которая создает последовательность чисел.

    Обратите внимание: в программировании счет часто начинается с нуля. range(5) создает набор: 0, 1, 2, 3, 4.

    Если нужно начать не с нуля, можно указать старт и финиш:

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

    Строка — это тоже последовательность символов. Мы можем разобрать её по буквам:

    Этот код выведет каждую букву слова «Python» на новой строке.

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

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

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

    Пример с continue. Печатаем только нечетные числа (пропускаем четные):

    Практический пример: Математика в коде

    Давайте решим классическую задачу: найдем сумму всех натуральных чисел от 1 до . Это известная задача, которую, по легенде, решил юный математик Гаусс.

    Сумму арифметической прогрессии можно найти по формуле:

    где — искомая сумма, — количество чисел, — первое число (в нашем случае 1), а — последнее число (в нашем случае ).

    Реализуем это двумя способами: через цикл и через формулу, чтобы убедиться, что программирование работает верно.

    Запустив этот код, вы увидите, что оба результата равны 5050. Цикл сложил 1+2+3...+100, а формула вычислила это мгновенно. В программировании часто бывает несколько путей к одному решению.

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

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

    Здесь внешний цикл (переменная i) делает один шаг, и внутри него внутренний цикл (переменная j) пробегает полностью от 1 до 3.

    Заключение

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

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

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

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

    В предыдущих статьях мы научились создавать переменные, которые хранят одно значение: число, строку или булево значение. Мы также освоили циклы, которые позволяют повторять действия. Но что, если нам нужно хранить не одно имя пользователя, а список из тысячи имен? Или базу данных товаров с ценами и описанием?

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

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

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

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

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

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

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

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

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

    Изменяемость списков

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

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

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

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

    Срезы (Slicing)

    Срезы позволяют получить часть списка. Формат: список[старт:стоп:шаг].

    Практический пример: Среднее арифметическое

    Допустим, у нас есть список оценок студента, и мы хотим посчитать средний балл. В математике среднее арифметическое вычисляется по формуле:

    Где — среднее значение, — количество элементов, а — сумма всех элементов списка.

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

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

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

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

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

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

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

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

    Словарь хранит пары Ключ: Значение. Ключи должны быть уникальными.

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

    Создание и использование

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

    Словари идеально подходят для описания объектов реального мира, где у каждого свойства есть свое название.

    Продвинутая работа со строками

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

    Форматирование строк (f-strings)

    Раньше программисты использовали сложные способы вставки переменных в текст. В современном Python (версии 3.6+) используется золотой стандарт — f-строки.

    Вы просто ставите букву f перед кавычками и пишете имена переменных в фигурных скобках {}.

    Полезные методы строк

  • Разделение и соединение:
  • Очистка и замена:
  • Регистр:
  • Итерация по структурам данных

    В прошлой статье мы изучили цикл for. Теперь мы можем применить его к нашим новым структурам.

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

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

    При переборе словаря цикл по умолчанию идет по ключам.

    Если нужны и ключи, и значения сразу, используют метод .items():

    Заключение

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

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

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

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

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

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

    Функции: Строительные блоки программы

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

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

    !Визуальная метафора функции как конвейера или кухонного комбайна

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

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

    Когда интерпретатор видит def, он просто запоминает функцию. Код внутри нее не выполнится, пока вы явно не напишете имя функции со скобками: say_hello().

    Аргументы и параметры

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

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

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

    Здесь radius — это параметр. Когда мы вызываем calculate_circle_area(5), число 5 попадает в переменную radius внутри функции.

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

    В примере выше функция просто печатает результат на экран. Но что, если мы хотим использовать вычисленную площадь дальше в расчетах? Для этого функция должна вернуть результат. Используется ключевое слово return.

    Важно: return — это финишная черта функции. Как только Python встречает return, выполнение функции немедленно прекращается, и значение передается обратно в место вызова.

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

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

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

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

    Модуль — это просто файл с расширением .py, содержащий функции и переменные. Чтобы использовать модуль, его нужно подключить командой import.

    Модуль math

    В предыдущем примере мы задавали число Пи вручную. Но в модуле math оно уже есть, причем с гораздо большей точностью.

    Модуль random

    Этот модуль незаменим для игр и симуляций. Он позволяет генерировать случайные числа.

    Создание собственных модулей

    Вы можете создавать свои модули. Если у вас есть файл utils.py с полезными функциями, вы можете создать рядом файл main.py и написать в нем import utils. После этого все функции из первого файла будут доступны во втором через точку: utils.my_function().

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

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

    !Иллюстрация взаимодействия программы с жестким диском

    Открытие файла

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

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

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

    Предположим, у нас есть текстовый файл message.txt.

    Менеджер контекста with

    Забыть закрыть файл (file.close()) — частая ошибка новичков. Это может привести к утечке памяти или повреждению данных. Python предлагает элегантное решение — конструкцию with.

    Запись в файл

    Давайте создадим файл и запишем в него список покупок.

    Если вы запустите этот код, в папке с вашей программой появится файл shop.txt. Если запустить код еще раз с другим списком, старый файл удалится. Чтобы добавить пункты к существующему списку, используйте режим 'a'.

    Практический пример: Журнал событий

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

    Нам понадобится модуль datetime для работы со временем.

    После запуска этой программы откройте файл log.txt. Вы увидите историю событий с точным временем их возникновения.

    Заключение

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

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

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

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

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

    Сегодня мы переходим к одной из самых важных тем в современной разработке — Объектно-Ориентированному Программированию (ООП). Это подход, который позволяет структурировать код так, как устроен реальный мир: с помощью объектов и их взаимодействий. Также мы научимся делать наши программы надежными, обрабатывая ошибки так, чтобы приложение не «падало» при малейшем сбое.

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

    Представьте, что вы инженер на автомобильном заводе. Если бы вы программировали в старом стиле (процедурном), вы бы писали отдельные инструкции: «взять колесо», «прикрутить колесо», «покрасить дверь». В ООП мы мыслим иначе. Мы создаем чертеж автомобиля, описываем его характеристики (цвет, модель, скорость) и умения (ехать, тормозить, сигналить).

    В ООП есть два фундаментальных понятия:

  • Класс (Class) — это чертеж, шаблон или инструкция. Сам по себе класс ничего не делает, он только описывает, каким должен быть объект.
  • Объект (Object) или Экземпляр (Instance) — это конкретная вещь, созданная по этому чертежу. По одному чертежу можно собрать тысячи автомобилей, и все они будут объектами одного класса.
  • !Визуальная метафора: Класс — это чертеж, а Объекты — это реальные дома, построенные по этому чертежу.

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

    Давайте создадим наш первый класс. Допустим, мы делаем игру про роботов.

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

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

    * class Robot: — мы объявляем новый тип данных «Робот». * __init__ — это специальный метод, который называется конструктором. Он запускается автоматически в момент создания нового объекта. Обратите внимание на двойные подчеркивания с обеих сторон. * self — это ссылка на текущий объект. Когда мы создаем сто роботов, программа должна знать, что имя «Bender» принадлежит именно этому конкретному роботу, а не соседу. Через self мы получаем доступ к личной памяти объекта. * self.name = name — мы берем значение, которое передали при создании, и сохраняем его во внутреннюю переменную объекта.

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

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

    Вывод программы:

    Обратите внимание: мы написали функцию say_hello один раз, но работает она для каждого робота по-своему, используя их уникальные данные.

    Атрибуты и методы

    В терминологии ООП:

    * Атрибуты — это переменные внутри объекта (данные). Они отвечают на вопрос «Какой он?» или «Что у него есть?». Примеры: имя, вес, цена, список друзей. * Методы — это функции внутри объекта (действия). Они отвечают на вопрос «Что он может делать?». Примеры: бежать, считать, отправить письмо.

    Наследование: не повторяй себя

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

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

    Теперь FlyingRobot автоматически получил все, что было у Robot. Давайте проверим:

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

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

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

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

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

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

    Мы можем «попробовать» выполнить опасный код и, если случится ошибка, «перехватить» её.

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

  • Python заходит в блок try.
  • Если все хорошо, он выполняет код до конца, а блоки except игнорирует.
  • Если возникает ошибка (например, пользователь ввел «0»), выполнение в блоке try мгновенно прерывается.
  • Python ищет подходящий except. Если находит ZeroDivisionError, выполняет код внутри него.
  • Программа не падает, а продолжает работать дальше после блока except.
  • Блок finally

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

    !Логика работы конструкции try-except-finally: блок finally выполняется всегда.

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

    Использование классов позволяет моделировать сложные системы. Например, в интернет-магазине у вас будут классы User (Пользователь), Product (Товар) и Order (Заказ). Каждый объект будет знать свои данные и уметь с ними работать.

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

    Заключение

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

    * Классы и объекты: как создавать чертежи и строить по ним программные сущности. * Атрибуты и методы: как наделять объекты данными и поведением. * Наследование: как расширять возможности классов, не переписывая код. * Обработка исключений: как делать программы устойчивыми к ошибкам.

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