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

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

1. Установка Python и запуск первой программы

Установка Python и запуск первой программы

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

Что такое Python и как он запускает программы

Python — это язык программирования, а также программа-интерпретатор, которая читает ваш код и выполняет его.

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

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

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

Выбор версии Python

Для обучения и современных проектов используйте Python 3.

Рекомендации:

  • Ставьте актуальную версию Python 3 с сайта Python (например, 3.12).
  • Не используйте Python 2 — он устарел и не поддерживается.
  • Установка Python

    Ниже — самый надежный способ установки для каждой системы.

    Windows

  • Откройте страницу загрузки Python: Python Downloads
  • Нажмите Download Python 3.x.x.
  • Запустите установщик.
  • Важно: поставьте галочку Add python.exe to PATH.
  • Нажмите Install Now и дождитесь окончания установки.
  • На Windows часто используется команда py (Python Launcher), это нормально и удобно.

    macOS

  • Откройте страницу загрузки Python: Python Downloads
  • Скачайте установщик для macOS (pkg).
  • Запустите установщик и завершите установку.
  • На macOS в терминале чаще используется команда python3, потому что python может быть связан с системными настройками.

    Linux

    Во многих дистрибутивах Python 3 уже установлен. Если нет — установите через менеджер пакетов.

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

    Если вы не уверены, что именно вводить в вашей системе, сначала проверьте наличие Python (следующий раздел).

    Проверка установки

    Откройте терминал:

  • Windows: Command Prompt или PowerShell
  • macOS: Terminal
  • Linux: ваш терминал
  • Проверьте версию.

    Windows (вариант 1, рекомендуемый):

    Windows (вариант 2):

    macOS и Linux:

    Вы должны увидеть что-то вроде Python 3.12.x. Если команда не найдена, значит Python не установлен или не добавлен в PATH.

    Установка редактора кода

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

    Популярные варианты:

  • Visual Studio Code — легкий и универсальный редактор
  • PyCharm Community Edition — мощная среда разработки для Python
  • Если выбираете VS Code, после установки поставьте расширение Python от Microsoft внутри VS Code.

    Запуск первой программы

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

  • Создайте папку для учебных проектов, например python-course.
  • Внутри создайте файл hello.py.
  • Откройте файл hello.py и вставьте код:
  • Запуск через терминал

    Перейдите в папку с файлом (команда зависит от ОС, но смысл один — открыть терминал в нужной директории).

    Запуск на Windows:

    Или так, если работает команда python:

    Запуск на macOS и Linux:

    В терминале вы увидите:

    Что делает print

    print(...) — это команда Python для вывода текста в терминал.

  • Внутри круглых скобок — то, что нужно вывести.
  • Текст берется в кавычки: "..." или '...'.
  • Частые проблемы и как их быстро исправить

  • Сообщение вроде python is not recognized... (Windows)
  • - Python не добавлен в PATH или терминал был открыт до установки. Закройте терминал, откройте заново и попробуйте py -V.
  • Открывается Microsoft Store вместо Python (Windows)
  • - Обычно помогает использовать py вместо python.
  • Файл не запускается, потому что вы не в той папке
  • - Убедитесь, что терминал открыт в папке, где лежит hello.py.
  • Файл случайно сохранен как hello.py.txt
  • - Включите отображение расширений файлов в проводнике и переименуйте файл в hello.py.

    Итоги

    Теперь у вас есть рабочая среда для обучения:

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

    2. Переменные, типы данных и базовые операции

    Переменные, типы данных и базовые операции

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

    Что такое переменная

    Переменная — это имя, которое ссылается на значение в памяти, чтобы вы могли использовать это значение в программе много раз.

    !Схема показывает, что переменная — это имя, которое указывает на значение

    Присваивание значения

    Чтобы создать переменную, используйте оператор присваивания =:

    Важно: = в программировании означает присвоить, а не сравнить.

    Обновление значения

    Переменная может получить новое значение:

    Имена переменных

    Правила и хорошие привычки:

  • Имя может содержать буквы, цифры и _.
  • Имя не может начинаться с цифры.
  • Регистр важен: age и Age — разные имена.
  • Используйте понятные имена: total_price лучше, чем x.
  • Типы данных: какие значения бывают

    Тип данных — это «вид» значения: число, текст, правда/ложь и так далее. От типа зависит, какие операции доступны и как интерпретируется значение.

    В Python есть встроенные типы, с которых удобнее всего начать:

    | Тип | Пример | Для чего обычно используют | |---|---|---| | int | 10, -3 | целые числа | | float | 3.14, -0.5 | числа с дробной частью | | str | "Привет" | текст | | bool | True, False | логика: да/нет | | NoneType | None | «нет значения» |

    Узнать тип можно функцией type():

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

    Строки (str) и кавычки

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

    Если внутри текста нужна кавычка, можно:

  • использовать другой вид кавычек
  • экранировать символ \
  • Логический тип (bool)

    True и False — это специальные значения «истина» и «ложь». Они часто появляются при сравнениях:

    None

    None означает «значение отсутствует».

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

    Базовые операции с числами

    Арифметика

    Когда использовать:

  • // удобно, когда нужны «полные» единицы (например, сколько полных недель в днях)
  • % полезен для проверки кратности (например, делится ли число на 2 без остатка)
  • Приоритет операций

    Python считает почти как в математике:

  • сначала **
  • потом *, /, //, %
  • потом +, -
  • Скобки меняют порядок:

    Базовые операции со строками

    Конкатенация (склеивание)

    Строки можно складывать:

    Повторение строки

    Длина строки

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

    Частая задача — подставить переменные в текст. Самый удобный способ для начала — f-строки:

    Сравнения и логические операции

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

    Результат сравнения — всегда True или False.

    Основные операторы:

  • == равно
  • != не равно
  • > больше
  • < меньше
  • >= больше или равно
  • <= меньше или равно
  • Важно: не путайте = и ==.

    Логические операторы and, or, not

    Ими объединяют условия:

    Короткие правила:

  • A and B истинно, если истинны оба
  • A or B истинно, если истинно хотя бы одно
  • not A меняет True на False и наоборот
  • Преобразование типов (когда это нужно)

    Иногда данные приходят «не в том виде», и их нужно преобразовать.

    Из str в число

    Для дробных чисел используют float():

    Из числа в строку

    Практический ориентир:

  • если хотите считать — нужны int или float
  • если хотите печатать текст с числами — пригодится str() или f-строка
  • Частые ошибки новичков

  • Путать = и ==.
  • Складывать строку и число без преобразования:
  • Ожидать «красивые» дроби при делении:
  • Это нормально: дробные числа хранятся приближенно.

    Итоги

    Теперь вы умеете:

  • создавать переменные и давать им понятные имена
  • различать основные типы: int, float, str, bool, None
  • выполнять базовые операции с числами и строками
  • делать сравнения и использовать and, or, not
  • преобразовывать типы с int(), float(), str()
  • Дальше эти знания станут основой для ветвлений (if) и циклов, где сравнения и переменные используются постоянно.

    3. Условия и циклы: управление логикой программы

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

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

    Зачем нужны условия и циклы

    Практически любая программа делает две вещи:

  • принимает решение в зависимости от данных
  • повторяет одинаковые действия много раз
  • Примеры:

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

    Условный оператор if

    Базовый вид if

    if выполняет блок кода, только если условие истинно.

    Ключевые правила:

  • после условия стоит двоеточие :
  • блок кода внутри условия задаётся отступами (обычно 4 пробела)
  • условие обычно получается из сравнения (>=, ==, !=) и имеет тип bool
  • Справка в документации: Управляющие конструкции (Control Flow)

    else: что делать, если условие ложно

    elif: несколько вариантов

    Если вариантов больше двух, используют elif.

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

  • проверки идут сверху вниз
  • как только найдено истинное условие, выполняется его блок и вся цепочка заканчивается
  • else сработает, если не подошло ни одно условие
  • Вложенные условия

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

    Частая ошибка: = вместо ==

  • = присваивает значение
  • == сравнивает значения
  • Логические операторы в условиях

    В условиях часто комбинируют проверки.

    Коротко:

  • A and B истинно, если истинны оба
  • A or B истинно, если истинно хотя бы одно
  • not A меняет истинность
  • Истинность значений: что считается True/False

    В if можно подставлять не только сравнения, но и сами значения. Python интерпретирует некоторые значения как ложные.

    Ложные значения:

  • False
  • 0, 0.0
  • "" (пустая строка)
  • None
  • пустые коллекции, например [], {}
  • Пример:

    Ввод данных и условия

    Частая учебная задача: спросить значение и отреагировать.

    Важно: input() всегда возвращает строку, поэтому для чисел нужно преобразование через int() или float().

    Цикл while: повторяем, пока условие истинно

    while выполняет блок кода, пока условие остаётся True.

    Что здесь важно:

  • условие проверяется перед каждой итерацией
  • внутри цикла обычно меняют переменные, чтобы цикл когда-нибудь завершился
  • !Схема работы цикла while: проверка условия и повторение

    Опасность: бесконечный цикл

    Если условие всегда истинно, цикл не завершится.

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

    Цикл for: перебор последовательности

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

    range(): повторить N раз

    range(n) даёт последовательность чисел от 0 до n - 1.

    Если нужно начать не с нуля:

    Если нужен шаг:

    Документация: range

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

    Строка состоит из символов, и for может пройти по ним.

    enumerate(): индекс и значение

    Когда нужны и номер элемента, и сам элемент, используйте enumerate().

    Документация: enumerate

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

    break: выйти из цикла

    Полезно, когда вы нашли ответ и дальше перебирать не нужно.

    continue: пропустить текущую итерацию

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

    Типовые шаблоны задач

    Проверка ввода в while

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

    Накопление результата

    Часто нужно накапливать сумму или счётчик.

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

  • забыли двоеточие : после if, elif, else, for, while
  • неправильные отступы: Python воспринимает их как структуру программы
  • бесконечный while, потому что переменная в условии не меняется
  • ожидание, что input() вернёт число, хотя он возвращает строку
  • Итоги

    Теперь вы умеете:

  • писать ветвления с if, elif, else
  • комбинировать условия через and, or, not
  • понимать, какие значения считаются истинными или ложными
  • повторять действия с помощью while и for
  • управлять циклом через break и continue
  • Дальше эти конструкции станут основой для первых небольших проектов, где программа общается с пользователем, проверяет ввод, считает результаты и повторяет действия по логике задачи.

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

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

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

    В этой статье вы изучите четыре базовые структуры:

  • списки (list)
  • кортежи (tuple)
  • множества (set)
  • словари (dict)
  • Зачем нужны структуры данных

    Одна переменная хранит одно значение, но реальные задачи почти всегда работают с наборами данных:

  • список покупок
  • оценки учеников
  • уникальные города, которые встречались во вводе
  • справочник имя → телефон
  • Структуры данных помогают:

  • хранить много значений в одной переменной
  • быстро добавлять, удалять и искать данные
  • перебирать элементы в цикле for
  • !Краткое сравнение списков, кортежей, множеств и словарей

    Списки (list)

    Список — это упорядоченная коллекция элементов. В списке:

  • есть порядок (первый, второй, третий)
  • можно хранить элементы разных типов
  • можно менять содержимое (списки изменяемые)
  • Документация: Тип list

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

    Индексация и срезы

    Индексация начинается с 0.

    Срез берёт диапазон элементов.

    Изменение списка

    Частые методы списков

    Полезные операции:

  • len(items) — размер списка
  • x in items — проверка, есть ли элемент
  • Перебор списка в цикле

    Если нужны индексы:

    Кортежи (tuple)

    Кортеж похож на список: это упорядоченная коллекция. Главное отличие: кортеж неизменяемый.

    Документация: Тип tuple

    Создание кортежа

    Кортеж из одного элемента требует запятую:

    Когда удобно использовать кортеж

    Обычно кортеж берут, когда данные воспринимаются как единая запись, которую не нужно менять:

  • координата (x, y)
  • цвет (r, g, b)
  • результат функции, возвращающей несколько значений
  • Распаковка кортежа

    Распаковка часто встречается в циклах и при работе со словарями.

    Множества (set)

    Множество — коллекция уникальных элементов. В множестве:

  • нет дубликатов
  • нет индексации как у списка (нельзя обратиться по set[0])
  • порядок не гарантирован
  • Документация: Тип set

    Создание множества

    Важно: {} — это пустой словарь, а не пустое множество.

    Для чего множества особенно полезны

    Множество удобно, когда нужно:

  • удалить дубликаты
  • быстро проверять принадлежность x in my_set
  • Операции над множествами

    Словари (dict)

    Словарь хранит пары ключ → значение. Это похоже на телефонную книгу: по имени (ключу) мы находим телефон (значение).

    Документация: Тип dict

    !Как словарь связывает ключи со значениями

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

    Доступ по ключу

    Если ключа нет, обращение через ages["Катя"] вызовет ошибку KeyError. Для безопасного доступа используйте get().

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

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

    По умолчанию for проходит по ключам:

    Ключи и значения вместе:

    Только значения:

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

    Ниже — практическая шпаргалка.

    | Структура | Как хранит данные | Можно менять? | Дубликаты | Когда выбирать | |---|---|---|---|---| | list | элементы по порядку | да | да | нужно хранить последовательность, добавлять/удалять, обращаться по индексу | | tuple | элементы по порядку | нет | да | данные как фиксированная запись, которую не нужно менять | | set | уникальные элементы | да | нет | нужно убрать дубли, быстро проверять принадлежность | | dict | ключ → значение | да | ключи уникальны | нужен быстрый доступ по ключу: имя → телефон, товар → цена |

    Небольшой пример: считаем повторения слов

    Эта задача соединяет всё, что вы прошли раньше: input(), цикл for, условия и словарь.

    Здесь:

  • split() превращает строку в список слов
  • counts — словарь, где ключ это слово, а значение это сколько раз оно встретилось
  • if w in counts проверяет наличие ключа
  • Частые ошибки новичков

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

    Теперь вы знаете базовые структуры данных Python и их роль в программах:

  • list для последовательностей, которые нужно менять
  • tuple для фиксированных наборов значений
  • set для уникальных элементов и быстрых проверок
  • dict для хранения связей ключ → значение
  • В следующих материалах эти структуры станут основой для первых небольших проектов: меню в консоли, обработка данных пользователя, простая статистика и мини-игры.

    5. Функции, область видимости и обработка ошибок

    Функции, область видимости и обработка ошибок

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

    Зачем нужны функции

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

    Функции помогают:

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

    Документация: Определение функций (Python Tutorial)

    Как определить и вызвать функцию

    Функция создаётся с помощью def, затем указывается имя, параметры в скобках и двоеточие. Тело функции — блок с отступом.

    Здесь:

  • greet — имя функции
  • name — параметр (то, что функция ожидает получить)
  • "Аня" — аргумент (то, что вы реально передали при вызове)
  • return: как функция возвращает результат

    Если функция должна не просто печатать, а выдавать значение, используется return.

    Правила:

  • return завершает выполнение функции
  • функция может возвращать любое значение: число, строку, список, словарь
  • если return отсутствует, функция возвращает None
  • Параметры функций

    Несколько параметров и значения по умолчанию

    Можно задавать значения по умолчанию, чтобы параметр был необязательным.

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

    Именованные аргументы

    Можно передавать аргументы по имени — это делает вызов понятнее.

    Возврат нескольких значений

    На практике функция часто возвращает несколько результатов. В Python это обычно делается через кортеж.

    Функции и структуры данных

    Функции особенно полезны, когда вы обрабатываете списки и словари.

    Пример: посчитать частоты слов (мы делали похожее в теме словарей), но оформить аккуратно.

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

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

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

    Главная идея:

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

    Локальные переменные

    Глобальные переменные

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

    Частая ошибка: ожидать изменения глобальной переменной

    global: когда нужно изменить глобальную переменную

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

    nonlocal: для вложенных функций

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

    Документация: Инструкция global, Инструкция nonlocal

    Ошибки и исключения: как программы «падают» и как это контролировать

    Когда Python не может продолжать выполнение, он поднимает исключение (exception). Вы уже видели примеры вроде NameError или KeyError.

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

  • Синтаксические ошибки — код не запускается (например, забыли двоеточие после if). Их исправляют в редакторе.
  • Исключения во время выполнения — код запускается, но ломается на конкретной строке при определённых данных.
  • Документация: Встроенные исключения

    try / except: перехват ошибок

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

    Здесь ValueError возникает, если int() не может преобразовать строку.

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

    else и finally

  • else выполняется, если ошибок не было
  • finally выполняется всегда (удобно для «уборки», закрытия ресурсов)
  • raise: как создавать свои ошибки

    Иногда лучше явно остановить выполнение с понятным сообщением, если входные данные недопустимы.

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

    Практические советы для начинающих

  • Давайте функциям имена-глаголы: calculate_total, format_name, is_adult.
  • Старайтесь, чтобы функция делала одну понятную вещь.
  • Возвращайте результат через return, а не меняйте глобальные переменные.
  • Ловите исключения там, где вы реально можете их обработать.
  • Не пишите «пустой» except: без указания типа — так легко скрыть ошибку.
  • Итоги

    Теперь вы умеете:

  • писать функции с def, параметрами и return
  • использовать значения по умолчанию и именованные аргументы
  • понимать разницу между локальными и глобальными переменными
  • при необходимости применять global и nonlocal
  • обрабатывать ошибки через try / except / else / finally
  • создавать свои проверки с raise
  • Дальше эти навыки помогут собирать небольшие проекты из функций, делать код более аккуратным и надёжно обрабатывать пользовательский ввод и непредвиденные ситуации.

    6. Работа со строками, файлами и модулями

    Работа со строками, файлами и модулями

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

    Строки в Python

    Строка (str) хранит текст: слова, предложения, содержимое файла, ввод пользователя через input().

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

    Индексация и срезы

    Строку можно воспринимать как последовательность символов.

  • text[0] берёт первый символ
  • text[-1] берёт последний символ
  • text[1:4] берёт срез от индекса 1 до 4 не включая 4
  • Частые методы строк

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

    Документация: Тип str

    #### Приведение к верхнему и нижнему регистру

    #### Удаление пробелов по краям

    Очень полезно при обработке ввода и строк из файлов.

    Есть также lstrip() и rstrip().

    #### Поиск и замена

    #### Проверки

    Разбиение и склейка: split() и join()

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

    Обратная операция: собрать строку из списка.

    Практическая идея: split() часто даёт list, который вы потом обрабатываете циклами, условиями, словарями и функциями.

    Форматирование строк

    Для подстановки переменных в текст удобнее всего использовать f-строки.

    Это особенно полезно при генерации строк для вывода в консоль и записи в файл.

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

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

    !Схема показывает, что программа открывает файл, читает или пишет, а затем закрывает его

    Открытие файла через with open(...)

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

    Документация: Функция open

    Здесь:

  • "notes.txt" это путь к файлу
  • "r" это режим открытия (read)
  • encoding="utf-8" помогает корректно читать кириллицу
  • f.read() читает файл целиком в одну строку
  • Режимы открытия файла

    | Режим | Что означает | Если файла нет | Что с содержимым | |---|---|---|---| | "r" | чтение | ошибка | не меняется | | "w" | запись | создаст | очистит и перезапишет | | "a" | добавление | создаст | допишет в конец |

    Чтение файла построчно

    Если файл большой или вам удобнее обрабатывать строки по одной, используйте цикл for.

    Полезные детали:

  • при переборе for line in f каждая line обычно заканчивается символом перевода строки, поэтому часто применяют strip()
  • пустые строки можно отфильтровать через if line:
  • Запись в файл

    Запишем список строк, по одной строке на элемент.

    Если нужно дописывать новые строки, используйте режим "a".

    Типичные ошибки при работе с файлами

  • Неверный путь к файлу
  • - если файл не находится, вы получите FileNotFoundError
  • Проблемы с кодировкой
  • - чаще всего решается явным encoding="utf-8"
  • Забыли закрыть файл
  • - решается использованием with open(...) as f:

    Файлы и обработка ошибок

    Если файл может отсутствовать, это нормально обработать через try / except.

    Так вы применяете тему исключений из прошлой статьи к реальной задаче.

    Модули в Python

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

    Документация: Система импорта

    !Схема показывает, как один файл Python импортирует другой и использует его функции

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

    Примеры модулей, которые часто нужны уже в первых проектах.

  • math для математических функций
  • random для случайных чисел
  • datetime для времени и дат
  • json для чтения и записи данных в формате JSON
  • Документация: Модуль random

    Разные формы импорта

    #### import module

    #### from module import name

    #### Псевдонимы через as

    Псевдонимы полезны для сокращения или чтобы избежать конфликтов имён.

    Свой модуль: вынос функций в отдельный файл

    Представим, что вы часто читаете файл в список очищенных строк. Вынесем это в utils.py.

    utils.py:

    main.py:

    Так вы объединяете темы:

  • функции
  • строки (strip)
  • списки (append)
  • файлы (open)
  • модули (from ... import ...)
  • __name__ == "__main__": как отличить запуск от импорта

    Иногда нужно, чтобы файл умел:

  • запускаться как программа
  • импортироваться как модуль без автоматического запуска
  • Для этого используют проверку __name__.

    Идея простая:

  • если файл запущен напрямую, условие истинно и выполнится main()
  • если файл импортируют, условие ложно и код внутри if не выполнится
  • Небольшой практический пример: статистика слов из файла

    Задача: прочитать файл, посчитать частоту слов и вывести топ.

    Что здесь закрепляется:

  • строки: strip(), lower(), split()
  • цикл по файлу и вложенные циклы
  • словарь частот: get()
  • функция, которая возвращает результат
  • Итоги

    Теперь вы умеете:

  • извлекать части строки с индексами и срезами
  • использовать ключевые методы строк: strip, lower, upper, replace, split, join
  • читать и записывать файлы через with open(...) и понимать режимы r, w, a
  • обрабатывать ошибки файлов через try / except
  • подключать модули стандартной библиотеки и писать собственные модули
  • понимать, зачем нужен блок if __name__ == "__main__":
  • Эти навыки напрямую ведут к первым полноценным мини-проектам: консольные заметки, счётчики статистики, простые инструменты обработки текстовых файлов.

    7. Итоговые мини-проекты и практические задачи

    Итоговые мини-проекты и практические задачи

    К этому моменту вы уже умеете:

  • писать программы из переменных, условий и циклов
  • хранить данные в списках, множествах и словарях
  • выносить повторяющийся код в функции
  • обрабатывать ошибки через try / except
  • работать со строками, файлами и импортами модулей
  • Эта статья поможет перейти от отдельных упражнений к первым законченным программам. Ниже вы найдёте несколько мини-проектов с понятными требованиями, подсказками по архитектуре и стартовыми заготовками кода.

    !Путь от идеи до рабочей программы

    Как собирать мини-проект, чтобы он получился

    Хороший учебный проект почти всегда строится по одному шаблону.

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

  • Программа запускается с одного файла main.py.
  • Везде, где возможен плохой ввод, есть проверка или try / except.
  • Данные хранятся в понятных структурах: список, словарь, множество.
  • Логика вынесена в функции, а не размазана по всему файлу.
  • Если используется файл, он открывается через with open(...):.
  • Мини-проект: консольный калькулятор выражений

    Идея

    Пользователь вводит выражение вида 12 + 5, программа выводит результат.

    Требования

  • Поддержать операции +, -, *, /.
  • Уметь обрабатывать пробелы в вводе.
  • Не падать при некорректном вводе.
  • Дополнительно: хранить историю вычислений в списке и показывать по команде.
  • Что вы закрепляете

  • строки: strip(), split()
  • условия: выбор операции
  • функции: разнесение по задачам
  • исключения: ValueError, ZeroDivisionError
  • Скелет кода

    Мини-проект: список дел с сохранением в файл

    Идея

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

    Требования

  • Команды: add, list, done, remove, exit.
  • Сохранение между запусками.
  • Данные хранить как список словарей.
  • Пример структуры одной задачи:

  • {"title": "Купить хлеб", "done": False}
  • Формат хранения

    Самый практичный вариант для начинающих это JSON через стандартный модуль json.

  • документация: Модуль json
  • Что вы закрепляете

  • структуры данных: list + dict
  • файлы: чтение и запись
  • модули: import json
  • функции: загрузка/сохранение и операции над задачами
  • Скелет кода

    Мини-проект: анализ текста и частота слов

    Идея

    Программа читает файл, считает частоту слов и выводит топ самых частых.

    Требования

  • Приводить текст к нижнему регистру.
  • Убирать простую пунктуацию.
  • Выводить топ-10 слов.
  • Что вы закрепляете

  • строки: lower(), replace(), split()
  • словари: подсчёт частот через dict.get()
  • файлы: построчное чтение
  • Документация:

  • Тип dict
  • Мини-реализация

    Мини-проект: игра Угадай число с уровнями сложности

    Идея

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

    Требования

  • Уровни сложности: диапазоны 1..10, 1..100, 1..1000.
  • Ограничение на число попыток.
  • Повтор игры по желанию.
  • Что вы закрепляете

  • циклы: while для попыток
  • условия: подсказки больше или меньше
  • исключения: ввод числа
  • модуль: random
  • Документация:

  • Модуль random
  • Подсказка по структуре функций

  • choose_level() возвращает максимальное число и лимит попыток
  • ask_int(prompt) возвращает число или повторяет ввод
  • play_round(max_value, tries) играет один раунд
  • Мини-проект: менеджер контактов

    Идея

    Хранить контакты имя → телефон и уметь искать, добавлять, удалять, сохранять в файл.

    Требования

  • Команды: add, get, delete, list, exit.
  • Хранение: словарь dict.
  • Сохранение: JSON.
  • Почему здесь нужен словарь

  • контакт ищется по имени, значит удобен доступ по ключу: contacts[name]
  • безопасное чтение удобно делать через contacts.get(name)
  • Как оформить проект в несколько файлов

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

    Пример структуры:

  • main.py отвечает за ввод команд и вывод
  • storage.py отвечает за загрузку и сохранение
  • logic.py отвечает за операции над данными
  • Принцип простой: ввод и печать отдельно, логика отдельно, работа с файлами отдельно.

    Документация:

  • Система импорта
  • Итоги

    Вы познакомились с набором мини-проектов, которые закрывают ключевые навыки курса:

  • консольное взаимодействие: input(), команды, меню
  • логика: if, for, while, break, continue
  • структуры данных: списки и словари как основа программ
  • функции как способ собирать программу из понятных частей
  • устойчивость к ошибкам через try / except
  • сохранение состояния через файлы и JSON
  • подключение модулей стандартной библиотеки
  • Дальше лучше всего выбрать один проект и довести его до удобного состояния: аккуратные сообщения, обработка краевых случаев, сохранение и понятная структура файлов. Именно так формируется настоящая практика программирования.