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

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

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

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

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

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

Что такое Python и почему он так популярен?

Python — это высокоуровневый интерпретируемый язык программирования. Звучит сложно? Давайте упростим.

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

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

!Схема работы интерпретатора: от исходного кода к машинному исполнению.

Шаг 1: Установка окружения

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

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

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

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

    * Он бесплатный. * Подсвечивает ошибки. * Помогает дописывать команды.

    Скачайте и установите VS Code с официального сайта. После установки откройте его, перейдите в раздел расширений (квадратик слева) и установите расширение Python от Microsoft.

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

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

  • Откройте VS Code.
  • Создайте новый файл и назовите его hello.py. Расширение .py говорит компьютеру, что это файл с кодом Python.
  • Напишите следующую строку:
  • Запустите код (обычно кнопка Play в углу или через терминал).
  • Если внизу экрана вы увидели надпись Hello, World!, поздравляю! Вы официально написали свою первую программу.

    Разбор полетов: функция print()

    Что мы только что сделали? Мы использовали функцию print().

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

    Синтаксис (правила написания) здесь строгий: * Имя функции: print (все буквы строчные). * Круглые скобки (): в них мы кладем то, что хотим напечатать. * Кавычки " " или ' ': они показывают, что внутри находится текст (строка), а не команда.

    Попробуйте изменить код:

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

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

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

    Представьте, что оперативная память вашего компьютера — это огромный склад. Чтобы не потерять данные, мы кладем их в коробки и подписываем эти коробки маркером.

    * Переменная — это имя (этикетка на коробке). * Значение — это то, что лежит внутри коробки.

    [VISUALIZATION: Иллюстрация картонной коробки. На боку коробки маркером написано слово

    2. Типы данных и операции: числа, строки и логические выражения

    Типы данных и операции: числа, строки и логические выражения

    В предыдущей статье мы научились создавать «коробки» для данных — переменные. Мы положили в них текст и числа, и Python послушно их сохранил. Но задумывались ли вы, почему в одних случаях 10 + 10 равно 20, а в других — 1010?

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

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

    Почему тип данных важен?

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

    Однако, знать тип данных необходимо программисту. Попробуйте мысленно разделить слово «Яблоко» на 2. Не получается? У компьютера тоже не получится, и он выдаст ошибку. Тип данных определяет, что именно можно делать с этим значением.

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

    Числа: Целые и Дробные

    В Python числа делятся на две основные категории:

  • Целые числа (int): Числа без дробной части (5, -10, 42, 0).
  • Числа с плавающей точкой (float): Числа с дробной частью (3.14, -0.01, 2.0).
  • > Обратите внимание: даже если число выглядит целым, но записано как 2.0, для Python это уже float.

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

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

    | Операция | Символ | Пример кода | Результат | Комментарий | | :--- | :---: | :--- | :--- | :--- | | Сложение | + | 10 + 5 | 15 | | | Вычитание | - | 10 - 5 | 5 | | | Умножение | | 10 5 | 50 | | | Деление | / | 10 / 2 | 5.0 | Результат всегда float | | Целочисленное деление | // | 10 // 3 | 3 | Дробная часть отбрасывается | | Остаток от деления | % | 10 % 3 | 1 | Самая интересная операция | | Возведение в степень | | 2 3 | 8 | |

    Подробнее об остатке от деления (%)

    Новички часто путаются с оператором %. Это не проценты! Это математическая операция нахождения остатка. Давайте вспомним школьную математику.

    Формула деления с остатком выглядит так:

    где — делимое, — делитель, — неполное частное, а — остаток.

    В Python операция a % b вычисляет именно . Например, если мы делим 10 на 3, мы можем взять 3 раза по 3 (это 9), и у нас останется 1.

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

    Строки (str): Текст в кавычках

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

    Магия со строками

    Строки в Python ведут себя удивительно логично. Их можно... складывать и умножать!

  • Конкатенация (Сложение):
  • Дублирование (Умножение):
  • f-строки: Современный способ форматирования

    Представьте, что у вас есть переменная age = 25, и вы хотите вывести: «Мне 25 лет». Раньше приходилось мучиться с плюсами и кавычками. Начиная с версии Python 3.6, у нас есть f-строки (formatted strings).

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

    Это стандарт индустрии. Привыкайте использовать f-строки сразу.

    Логические значения (bool): Истина или Ложь

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

    * True (Истина) * False (Ложь)

    > Важно: True и False в Python всегда пишутся с большой буквы.

    Обычно эти значения появляются как результат сравнения.

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

    | Оператор | Значение | Пример | Результат | | :---: | :--- | :--- | :--- | | == | Равно | 5 == 5 | True | | != | Не равно | 5 != 3 | True | | > | Больше | 5 > 10 | False | | < | Меньше | 2 < 4 | True | | >= | Больше или равно | 5 >= 5 | True | | <= | Меньше или равно | 3 <= 2 | False |

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

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

  • and (И): Возвращает True, только если оба условия верны.
  • or (ИЛИ): Возвращает True, если хотя бы одно условие верно.
  • not (НЕ): Переворачивает значение (делает True из False и наоборот).
  • Преобразование типов (Type Casting)

    Иногда Python не может сам понять, что вы от него хотите. Классическая ошибка новичка:

    Этот код сломается с ошибкой TypeError. Почему? Потому что Python не умеет складывать текст (строку) и число. Он не знает, хотите ли вы получить Мне 20 лет или математическую сумму букв (что невозможно).

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

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

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

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

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

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

    Заключение

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

    В следующей статье мы оживим наши программы. Мы научимся писать код, который умеет делать выбор в зависимости от условий: «Если пользователь ввел правильный пароль, пропустить его, иначе — заблокировать». Готовьтесь к изучению условных операторов if, elif и else.

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

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

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

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

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

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

    Представьте, что программа доходит до развилки. Ей нужно решить, куда свернуть. Для этого используется оператор if (если).

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

    Самый простой выбор выглядит так: «Если условие верно, сделай это».

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

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

    Конструкция if-else

    Часто нам нужно действие и на случай, если условие не выполнилось. «Если есть 18 — пустить, иначе — сказать, что рано».

    Оператор else (иначе) не требует условия. Он выполняется во всех случаях, когда if оказался ложным (False).

    Конструкция if-elif-else

    А что, если вариантов больше двух? Например, в игре персонаж может пойти налево, направо или прямо. Для этого существует elif (сокращение от else if — иначе если).

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

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

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

    Для повторения действий используются циклы.

    Цикл while (Пока)

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

    Что здесь происходит:

  • Проверяется условие: (Истина).
  • Выполняется тело цикла (печать и увеличение count до 2).
  • Снова проверяется условие: (Истина).
  • ... и так далее, пока count не станет 6.
  • Проверка дает Ложь (False), и цикл останавливается.
  • > Осторожно: Бесконечный цикл! > Если вы забудете увеличить счетчик (count = count + 1), условие всегда будет истинным (), и программа зависнет, бесконечно печатая текст. Чтобы остановить такую программу, нажмите Ctrl+C в терминале.

    Цикл for (Для каждого)

    Если вы точно знаете, сколько раз нужно повторить действие, или хотите перебрать элементы (например, буквы в строке), лучше использовать цикл for. Он более безопасен, так как сложнее случайно создать бесконечный цикл.

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

    Переменная letter на каждом шаге цикла автоматически принимает значение следующей буквы: сначала 'P', потом 'y', и так до конца.

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

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

    Функция range() умеет генерировать последовательности чисел. У неё есть три режима работы:

  • range(stop): от 0 до stop - 1.
  • range(start, stop): от start до stop - 1.
  • range(start, stop, step): от start до stop - 1 с шагом step.
  • Пример с математикой: Давайте посчитаем сумму всех чисел от 1 до 100. В математике это записывается так:

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

    В Python это реализуется так:

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

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

    break (Прервать)

    Команда break немедленно останавливает цикл, даже если условие всё еще верно или элементы не закончились.

    Пример: Мы ищем букву 'а' в тексте и хотим остановиться, как только найдем первую.

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

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

    Пример: Распечатать только нечетные числа от 1 до 5.

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

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

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

    Практический пример: Простейший чат-бот

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

    Этот код использует:

  • Цикл while, чтобы игра не заканчивалась после первой попытки.
  • Ввод данных и преобразование типов (int()).
  • Условные операторы для проверки ответа.
  • break для выхода при победе.
  • Заключение

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

    В следующей статье мы поговорим о структурах данных. Мы узнаем, как хранить не одно значение в переменной, а целые списки покупок, словари терминов и наборы уникальных данных. Готовьтесь изучать списки (list) и словари (dict).

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

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

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

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

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

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

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

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

    !Визуализация списка как поезда с индексами.

    Индексация: Почему отсчет начинается с нуля?

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

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

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

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

    * -1 — последний элемент. * -2 — предпоследний элемент.

    Изменяемость

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

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

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

    * append(item): Добавляет элемент в конец списка. * remove(item): Удаляет первое вхождение элемента. * pop(): Удаляет и возвращает последний элемент.

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

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

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

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

    Зачем нужны ограничения?

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

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

    Множества создаются с помощью фигурных скобок {} или функции set().

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

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

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

    Допустим, у нас есть два множества:

    Здесь — первое множество, содержащее числа 1, 2 и 3, а — второе множество с числами 3, 4 и 5.

    1. Объединение (Union): Все элементы из обоих множеств.

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

    В Python:

    2. Пересечение (Intersection): Только те элементы, которые есть и там, и там.

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

    В Python:

    !Диаграмма Венна, показывающая пересечение двух множеств.

    Словари (Dictionaries): Ключ к успеху

    Словарь — это, пожалуй, самая мощная структура данных в Python. Если список хранит данные по порядку (индексу), то словарь хранит их парами «Ключ — Значение».

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

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

    Доступ к данным

    Мы обращаемся к элементам не по номеру 0 или 1, а по имени ключа.

    Изменение и добавление

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

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

    Итоговая таблица: Что выбрать?

    Новички часто путаются, какую структуру использовать. Вот простая шпаргалка:

    | Структура | Скобки | Упорядоченность | Изменяемость | Уникальность | Для чего использовать? | | :--- | :---: | :---: | :---: | :---: | :--- | | Список (list) | [] | Да | Да | Нет | Коллекции однотипных или разных данных, которые нужно менять. | | Кортеж (tuple) | () | Да | Нет | Нет | Данные, которые нельзя менять (координаты, настройки). | | Множество (set) | {} | Нет | Да | Да | Удаление дубликатов, математические операции. | | Словарь (dict) | {k:v} | Нет* | Да | Ключи — да | Хранение данных с логическими привязками (профиль пользователя). |

    > Начиная с Python 3.7 словари сохраняют порядок вставки, но полагаться на это как на главный принцип не стоит.

    Заключение

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

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

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

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

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

    Вы копируете одни и те же куски кода из одного места в другое. Файл с программой разрастается до сотен строк, и найти в нем ошибку становится подвигом. Знакомо?

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

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

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

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

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

    !Иллюстрация принципа работы функции: входные данные, обработка и результат.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Модуль math

    В примере выше мы задали число Пи вручную (3.14). Это неточно. Лучше взять его из модуля math.

    Модуль random

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

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

    Работа с файлами: сохраняем прогресс

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

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

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

    Работа с файлом состоит из трех этапов:

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

    Контекстный менеджер with

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

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

    Обратите внимание на \n — это спецсимвол переноса строки. Без него весь текст слипнется в одну длинную колбасу.

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

    Построчное чтение

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

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

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

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

    В этом примере мы использовали:

  • Модуль datetime для автоматической простановки даты.
  • Функции для разделения логики (одна пишет, другая читает).
  • Файлы в режиме 'a' (append), чтобы не стирать старые тренировки.
  • Блок try-except (обработка исключений) — это тема будущего, но здесь она нужна, чтобы программа не сломалась, если файла еще нет.
  • Заключение

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

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