К содержанию

Модуль 1 · Урок 1.1

Программа и её выполнение

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

3 задачи

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

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

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

Программа и алгоритм

Программа описывает действия, которые человек выполняет в уме. Предположим, нужно найти стоимость трёх тетрадей по 40 рублей. Человек может сразу получить 120. Для компьютера нужно описать действия: взять количество, взять цену, перемножить их, показать результат.

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

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

Тонкости:как Python выполняет код

В CPython — обычном Python с python.org — исходный текст сначала преобразуется во внутренние инструкции. Для первых программ достаточно понимать наблюдаемое поведение; представление «компьютер буквально исполняет каждую напечатанную строку по очереди» позднее нужно уточнить: условия пропускают блоки, циклы повторяют их, функции выполняются при вызове.

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

Установка Python

Чтобы запускать программы на своём компьютере, нужны две вещи: интерпретатор Python и программа, в которой пишут код. Интерпретатор ставится один раз. Писать код можно в разных программах:

  • Редактор кода — программа для набора и правки текста программы.
  • IDE (интегрированная среда разработки) — редактор, в который встроены запуск программы и поиск ошибок.
  • PyCharm — IDE для Python, с которой удобно работать весь курс. IDLE — простая IDE, которая ставится вместе с Python. VS Code — популярный редактор, которому Python добавляет расширение.

Шаг 1. Установи Python — он нужен при любом выборе среды. Покажем на Windows.

Страница загрузки python.org с кнопкой Download Python install manager
Страница python.org/downloads на Windows: жёлтая кнопка «Download Python install manager» скачивает установщик.
  1. Открой python.org/downloads и нажми «Download Python install manager». Это установщик Python от его разработчиков; его же можно взять в Microsoft Store под названием «Python install manager».
  2. Запусти скачанный файл и нажми «Install».
    Окно установки Python install manager с кнопкой Install
    Окно установки: нажми «Install» — остальное установщик сделает сам.
  3. Открой терминал: в меню «Пуск» набери «Терминал» (или «Командная строка») и запусти найденную программу.
  4. Набери python и нажми Enter. При первом запуске установщик сам скачает последнюю версию Python, затем появится приглашение >>>: Python ждёт строку кода (это интерактивный режим, о нём — в следующем разделе). Выйти из него можно командой exit().
  5. Проверь версию командой:
python --version

Ответ вида Python 3.15.0 означает, что всё готово; цифры зависят от версии. На python.org есть и прежний отдельный установщик («standalone installer»): если ставишь через него, в первом окне отметь «Add python.exe to PATH», иначе команда python в терминале не найдётся.

Терминал Windows: python --version, затем интерактивный режим с 3 * 40 и exit()
Терминал после установки: версия Python, затем интерактивный режим — после >>> набрано 3 * 40, ниже ответ, exit() возвращает в терминал.

Шаг 2. Выбери, где писать код. Мы советуем PyCharm: в нём удобно работать весь курс. Остальные варианты тоже подходят — выбери вкладку:

PyCharm
  1. Скачай PyCharm для Windows с jetbrains.com/pycharm, запусти установщик и пройди его кнопкой «Next». Для курса хватит бесплатных возможностей PyCharm.
  2. Открой PyCharm и выбери «New Project». В поле «Location» укажи папку для программ курса. Установленный Python PyCharm найдёт сам — оставь его и нажми «Create».
    Окно New Project в PyCharm: папка проекта, интерпретатор Python и кнопка Create
    Окно «New Project»: папка проекта в поле «Location», найденный Python в поле интерпретатора, кнопка «Create».
  3. В панели «Project» слева щёлкни правой кнопкой по папке проекта и выбери «New → Python File». Имя — main, расширение .py PyCharm добавит сам.
    PyCharm: контекстное меню папки kurs, пункт New, подпункт Python File
    Новый файл: правая кнопка по папке проекта → «New» → «Python File».
  4. Набери код в открывшемся файле и запусти его: CtrlShiftF10 или правой кнопкой по тексту → «Run 'main'». Вывод появится внизу, в панели «Run».
    PyCharm: файл main.py с двумя строками и вывод Привет! и 120 в панели Run
    Файл main.py в редакторе, внизу в панели «Run» — вывод программы.
IDLE
  1. IDLE ставится вместе с Python. В меню «Пуск» набери «IDLE» и открой найденную программу. Откроется окно «IDLE Shell» с приглашением >>> — это интерактивный режим.
  2. Выбери «File → New File»: откроется пустое окно редактора.
  3. Набери код и сохрани файл командой «File → Save» или CtrlS, имя — main.py.
  4. Выбери «Run → Run Module» или нажми F5. Вывод появится в окне «IDLE Shell».
    IDLE: редактор main.py с меню Run Module и окно IDLE Shell с выводом
    Слева редактор с файлом и меню «Run → Run Module», справа «IDLE Shell» с выводом программы.
VS Code
  1. Скачай VS Code с code.visualstudio.com и установи.
  2. Открой раздел расширений — CtrlShiftX, найди «Python» от Microsoft и нажми «Install».
  3. Выбери «File → Open Folder» и открой папку для программ. Создай в ней файл main.py.
  4. Набери код и нажми треугольник «Run Python File» в правом верхнем углу. Вывод появится внизу, в панели «Terminal».
    VS Code: main.py, кнопка Run Python File и вывод в панели Terminal
    Кнопка «Run Python File» справа вверху запускает файл, вывод — в панели «Terminal».

macOS и Linux. PyCharm и VS Code ставятся так же, с их сайтов. На macOS установщик с python.org ставит и IDLE, а команда в терминале называется python3. В Linux Python обычно уже есть: проверь его командой python3 --version; IDLE в Ubuntu и Debian ставится пакетом idle3. Дальше в курсе вместо python пиши python3.

Курс использует Python 3.10 и новее, без сторонних библиотек в основных примерах. Перед экзаменом проверь, какая версия стоит на твоём компьютере.

Не получается? Напиши в наш Telegram-чат t.me/kodumka: опиши, что делал и что видишь на экране, — поможем разобраться.

Первая программа

Первая программа — это файл с расширением .py, который запускает интерпретатор. Расширение .py обозначает исходный файл Python. Создай файл main.py, запиши в него две строки и запусти так, как показано во вкладке твоей среды в разделе «Установка Python»:

print("Привет!")print(3 * 40)
Привет! 120

Запуск из терминала работает без IDE. Терминал — окно, принимающее команды операционной системы. Проще всего открыть его прямо в PyCharm: вкладка «Terminal» внизу окна уже открыта в папке проекта. В отдельном терминале сначала перейди в папку с файлом командой cd и путём к папке, например cd C:\Users\Anna\PycharmProjects\kurs. Затем выполни:

python main.py
Вкладка Terminal в PyCharm: команда python main.py и вывод программы
Вкладка «Terminal» в PyCharm уже открыта в папке проекта: достаточно набрать python main.py.

Если набрать в терминале просто python, откроется интерактивный режим с приглашением >>>: каждая введённая строка выполняется сразу, и её результат виден ниже. Это удобно, чтобы проверить одну строку, но программа в файле так не сохраняется. В интерактивный режим вводят Python-код, а не команду python main.py. Само приглашение >>> в файл копировать не надо.

В редакторе программу пишут и сохраняют, в терминале командой запускают весь файл, а в интерактивном режиме вводят код по одной строке и сразу видят ответ.

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

Как работать с кодом

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

С каждым блоком кода в уроке полезно пройти один и тот же круг из четырёх шагов:

  1. Написать. Перепиши код в свой файл — руками, а не копированием: так замечаешь каждый знак.
  2. Запустить файл и посмотреть, что он напечатал.
  3. Сравнить напечатанное с выводом под кодом в уроке. Если не совпало, ищи, чем твой код отличается.
  4. Объяснить, почему вывод именно такой. Затем измени одну деталь — например, число 40 на 50 — предскажи новый вывод и пройди круг снова.
Главное звено круга — сравнение: вывод сверяют с тем, что ожидали получить. Совпадение без объяснения ещё не понимание, поэтому круг замыкается на вопросе «почему».

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

Так устроен каждый блок кода в курсе: имя файла, код с пояснениями после #, вывод программы и, если она остановилась, сообщение об ошибке красным. На схеме показана только последняя строка сообщения; полное сообщение разберём в разделе «Как читать traceback».

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

Критерий понимания. Недостаточно знать, что программа «что-то считает». Нужно уметь сказать, что делает каждая строка, какое значение получается на каждом шаге и почему вывод именно такой.

Выражение и инструкция

Выражение вычисляет значение, инструкция — целая строка программы, которая выполняется. Выражение — запись, у которой есть значение: 3 * 40 (значение 120), 2 + 5 (7), "Привет!" (текст). Инструкция — то, что Python выполняет как отдельный шаг программы, обычно одна строка. print(3 * 40) — инструкция: она вычисляет выражение 3 * 40 и выводит его значение. Строка 3 * 40 без print — тоже инструкция, но она только вычисляет значение и ничего с ним не делает. Другие виды инструкций — присваивание, условие, цикл — появятся в следующих уроках.

Тонкости:выражение внутри инструкции

Строго говоря, вызов print(3 * 40) — тоже выражение: у него есть значение, специальное None, «ничего». Строка с одним выражением становится инструкцией-выражением. Для первых программ важно другое: значение видно на экране, только если его передали в print.

В интерактивном режиме результат введённого выражения обычно показывается автоматически. В файле строка 3 * 40 сама по себе ничего не напечатает. Чтобы увидеть результат, используй print(3 * 40):

3 * 40print(3 * 40)print("3 * 40")
120 3 * 40

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

Оба выражения вычисляют 120, но на экран значение попадает, только если его передали в print.

Три вида ошибок

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

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

print(3 * 40
SyntaxError: '(' was never closed

Здесь переставлены буквы в имени функции:

pritn(3 * 40)
NameError: name 'pritn' is not defined. Did you mean: 'print'?

А здесь всё записано верно, но вместо умножения стоит сложение:

print(3 + 40)
43

Это три разные проблемы. Синтаксическая ошибка означает, что запись нельзя корректно разобрать: не закрыта кавычка или скобка. Исключение при выполнении означает, что очередная операция не может завершиться обычным образом: например, вызвать функцию с неизвестным именем или разделить на ноль. Логическая ошибка означает, что программа выполняется, но вычисляет не то, что требуется. О ней Python не сообщает вовсе: 43 выглядит как обычное число, и только сверка с ручным расчётом показывает, что ответ неверен.

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

Как читать traceback

Сообщение об ошибке читают с последней строки. Когда программа останавливается, Python печатает traceback — сообщение с цепочкой мест, через которые выполнение дошло до ошибки. Начни с последней строки: там тип и пояснение. Над ней — строка вида File "main.py", line 2: она называет файл и номер строки, на которой выполнение остановилось. Открой эту строку своего файла и посмотри, какая её часть не может выполниться. Синтаксическая ошибка иногда указывает на строку ниже настоящей причины: если скобка не закрыта, Python замечает это только на следующей строке.

Вот полное сообщение для программы, которая делит стоимость на ноль:

print(3 * 40)print(120 / 0)
120 Traceback (most recent call last): File "main.py", line 2, in <module> print(120 / 0) ~~~~^~~ ZeroDivisionError: division by zero

Первая строка программы успела выполниться: 120 напечатано. Последняя строка сообщения называет тип ошибки ZeroDivisionError и пояснение «деление на ноль». Строка File "main.py", line 2 указывает место: вторая строка файла. Значки ~ и ^ в новых версиях Python подчёркивают виновную часть выражения.

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

В шапке этого блока кода справа есть кнопка «Запуск». Она выполняет программу по одной строке: подсвечивает строку, которая только что выполнилась, объясняет её, показывает переменные и всё, что уже выведено. Здесь на втором шаге видно, где программа остановилась и что первая строка успела напечатать. Такая кнопка есть у блоков кода курса, где важен порядок выполнения строк.

Тип ошибки подсказывает, где искать причину. SyntaxError и его родственник IndentationError (лишние пробелы в начале строки) появляются ещё при разборе записи: проверь скобки, кавычки и отступы. NameError и ZeroDivisionError появляются при выполнении: в первом случае имя написано с опечаткой или ещё не создано, во втором делитель оказался нулём. Другие типы ошибок появятся вместе с конструкциями, которые их вызывают: неподходящее значение при преобразовании текста в число, несуществующая позиция строки или ключ словаря, отсутствующий файл.

Итог

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

  • ПрограммаТочная запись алгоритма на языке программирования. Компьютер выполняет ровно написанное, а не задуманное.
  • Интерпретатор PythonПрограмма, которая читает исходный код и выполняет его строки сверху вниз.
  • Где писать и запускатьКод пишут в IDE или редакторе (PyCharm, IDLE, VS Code) и сохраняют в файл .py. Запускают кнопкой в IDE или командой python main.py в терминале. После >>> строки выполняются по одной.
  • Как работать с кодомЗапусти, сравни вывод с ожидаемым, измени одну деталь и запусти снова.
  • print(3 * 40)Выражение 3 * 40 вычисляет значение, но в файле его видно, только если передать его в print.
  • "3 * 40"Кавычки делают запись текстом: он печатается как есть.
  • Три вида ошибокСинтаксическую Python находит до запуска, исключение — на строке, где выполнение споткнулось. Логическую видно только при сверке ответа: о ней Python не сообщает.
  • TracebackЧитают снизу вверх: последняя строка — тип ошибки и пояснение, выше — файл и номер строки, ещё выше — сама строка кода.

Проверьте себя

Ответь сначала сам, потом открой ответ.

Вопрос 1

Напиши программу, выводящую своё имя, затем результат 12 + 8, затем текст 12 + 8. Объясни разницу двух последних строк.

ОтветСкрыть ответ
Ответ

Например, print("Анна"), print(12 + 8), print("12 + 8"); вывод: Анна, 20, 12 + 8. Без кавычек выражение вычисляется, в кавычках печатается как текст.

Вопрос 2

Программа print(5 * 23 остановилась с ошибкой. Какой у неё тип и как исправить запись?

ОтветСкрыть ответ
Ответ

SyntaxError: '(' was never closed — не закрыта скобка; верно print(5 * 23).

Вопрос 3

Какую ошибку выдаст Print(5 * 23) и почему, хотя print написан «почти правильно»?

ОтветСкрыть ответ
Ответ

NameError: имени Print нет, Python различает заглавные и строчные буквы.

Вопрос 4

Нужно напечатать стоимость трёх тетрадей по 40 рублей и двух ручек по 15 рублей. Программа print(3 * 40 + 2 + 15) работает без сообщений об ошибке. Что она выводит и к какому виду относится её ошибка?

ОтветСкрыть ответ
Ответ

Выводит 137 — это логическая ошибка: вместо 2 * 15 записано 2 + 15; верная стоимость 150.

Вопрос 5

Программа из двух строк print(4 * 25) и print(100 / 0) остановилась. Что успело напечататься и что будет в последней строке сообщения?

ОтветСкрыть ответ
Ответ

Успело напечататься 100; последняя строка — ZeroDivisionError: division by zero.

Практика

Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.

Что напечатает программа?

7 * 6print(7 * 6)print("7*6")

Запишите напечатанные строки через пробел в порядке вывода.

Пять ручек стоят по 23 рубля

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

Введите число.

Напиши программу, которая выводит три строки: стоимость трёх тетрадей по 40…

Напиши программу, которая выводит три строки: стоимость трёх тетрадей по 40 рублей, стоимость двух ручек по 15 рублей и общую стоимость покупки. Каждую стоимость вычисли выражением, а не готовым числом. Запусти программу и запиши, что она напечатала.

Запишите напечатанные числа через пробел в порядке вывода.