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

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

1. Введение в Python: установка окружения и написание первой программы

Введение в Python: установка окружения и написание первой программы

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

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

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

Вот несколько причин, почему мы начинаем именно с него:

* Читаемость: Код на Python часто выглядит как обычный текст на английском языке. * Универсальность: На Python пишут веб-сайты, создают искусственный интеллект, анализируют данные, автоматизируют рутинные задачи и даже делают игры. * Сообщество: Если у вас возникнет вопрос, скорее всего, кто-то уже задавал его в интернете и получил ответ.

!Иллюстрация универсальности языка Python в различных сферах технологий.

Как компьютер понимает код?

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

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

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

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

Для пользователей Windows

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

    На компьютерах Mac часто уже установлена старая версия Python (версия 2.x), но нам нужна современная версия 3.x. Лучший способ — скачать установщик с python.org, как и в случае с Windows, и следовать инструкциям.

    Для пользователей Linux

    Пользователи Linux обычно имеют предустановленный Python. Чтобы проверить это, откройте терминал и введите:

    Если вы видите номер версии, значит, все в порядке. Если нет, используйте менеджер пакетов вашего дистрибутива (например, sudo apt-get install python3).

    Шаг 2: Выбор инструмента для написания кода

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

  • IDLE: Это простая среда разработки, которая устанавливается вместе с Python. Она идеально подходит для первых шагов.
  • Редакторы кода (IDE): Профессиональные инструменты, такие как VS Code или PyCharm. Они подсвечивают ошибки, помогают дописывать команды и делают код красивым.
  • Для нашего первого урока мы воспользуемся IDLE или простым текстовым редактором, чтобы вы почувствовали, что магии нет — есть только текст и интерпретатор. В дальнейшем мы рекомендуем перейти на VS Code.

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

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

    Запуск IDLE

    Найдите в своих программах IDLE (Python 3.x) и запустите его. Вы увидите окно с текстом, похожим на этот:

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

    Пишем код

    Введите следующую команду прямо после >>> и нажмите Enter:

    Если вы все сделали правильно, на следующей строке появится:

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

    !Интерфейс IDLE с выполненной первой командой.

    Анатомия первой программы

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

    Функция print()

    Слово print — это имя функции. В программировании функция — это мини-программа, которая умеет делать что-то конкретное. Функция print умеет выводить данные на экран (в консоль).

    Обратите внимание на скобки (). В Python скобки после имени функции — это команда «Выполняй!». Если написать просто print без скобок, Python поймет, что вы говорите о функции, но не запустит её.

    Строка (String)

    Внутри скобок мы написали "Hello, World!". Обратите внимание на кавычки. Текст, заключенный в кавычки (одинарные ' или двойные "), называется строкой.

    Кавычки нужны, чтобы компьютер понимал: это просто текст, который нужно напечатать, а не команда, которую нужно выполнить. Если бы мы написали print(Hello), Python начал бы искать команду или переменную с именем Hello и выдал бы ошибку, так как не знает такого слова.

    Создание файла с программой

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

  • В IDLE нажмите File -> New File. Откроется пустое окно.
  • Напишите в нем наш код:
  • Нажмите File -> Save. Сохраните файл под именем first_program.py. Обратите внимание на расширение .py — оно обязательно для файлов Python.
  • Теперь запустите программу, нажав Run -> Run Module (или клавишу F5).
  • Вы увидите, как в главном окне IDLE появятся обе фразы, одна за другой.

    Синтаксис: правила написания

    У каждого языка есть грамматика. В программировании она называется синтаксис. Если вы нарушите правила, интерпретатор не поймет вас и выдаст ошибку (SyntaxError).

    Комментарии

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

    Чувствительность к регистру

    Python различает большие и маленькие буквы. print, Print и PRINT — это три разных слова для компьютера. Команда вывода работает только как print (все буквы строчные).

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

    Не бойтесь ошибок! Ошибки — это лучший способ учиться. Вот с чем вы можете столкнуться:

  • Забытые скобки:
  • Неверно:* print "Hello" Верно:* print("Hello") * В старых версиях Python (2.x) скобки были не нужны, но в современном Python 3 они обязательны.

  • Разные кавычки:
  • Неверно:* print("Hello') (начали двойной, закончили одинарной) Верно:* print("Hello") или print('Hello')

  • Лишние отступы:
  • Python очень строго относится к пробелам в начале строки. Если вы случайно поставите пробел перед print, вы получите ошибку IndentationError.

    Заключение

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

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

    Сохраните свой энтузиазм, впереди самое интересное!

    2. Основы синтаксиса: переменные, типы данных и базовые операторы

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

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

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

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

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

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

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

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

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

  • В коробку user_name положили строку "Алекс".
  • В коробку age положили число 25.
  • В коробку score положили число 1000.
  • Знак = в программировании — это не равенство в математическом смысле. Это команда: «Возьми значение справа и положи его в переменную слева».

    Правила именования

    Вы не можете назвать переменную как угодно. Python имеет свои правила этикета (синтаксиса):

  • Имя может состоять из букв, цифр и знака подчеркивания (_).
  • Имя не может начинаться с цифры. 1st_place — ошибка, place_1 — верно.
  • Никаких пробелов. Используйте подчеркивание для разделения слов: my_favorite_color.
  • Регистр важен. Score, score и SCORE — это три разные переменные.
  • В сообществе Python принято использовать стиль snake_case (змеиный регистр): все буквы маленькие, слова разделяются подчеркиванием.

    Типы данных: что лежит в коробке?

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

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

    Это числа без дробной части: 1, 10, -5, 1000000. В Python они называются int (от английского integer).

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

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

    3. Строки (str)

    Любой текст, заключенный в кавычки. Мы уже сталкивались с ними. Называются str (от string — нить, строка).

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

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

    Как узнать тип данных?

    Если вы не уверены, что лежит в переменной, спросите у Python с помощью функции type():

    Базовые операторы: математика и не только

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

    Арифметические операторы

    Большинство знаков вам знакомы со школы:

    * + : Сложение * - : Вычитание : Умножение * / : Деление (результат всегда float, даже если делится нацело)

    Пример простой математической операции:

    Где — площадь прямоугольника, — длина одной стороны, — длина другой стороны.

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

    Особые операторы деления

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

  • Целочисленное деление (//): Делит число и отбрасывает дробную часть (округляет вниз).
  • * 10 // 3 вернет 3 (потому что 3 вмещается в 10 три раза).

  • Остаток от деления (%): Возвращает то, что осталось после деления нацело.
  • * 10 % 3 вернет 1 (так как ).

  • Возведение в степень ()**: Используется двойная звездочка.
  • 2 * 3 вернет 8 ().

    Давайте рассмотрим формулу с использованием степени:

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

    В Python это запишется как:

    Операции со строками

    Вы удивитесь, но строки тоже можно «складывать» и «умножать».

    * Конкатенация (+): Склеивание двух строк в одну.

    Дублирование (): Повторение строки несколько раз.

    Важно: Вы не можете сложить число и строку (`5 +

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

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

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

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

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

    В основе любого искусственного интеллекта, от простого бота до сложной нейросети, лежит простая концепция: «Если условие истинно, сделай это. Иначе — сделай то».

    Оператор if

    Самая простая проверка в Python осуществляется с помощью ключевого слова if (если). Давайте посмотрим на синтаксис:

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

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

    Оператор else

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

    Блок else выполняется только в том случае, если условие в if оказалось ложным (False).

    Оператор elif

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

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

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

    Иногда нужно проверить сразу несколько условий. Для этого используются логические связки:

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

    Циклы: сила повторения

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

    Цикл while

    Цикл while (пока) работает очень похоже на if, только он повторяет блок кода до тех пор, пока условие остается истинным.

    Осторожно: Бесконечный цикл! Если вы забудете строку apples = apples - 1, условие apples > 0 всегда будет истинным (5 всегда больше 0). Программа зависнет, бесконечно печатая текст. Это называется «зацикливанием». Чтобы прервать такую программу, обычно используют сочетание клавиш Ctrl+C.

    Цикл for

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

    Этот код выведет каждую букву слова "Python" на новой строке. Переменная letter — это временная переменная, в которую на каждом шаге цикла попадает следующий элемент.

    Функция range()

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

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

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

    Где: * — итоговая сумма. * — знак суммы (сигма). * — переменная-счетчик, которая меняется от 1 до . * — последнее число, которое мы прибавляем.

    Реализуем это на Python:

    Здесь мы использовали range(1, 11), чтобы получить числа от 1 до 10 включительно.

    !Визуальная метафора итерации цикла for.

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

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

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

    Пример с continue:

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

    Вы можете вкладывать if в while, for в if и так далее. Главное — следить за отступами. Каждый новый уровень вложенности требует дополнительных 4 пробелов.

    Заключение

    Поздравляю! Теперь вы знаете, как управлять потоком выполнения программы. Ваши скрипты больше не являются простыми последовательностями команд — они могут анализировать данные, принимать решения и автоматизировать рутинные повторения.

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

    А пока — попробуйте поэкспериментировать с циклами и условиями в своем редакторе кода!

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

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

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

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

    Списки (Lists): Порядок во всем

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

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

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

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

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

    !Визуализация индексации списка: индексы начинаются с нуля.

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

    Основные операции со списками

    Списки — это изменяемый тип данных. Мы можем добавлять, удалять и менять элементы.

  • Добавление (append): Метод append() добавляет элемент в конец списка.
  • Удаление (remove): Метод remove() удаляет первый найденный элемент с указанным значением.
  • Длина списка (len): Функция len() сообщает количество элементов.
  • Словари (Dictionaries): Ключ к успеху

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

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

    Создание словаря

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

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

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

    Мы можем легко добавлять новые пары или изменять существующие:

    !Структура словаря: связь ключей и значений.

    Функции: Искусство переиспользования

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

    Функция — это именованный блок кода, который можно вызывать многократно.

    Анатомия функции

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

    Здесь: * greet — имя функции. * nameпараметр (переменная, которую функция ожидает получить).

    Вызов функции

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

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

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

    Рассмотрим математический пример. Допустим, нам нужно вычислить площадь круга. Формула выглядит так:

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

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

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

    Модули: Разделяй и властвуй

    Когда ваш код разрастается до сотен строк, держать всё в одном файле становится неудобно. Python позволяет разбивать программу на несколько файлов — модулей.

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

    Импорт встроенных модулей

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

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

    Создание своего модуля

    Создать свой модуль очень просто:

  • Создайте файл с расширением .py (например, my_tools.py).
  • Напишите в нем функции.
  • В основном файле вашей программы напишите import my_tools.
  • Теперь вы можете использовать функции из my_tools.py, обращаясь к ним через точку: my_tools.my_function().

    Заключение

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

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

    5. Введение в объектно-ориентированное программирование и работа с файлами

    Введение в объектно-ориентированное программирование и работа с файлами

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

    Но по мере того как ваши программы будут расти, вы заметите проблему: кода становится слишком много. У вас будут десятки функций и сотни переменных, разбросанных по файлу. Станет сложно понимать, какая переменная к какой функции относится. Здесь на сцену выходит Объектно-Ориентированное Программирование (ООП).

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

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

    Объектно-ориентированное программирование — это стиль написания кода, который позволяет моделировать реальные вещи. Мы смотрим на мир не как на набор команд, а как на набор взаимодействующих объектов.

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

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

    Классы и Объекты

    В основе ООП лежат два понятия: Класс и Объект (или Экземпляр).

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

    !Чертеж (Класс) определяет структуру, а реальные автомобили (Объекты) создаются на его основе.

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

    В Python классы создаются с помощью ключевого слова class. Давайте создадим класс Cat (Кошка).

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

    #### 1. Метод __init__

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

    Метод __init__ — особенный. Это конструктор. Он запускается автоматически в тот момент, когда мы создаем новый объект. Его задача — установить начальные характеристики объекта.

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

    #### 2. Загадочный self

    Вы заметили, что первым параметром везде стоит self? Это самая сложная концепция для новичков, но она проста по сути.

    self — это ссылка на самого себя. Когда конкретная кошка (объект) хочет сказать свое имя, она должна знать, что это её имя, а не имя соседской кошки.

    self.name = name: Мы берем значение name, которое передали при создании, и сохраняем его во внутреннюю память этого конкретного* объекта (self).

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

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

    Заметьте: когда мы вызываем cat1.meow(), нам не нужно передавать self. Python делает это за нас автоматически. Он понимает: «Ага, метод вызван у объекта cat1, значит self — это cat1».

    Работа с файлами: сохраняем результаты

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

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

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

    Основные режимы: * 'r' (Read) — только чтение. Если файла нет, возникнет ошибка. (Режим по умолчанию). * 'w' (Write) — запись. Внимание: если файл уже существовал, он будет полностью стерт и перезаписан. * 'a' (Append) — дозапись. Новые данные добавятся в конец файла, старые не сотрутся.

    Правильный способ: Конструкция with

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

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

    Разберем синтаксис:

  • open(...) открывает файл.
  • as file дает открытому файлу имя переменной file (можно назвать как угодно, например f).
  • Внутри блока с отступом мы работаем с файлом.
  • Как только отступ заканчивается, Python сам закрывает файл.
  • Примечание: encoding="utf-8" важно указывать для корректной работы с русским языком.

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

    Теперь прочитаем то, что записали.

    Метод .read() считывает весь файл целиком в одну строку. Если файл огромный, лучше читать его построчно циклом for:

    Объединяем знания: ООП + Файлы

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

    В результате в папке с вашей программой появится файл journal.txt с именами и оценками.

    Заключение

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

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