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

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

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

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

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

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

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

!Сравнение сложности кода C++ и Python

Ключевые преимущества:

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

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

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

    Перейдите на официальный сайт python.org в раздел Downloads. Сайт автоматически определит вашу операционную систему (Windows, macOS или Linux) и предложит последнюю стабильную версию.

    Шаг 2: Установка

    Запустите скачанный файл.

    > Важно: При установке на Windows обязательно поставьте галочку напротив пункта Add Python to PATH (Добавить Python в PATH). Это позволит вам запускать Python из командной строки из любой папки.

    Шаг 3: Выбор редактора кода

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

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

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

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

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

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

    Разбор синтаксиса

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

    Основы синтаксиса Python

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

    Отступы (Indentation)

    Отступы — это пробелы в начале строки. Они определяют вложенность кода. Обычно используется 4 пробела (или одна клавиша Tab).

    Пример (пока не вникайте в логику, просто посмотрите на структуру):

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

    Комментарии

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

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

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

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

    [VISUALIZATION: Иллюстрация картонной коробки с надписью

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

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

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

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

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

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

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

    !Блок-схема, показывающая принцип работы условного ветвления

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

    Самая простая проверка начинается с ключевого слова if. Синтаксис выглядит так:

    Обратите внимание на двоеточие : в конце строки с if и отступ в 4 пробела на следующей строке. Это критически важно. Всё, что написано с отступом, выполнится только если условие истинно.

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

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

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

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

    Где — проверяемое значение, а — эталон, с которым мы сравниваем. В Python это записывается как x == y.

    Блок else (Иначе)

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

    Здесь программа проверяет температуру. Если она больше 20, советует футболку. Во всех остальных случаях (20, 10, -5 градусов) — куртку.

    Блок elif (Иначе если)

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

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

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

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

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

    В булевой алгебре операция И часто обозначается как умножение, а ИЛИ как сложение. Формула логического умножения (конъюнкции) выглядит так:

    Где — итоговый результат (истина или ложь), — первое утверждение, — второе утверждение, а символ обозначает логическое «И». Результат будет истинным только тогда, когда истинны и , и .

    Циклы: автоматизация рутины

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

    !Метафора цикла: повторение одного и того же действия, пока есть работа

    Цикл while (Пока)

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

    Разбор кода:

  • Мы создаем переменную-счетчик count.
  • Цикл проверяет: 1 меньше или равно 5? Да. Выполняем код.
  • Печатаем текст.
  • Увеличиваем счетчик на 1. Теперь count равен 2.
  • Цикл снова проверяет условие. И так до тех пор, пока count не станет равен 6. Условие 6 <= 5 ложно, и цикл остановится.
  • > Осторожно: Если вы забудете увеличить счетчик (count = count + 1), условие всегда будет истинным, и программа зависнет в бесконечном цикле. Чтобы прервать такую программу, обычно используют комбинацию клавиш Ctrl+C.

    Цикл for (Для)

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

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

    Функция range()

    Если нам нужно просто повторить действие N раз (как в примере с while), удобнее использовать цикл for в связке с функцией range().

    range(start, stop, step) генерирует последовательность чисел.

    * start — начало (по умолчанию 0). * stop — конец (не включается!). * step — шаг (по умолчанию 1).

    Пример:

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

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

    Где — множество чисел, входящих в диапазон, — начальное число (включительно), а — конечное число (исключительно).

    Управление потоком цикла

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

    break (Прервать)

    Команда break немедленно останавливает цикл полностью, даже если условие всё еще истинно.

    continue (Продолжить)

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

    В этом примере мы использовали оператор % (остаток от деления). Если остаток от деления i на 2 равен 0, число четное, и мы его пропускаем.

    Вложенные циклы

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

    Этот код выведет мини-таблицу умножения. Внутренний цикл (с переменной j) полностью прокручивается для каждого шага внешнего цикла (с переменной i).

    Заключение

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

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

    Практикуйтесь, экспериментируйте с условиями и циклами, и не бойтесь ошибок — это лучший способ учиться!

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

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

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

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

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

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

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

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

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

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

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

    > Счет всегда начинается с нуля.

    Первый элемент имеет индекс 0, второй — 1, и так далее.

    Если список имеет длину , то индекс последнего элемента вычисляется по формуле:

    Где — это индекс последнего элемента списка, а — общее количество элементов в списке. Например, если в списке 3 фрукта, последний индекс будет .

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

    Python имеет удобную особенность: можно обращаться к элементам с конца. Индекс -1 — это последний элемент, -2 — предпоследний.

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

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

    Срезы (Slicing)

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

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

    Где — множество выбранных индексов, — начальный индекс (включительно), а — конечный индекс (исключительно).

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

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

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

    Зачем нужны кортежи, если есть списки?

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

    Словари (Dictionaries): Ключ к данным

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

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

    !Визуализация принципа работы словаря

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

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

    Здесь "name", "age" и "is_admin" — это ключи, а "Ivan", 25 и True — соответствующие им значения.

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

    Доступ к данным осуществляется по ключу, а не по индексу.

    Особенности ключей

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

    Математически словарь можно представить как функцию отображения множества ключей на множество значений :

    Где — это наш словарь, — множество всех ключей, а — множество всех значений. Каждому элементу из соответствует ровно один элемент из .

    Сравнение структур данных

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

    | Характеристика | Список (List) | Кортеж (Tuple) | Словарь (Dict) | | :--- | :--- | :--- | :--- | | Синтаксис | [] | () | {key: value} | | Упорядоченность | Да | Да | Да (с версии 3.7) | | Изменяемость | Да | Нет | Да | | Доступ | По индексу (0, 1...) | По индексу (0, 1...) | По ключу | | Пример использования | Список покупок, список пользователей | Координаты, дни недели | Профиль пользователя, настройки |

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

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

    Пример: Список словарей (база данных пользователей).

    Здесь мы сначала берем элемент списка с индексом 1 (это словарь {"id": 2, "name": "Boris"}), а затем обращаемся к этому словарю по ключу "name".

    Заключение

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

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

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

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

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

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

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

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

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

    Мы уже пользовались встроенными функциями Python, такими как print(), len() или range(). Теперь пришло время создавать свои собственные.

    !Функция как фабрика по переработке данных

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

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

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

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

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

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

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

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

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

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

    Для этого используется оператор return.

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

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

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

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

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

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

    Это одна из самых частых ловушек для новичков. Переменные, созданные внутри функции, являются локальными. Они существуют только пока выполняется функция, и исчезают после её завершения. Снаружи функции их «не видно».

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

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

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

    Эти наборы готовых функций называются модулями (или библиотеками).

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

    Модуль math

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

    Математически операция взятия корня записывается так:

    Где — это число, которое при возведении в квадрат дает , а символ обозначает операцию извлечения квадратного корня. В Python за это отвечает функция math.sqrt().

    Модуль random

    Этот модуль незаменим для создания игр или симуляций, где нужен элемент случайности.

    Способы импорта

  • Импорт всего модуля:
  • Это самый безопасный способ, так как вы всегда видите, откуда пришла функция.

  • Импорт конкретной функции:
  • Удобно, если нужно использовать функцию часто, чтобы не писать каждый раз math..

  • Импорт всего содержимого (не рекомендуется):
  • Это считается плохой практикой, так как может возникнуть конфликт имен (например, если у вас была своя переменная pi, она перезапишется).

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

    Помимо встроенных модулей, существует более 300 000 библиотек, созданных сообществом (например, для создания сайтов, анализа данных или игр). Они хранятся в каталоге PyPI.

    Для их установки используется программа pip, которая ставится вместе с Python. Установка происходит через командную строку (терминал), а не внутри кода Python:

    После установки вы можете импортировать библиотеку в свой код как обычно: import requests.

    Заключение

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

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

    5. Работа с файлами и обработка исключений

    Работа с файлами и обработка исключений

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

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

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

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

    !Процесс открытия, обработки и закрытия файла

    Функция open()

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

    Основные режимы работы (mode):

    * "r" (read) — чтение. Режим по умолчанию. Если файла нет, возникнет ошибка. * "w" (write) — запись. Если файл существует, он будет полностью перезаписан (старые данные удалятся). Если файла нет, он создастся. * "a" (append) — дозапись. Данные добавляются в конец файла, старое содержимое сохраняется. * "x" (exclusive creation) — создание. Создает файл, но вернет ошибку, если файл уже существует.

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

    Представим, что у нас есть файл data.txt с текстом:

    Мы можем прочитать его несколькими способами:

  • read() — читает весь файл целиком в одну строку.
  • readline() — читает одну строку за раз.
  • readlines() — читает все строки и сохраняет их в список.
  • Пример:

    > Обратите внимание: Мы добавили аргумент encoding="utf-8". Это стандарт кодировки для поддержки кириллицы и эмодзи. Без него на Windows вместо русского текста могут появиться «кракозябры».

    Запись в файл

    Чтобы записать данные, используем метод write().

    Символ \n означает перенос строки. Без него весь текст запишется в одну длинную линию.

    Размер файла и кодировка

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

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

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

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

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

    Обработка исключений

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

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

    !Метафора защиты кода от ошибок с помощью обработки исключений

    Синтаксис try-except

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

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

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

    Здесь e — это переменная, в которую записывается описание ошибки.

    Блоки else и finally

    Конструкция может быть расширена:

    * else — выполняется, если в блоке try не было ошибок. * finally — выполняется всегда, независимо от того, была ошибка или нет (полезно для закрытия соединений).

    Практический пример: Безопасное чтение конфига

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

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

    Заключение

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

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