Основы программирования на Python для начинающих

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

1. Что такое программирование и как работает Python

Что такое программирование и как работает Python

Представь, что ты приходишь в ресторан и хочешь заказать блюдо. Ты говоришь официанту: «Мне, пожалуйста, пасту карбонара и апельсиновый сок». Официант записывает заказ, передаёт его на кухню, повар готовит, и через 15 минут ты получаешь еду. Ты не знаешь, как именно повар режет лук, на каком огне жарит бекон и сколько минут варит пасту — но результат есть. Программирование работает точно так же: ты даёшь компьютеру инструкции на понятном ему языке, а он выполняет их шаг за шагом и выдаёт результат.

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

Зачем нужен язык программирования

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

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

Существуют сотни языков программирования: C, Java, JavaScript, C++, Go, Rust и многие другие. Каждый создан для определённых задач. Но Python выделяется среди них по одной простой причине — он максимально похож на обычный английский текст.

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

Python создал в 1991 году нидерландский программист Гвидо ван Россум. Он назвал язык в честь британского комедийного шоу Monty Python's Flying Circus — потому что программирование должно приносить удовольствие, а не только пользу.

Вот как выглядит программа, которая выводит на экран приветствие, на двух языках:

На языке C:

На Python:

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

Python используют в Data Science (анализ данных), машинном обучении, веб-разработке, автоматизации, научных исследованиях и даже в космической отрасли — NASA применяет Python для анализа данных с марсоходов. Instagram, Spotify, Netflix и Dropbox написаны с его участием. Это не «учебный язык для детей» — это мощный инструмент, который при этом остаётся простым для изучения.

Как установить Python и написать первую программу

Чтобы начать писать код, нужно установить Python на компьютер. Зайди на официальный сайт python.org, скачай последнюю версию для своей операционной системы и запусти установщик. На Windows обязательно отметь галочку «Add Python to PATH» — это позволит запускать Python из командной строки.

После установки открой терминал (на Windows — командную строку или PowerShell, на macOS/Linux — Terminal) и введи:

Если ты видишь что-то вроде Python 3.12.0 — всё установлено правильно.

Теперь напиши свою первую программу. Открой любой текстовый редактор — даже обычный «Блокнот» — и введи:

Сохрани файл с расширением .py, например hello.py. Затем в терминале перейди в папку с файлом и выполни:

На экране появится: Привет! Я изучаю Python!

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

Как Python понимает твой код

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

Внутри интерпретатора Python код проходит через несколько этапов:

  • Лексический анализ — текст разбивается на токены (слова, числа, знаки), как если бы ты разрезал предложение на отдельные карточки со словами.
  • Синтаксический анализ — проверяется, что карточки сложены в правильном порядке. Если ты напишешь print "Привет" без скобок, Python сообщит об ошибке синтаксиса.
  • Компиляция в байт-код — код превращается в промежуточное представление, понятное виртуальной машине Python.
  • Выполнение — виртуальная машина выполняет байт-код и выводит результат.
  • Всё это происходит за доли секунды. Тебе не нужно знать эти детали, чтобы писать программы — но понимание процесса помогает, когда появляются ошибки и нужно разобраться, что пошло не так.

    Интерактивная оболочка и IDE

    Помимо запуска файлов, Python можно использовать в интерактивном режиме. Просто введи python в терминале без имени файла — и появится приглашение >>>. Теперь каждая строка, которую ты введёшь, будет выполняться мгновенно:

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

    Для серьёзной работы программисты используют IDE (Integrated Development Environment) — среды разработки, которые подсвечивают код, подсказывают ошибки и позволяют запускать программы одной кнопкой. Самые популярные для Python:

  • VS Code — лёгкий, бесплатный, с огромным количеством расширений
  • PyCharm — мощная среда специально для Python
  • Thonny — максимально простой редактор для начинающих
  • Начни с Thonny или VS Code — они не перегружены функциями и помогут сосредоточиться на коде.

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

    2. Переменные и данные как коробки с вещами

    Переменные и данные как коробки с вещами

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

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

    Переменная — это имя, которое указывает на определённое значение в памяти компьютера. Когда ты пишешь имя = "Анна", ты говоришь Python: «Сохрани текст "Анна" в контейнер с именем "имя"». После этого в любой момент ты можешь обратиться к этому контейнеру и получить оттуда значение.

    Обрати внимание: при создании переменной используется знак =, но это не математическое равенство. Это оператор присваивания — он кладёт значение в коробку. Запись возраст = 25 читается как «возраст получает значение 25», а не «возраст равен 25».

    Типы данных: что можно положить в коробку

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

    Целые числа — int

    Целые числа (int) — это 0, 1, -42, 1000, -7. Всё, что не имеет дробной части. Python может работать с целыми числами любой длины — ты можешь хранить число с миллионом знаков, и оно не потеряет точность.

    Дробные числа — float

    Числа с плавающей точкой (float) — это 3.14, -0.001, 2.0. Они нужны, когда важна точность после запятой: расчёты, координаты, проценты.

    Строки — str

    Строки (str) — это текст. Любой текст заключается в кавычки: одинарные 'текст' или двойные "текст". Python не различает их — выбирай те, которые удобнее.

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

    Логический тип — bool

    Булевы значения (bool) — это всего два варианта: True (истина) и False (ложь). Они появляются, когда программа сравнивает значения или проверяет условия.

    Как узнать тип переменной

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

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

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

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

    Нельзя называть переменные как угодно. Вот основные правила:

  • Имя может содержать буквы, цифры и символ подчёркивания _
  • Имя не может начинаться с цифры: 2x — ошибка, а x2 — нормально
  • Имя не может совпадать с ключевыми словами Python: if, for, while, class, import и другими
  • Регистр важен: Имя, имя и ИМЯ — это три разные переменные
  • Существуют устоявшиеся соглашения об именовании. В Python принято использовать snake_case для переменных и функций — слова в нижнем регистре, разделённые подчёркиванием:

    Имена должны быть осмысленными. Переменная x ничего не говорит о своём содержимом, а количество_попыток — говорит сразу.

    Базовые операции с данными

    Python умеет выполнять с числами все стандартные арифметические операции:

    | Оператор | Действие | Пример | Результат | |----------|----------|--------|-----------| | + | Сложение | 5 + 3 | 8 | | - | Вычитание | 10 - 4 | 6 | | | Умножение | 6 7 | 42 | | / | Деление | 15 / 4 | 3.75 | | // | Целочисленное деление | 15 // 4 | 3 | | % | Остаток от деления | 15 % 4 | 3 | | | Возведение в степень | 2 10 | 1024 |

    Особенно интересны операторы // (целочисленное деление) и % (остаток). Представь, что у тебя 17 конфет и 5 друзей. Целочисленное деление 17 // 5 покажет, сколько конфет достанется каждому (по 3), а остаток 17 % 5 — сколько останется лишних (2).

    Форматированные строки — f-строки

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

    Внутри фигурных скобок можно писать даже выражения:

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

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

    3. Принятие решений с помощью условий

    Принятие решений с помощью условий

    Каждое утро ты принимаешь десятки решений, даже не замечая этого. «На улице идёт дождь? — Возьму зонт. Не идёт? — Оставлю его дома». «Будильник прозвенел? — Встаю. Не прозвенел? — Сплю дальше». Твой мозг постоянно проверяет условия и выбирает один из путей. Условия в программировании делают то же самое: они позволяют программе проверить что-то и выполнить разные действия в зависимости от результата.

    Оператор сравнения: как Python проверяет равенство

    Прежде чем говорить об условиях, нужно понять, как Python сравнивает значения. Для этого существуют операторы сравнения — они возвращают True или False:

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

    Важный нюанс: = и == — это разные вещи. Один знак = присваивает значение переменной, а два знака == сравнивают две переменные. Это одна из самых частых ошибок начинающих.

    Оператор if: если условие истинно

    Оператор if — это фундаментальная конструкция принятия решений. Её синтаксис выглядит так:

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

    Если температура действительно больше 30, программа выведет сообщение. Если нет — просто пропустит этот блок и пойдёт дальше.

    if-else: если нет — то вот что

    Часто нужно выполнить одно действие при истинном условии и другое — при ложном. Для этого существует else:

    Здесь программа проверяет, хватает ли денег. Если хватает — покупает. Если нет — сообщает об этом. Всегда выполняется ровно один из двух блоков, никогда оба сразу.

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

    Жизнь редко делится на «да» и «нет». Бывает три, пять, десять вариантов. Для этого служит elif (сокращение от else if):

    Python проверяет условия сверху вниз и останавливается на первом истинном. Как только найдено подходящее условие, остальные elif и else пропускаются. Поэтому порядок условий важен: если поставить оценка >= 60 первым, то оценка 95 тоже попадёт в этот блок, потому что 95 действительно больше 60.

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

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

  • and — оба условия должны быть истинными
  • or — хотя бы одно условие должно быть истинным
  • not — инвертирует результат (истина становится ложью и наоборот)
  • Логические операторы можно комбинировать, но при сложных условиях лучше разбивать их на несколько переменных для читаемости:

    Вложенные условия

    Условия можно вкладывать друг в друга, как матрёшки:

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

    Тернарный оператор: короткая запись

    Для простых условий Python предлагает компактную запись — тернарный оператор:

    Это эквивалент обычного if-else, записанный в одну строку. Удобно для присваивания значений, но не злоупотребляй — сложные условия в одну строку делают код нечитаемым.

    Ловушки и частые ошибки

    Сравнение с == вместо is. Для проверки, является ли значение None, используй is, а не ==:

    Неправильные отступы. Если ты случайно поставишь лишний пробел или забудешь отступ, Python выдаст IndentationError. Следи за тем, чтобы все строки внутри блока if/elif/else имели одинаковый отступ.

    Сравнение разных типов. Python позволяет сравнивать числа разных типов (int и float), но сравнение числа со строкой вызовет ошибку:

    Нужно сначала преобразовать тип: int("10") > 5.

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

    4. Повторение действий с помощью циклов

    Повторение действий с помощью циклов

    Представь, что тебе нужно написать поздравительную открытку для 50 коллег. Ты бы не стал писать 50 отдельных программ — ты бы создал шаблон и подставлял в него разные имена. Циклы в программировании делают именно это: они позволяют повторять один и тот же блок кода много раз, каждый раз с немного другими данными или условиями.

    Цикл for: перебираем элементы

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

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

    Функция range: генератор чисел

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

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

    Функция range() принимает до трёх аргументов:

    | Вызов | Что генерирует | Пример использования | |-------|---------------|---------------------| | range(5) | 0, 1, 2, 3, 4 | Повторить 5 раз | | range(2, 7) | 2, 3, 4, 5, 6 | Числа от 2 до 6 | | range(0, 10, 2) | 0, 2, 4, 6, 8 | Чётные от 0 до 8 | | range(10, 0, -2) | 10, 8, 6, 4, 2 | Обратный отсчёт |

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

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

    Здесь критически важно изменять переменную условия внутри цикла. Если забыть строку счётчик += 1, условие счётчик < 5 будет всегда истинным, и цикл будет крутиться бесконечно — это называется бесконечный цикл. Единственный способ остановить его — принудительно закрыть программу.

    Когда использовать for, а когда while

    Выбор между for и while зависит от задачи:

  • for — когда ты заранее знаешь, сколько раз нужно повторить, или когда перебираешь элементы коллекции
  • while — когда количество повторений неизвестно и зависит от условия, которое может измениться в любой момент
  • Управление циклом: break, continue, else

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

    break — прервать цикл

    break немедленно останавливает цикл и выходит из него. Представь, что ты ищешь ключи по комнатам: как только нашёл — прекращаешь поиски.

    Вывод будет:

    Элементы 1 и 5 даже не проверяются — цикл прервался раньше.

    continue — пропустить итерацию

    continue пропускает оставшийся код текущей итерации и переходит к следующей. Это как пропустить страницу в книге — ты не выбрасываешь книгу, а просто листаешь дальше.

    Этот код выведет только нечётные числа: 1, 3, 5, 7, 9. Когда число чётное, continue отправляет цикл к следующей итерации, и print не выполняется.

    else в цикле

    У циклов for и while есть необычная конструкция else — блок, который выполняется, когда цикл завершился естественно, без break:

    Если бы в списке была пятёрка, break прервал бы цикл и блок else не выполнился бы. Это удобно для поиска: «перебрал все элементы и не нашёл то, что искал».

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

    Циклы можно вкладывать друг в друга. Внешний цикл отвечает за строки, внутренний — за столбцы:

    Результат:

    Количество операций во вложенных циклах перемножается: если внешний выполняет 100 итераций, а внутренний — 100, итого будет 10 000 проходов. При больших объёмах данных это может замедлить программу, поэтому вложенные циклы стоит использовать осознанно.

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

    Python предлагает элегантный синтаксис для создания списков на основе цикла — генератор списков (list comprehension):

    Это эквивалент обычного цикла, записанный компактнее:

    Генераторы можно комбинировать с условиями:

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

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

    5. Создание первого простого проекта

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

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

    Проект 1: Калькулятор

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

    Шаг 1: Приветствие и ввод данных

    Функция input() останавливает программу и ждёт, пока пользователь введёт текст и нажмёт Enter. Всё, что введено, возвращается как строка — поэтому мы оборачиваем результат в float(), чтобы преобразовать текст в число. Без этого преобразования "10" + "5" дало бы "105" (склеивание строк), а не 15 (арифметическое сложение).

    Шаг 2: Обработка операций с условиями

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

    Шаг 3: Вывод результата

    Полный код калькулятора

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

    Улучшение: цикл для повторных вычислений

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

    Здесь while True создаёт бесконечный цикл, а break прерывает его, когда пользователь вводит «выход». Это стандартный паттерн для интерактивных программ.

    Проект 2: Простой чат-бот

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

    Шаг 1: Приветствие

    Шаг 2: Цикл общения

    Разбор ключевых моментов

    .lower() превращает все буквы в нижний регистр, чтобы «Привет», «привет» и «ПРИВЕТ» обрабатывались одинаково. .strip() убирает пробелы в начале и конце строки — на случай, если пользователь случайно нажал лишний пробел.

    Оператор in проверяет, содержится ли подстрока в строке. Выражение "привет" in сообщение вернёт True, если пользователь написал «привет», «приветик» или «ну привет». Это делает бота гибче — он не требует точного совпадения.

    input() внутри цикла используется как пауза перед punchline анекдота — пользователь нажимает Enter, когда готов услышать ответ.

    Полный код чат-бота

    Как развивать проекты дальше

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

    Для калькулятора:

  • Добавить степени, квадратный корень, проценты
  • Сохранять историю вычислений в списке и выводить по запросу
  • Обрабатывать некорректный ввод с помощью try-except (если пользователь введёт буквы вместо числа)
  • Для чат-бота:

  • Добавить больше тем и ключевых слов
  • Запоминать имя пользователя и обращаться по имени
  • Использовать модуль random для случайного выбора ответов, чтобы бот не повторялся
  • Каждое улучшение — это повод применить новую концепцию. Переменные, условия и циклы — это фундамент. На них строятся функции, модули, файлы, базы данных и всё остальное, что ты будешь изучать дальше.

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