Перейти к содержанию
Educora
Средний8 класс22 мин29 / 59

Языки программирования и Python: переменные, ввод и вывод

Что такое программа и язык программирования, как работают трансляторы (интерпретатор и компилятор); переменные Python, ввод через `int(input())`, вывод через `print()`, операции `//` и `%` — с экзаменационными задачами «что выведет программа?».

Проверь себя
В этом уроке ты узнаешь
  • Различать программу, язык программирования, машинный язык, языки низкого и высокого уровня; сравнивать интерпретатор и компилятор.
  • Создавать переменные, узнавать типы int, float, str, bool и вводить данные через input(), int(input()) и input().split().
  • Вычислять + - * / // % ** в правильном порядке и пользоваться abs(), int(), str().
  • Определять, что выведет короткая программа, прослеживая её шаг за шагом (закрытые и кодированные задания экзамена).

Компьютер понимает только команды из нулей и единиц, а ты пишешь print(7 * 6) — и он сразу отвечает 42. Кто переводит с одного языка на другой? В этом уроке ты узнаешь ответ и освоишь первые важные инструменты Python: переменные, ввод с клавиатуры, вывод на экран и арифметические операции. На вступительном экзамене в Азербайджане (ГЭЦ, I группа) 9 из 30 заданий по информатике — программы на Python, и все они собраны из «кирпичиков» этого урока.

Программа, языки программирования и трансляторы

Определение
Программа

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

Определение
Программирование и язык программирования

Программирование — процесс создания программы: постановка задачи, построение алгоритма, его запись на языке программирования и проверка. Язык программирования — формальный язык со строгими правилами (синтаксисом) для записи программ: Python, C++, Java, Pascal, BASIC.

Языки делятся на уровни по близости к машине. Машинный язык — единственный язык, который процессор выполняет напрямую: команды записываются двоичными кодами и зависят от типа процессора. Языки низкого уровня (например, ассемблер) записывают машинные команды короткими буквенными обозначениями вроде MOV и ADD; они тоже привязаны к конкретному процессору. Языки высокого уровня (Python, C++, Java, Pascal) близки к человеческому языку и математической записи, не зависят от процессора, а одна их команда превращается во множество машинных команд.

Определение
Транслятор

Программа, которая переводит текст программы на языке высокого уровня (исходный код) на машинный язык. Бывает двух видов: компилятор и интерпретатор.

КомпиляторИнтерпретаторТекст программыТекст программыпереводитвсю программузаранееисполняемыйфайл (.exe)по одной команде:перевёл →выполнил →следующаяРезультатРезультат
Компилятор переводит один раз и создаёт готовый файл; интерпретатор при каждом запуске переводит и выполняет команды по одной.
ПризнакКомпиляторИнтерпретатор
Как переводитвсю программу сразу, до выполненияпо одной команде: переводит и сразу выполняет
Результатисполняемый файл (например, .exe), который потом работает без транслятораотдельного файла нет; интерпретатор нужен при каждом запуске
Скоростьготовая программа работает быстрообычно работает медленнее
Ошибкисообщаются по всему тексту до выполненияостанавливается на ошибочной команде; предыдущие уже выполнены
ПримерыC, C++, Pascal, GoPython, JavaScript, PHP

Python — интерпретируемый язык. Если при выполнении ошибка возникнет на 5-й команде (например, деление на ноль), результат первых четырёх команд уже будет на экране. Строго говоря, Python сначала превращает весь текст в промежуточный байт-код — поэтому программа с синтаксической ошибкой вообще не запускается, — но в школьном курсе и на экзамене Python относят к интерпретируемым языкам.

Константы, переменные и присваивание

Определение
Постоянные и переменные величины

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

Оператор присваивания = работает так: сначала вычисляется выражение справа, затем результат записывается в переменную слева, а старое значение теряется. Поэтому x = x + 1 — не уравнение, а команда «увеличить x на 1». В официальных разборах экзамена это звучит как «переменной присваивается значение …». Python разрешает и несколько присваиваний в одной строке: a, b = 3, 8.

  • имя начинается с буквы или _, дальше могут идти буквы, цифры и _: a1, sum_2, _k — правильные имена, а 2a, my-sum, a b — нет;
  • большие и маленькие буквы различаются: a и A — две разные переменные;
  • служебные слова (if, else, for, while, and, or, not, True) не могут быть именами переменных.
ТипЧто хранитПримеры
intцелое число45, -7, 0
floatвещественное число (десятичная дробь)3.5, 2.0, -0.25
strстрока: текст в кавычках'Baku', "45", ''
boolлогическое значениеTrue, False
45 и '45' — разные вещи: первое — число, второе — текст. В вещественных числах Python всегда пишет точку: 3.5.
Python
a = 7
b = 2.5
s = '7'
t = a > 5
print(type(a), type(b), type(s), type(t))
print(a * 2, b * 2, s * 2, t)
▸ Ожидаемый результат
<class 'int'> <class 'float'> <class 'str'> <class 'bool'>
14 5.0 77 True
type() показывает тип значения. Обрати внимание: s * 2 повторяет строку (77), а b * 2 остаётся float (5.0).

В Python тип переменной определяется присвоенным ей значением и может меняться по ходу программы: после x = 5 в x целое число, а после x = 'five' — строка. Поэтому в каждом задании спрашивай себя: что сейчас лежит в переменной — число или текст? Один и тот же знак + складывает числа, но склеивает строки.

Пример 1. Прослеживаем присваивания

Пусть a = 7, b = 3. Затем по порядку выполняются команды a = a + b, b = a - b, a = a - b. Что выведет print(a, b)?

Показать решение
После каждой команды записываем обе переменные:
a = a + b → a = 7 + 3 = 10, b = 3
b = a - b → b = 10 − 3 = 7, a = 10
a = a - b → a = 10 − 7 = 3, b = 7
Вывод: 3 7. Переменные обменялись значениями без третьей переменной. В Python то же самое делается одной строкой: a, b = b, a.

Ввод и вывод: input() и print()

Функция print() выводит на экран значения из скобок. Несколько значений через запятую печатаются в одной строке через один пробел, а каждый новый print() начинает новую строку. Параметр sep меняет разделитель, а end — окончание строки: print(1, 2, 3, sep='-') → 1-2-3, а print('a', end='') оставляет следующий вывод в той же строке.

input() читает строку, которую пользователь набрал на клавиатуре, и **всегда возвращает её как строку (str)**: даже если ввести 5, получится '5'. Чтобы считать, строку нужно преобразовать: int(input()) для целого числа, float(input()) для вещественного. Именно так начинаются программы в экзаменационных заданиях: n = int(input()). Несколько значений, набранных в одной строке через пробел, читает input().split(): она разрезает строку по пробелам и возвращает список строк, а каждую часть мы переводим в число через int().

Python
name = input()
age = int(input())
a, b = input().split()
a = int(a)
b = int(b)
print(name, age, a + b)
print(name, 'is', age, sep='_')
Экзаменационный вариант: программа читает с клавиатуры три строки. Ввод и вывод показаны в таблице ниже.
Ввод (клавиатура)Вывод (экран)
Leyla
14
3 8
Leyla 14 11
Leyla_is_14
В письменных заданиях экзамена примеры даются именно такой таблицей «Ввод / Вывод».

Внимательно читай условие: если числа вводятся каждое в отдельной строке, int(input()) повторяется нужное число раз (a = int(input()), b = int(input())); если они записаны в одной строке через пробел, используется input().split(). В письменных заданиях экзамена встречаются обе формы: например, элементы списка могут вводиться одной строкой через пробел, а их количество n — отдельной строкой.

Python
name = 'Leyla'
age = int('14')
line = '3 8'
a, b = line.split()
a = int(a)
b = int(b)
print(name, age, a + b)
print(name, 'is', age, sep='_')
▸ Ожидаемый результат
Leyla 14 11
Leyla_is_14
Вариант для запуска в браузере: строки, которые пришли бы с клавиатуры, записаны прямо в переменные. line.split() делит строку на список ['3', '8']. Измени значения и запусти снова.
Пример 2. Два значения в одной строке

Во время выполнения программы в одной строке вводится 12 5:
a, b = input().split()
print(a + b, int(a) + int(b), a * 2)
Что будет выведено?

Показать решение
split() делит строку на список ['12', '5']: a = '12', b = '5' — обе переменные строки.
a + b склеивает строки: 125.
int(a) + int(b) = 12 + 5 = 17.
a * 2 повторяет строку дважды: 1212.
Ответ: 125 17 1212.

Арифметика: //, % и порядок действий

ОперацияСмыслПримерРезультат
+ - *сложение, вычитание, умножение17 + 5, 17 - 5, 17 * 522, 12, 85
/деление; результат всегда float17 / 5, 8 / 23.4, 4.0
//целочисленное деление — неполное частное17 // 53
%остаток от деления17 % 52
**возведение в степень2 ** 532
a = b · (a // b) + a % b, 0 ≤ a % b < b
где:
  • aделимое (целое число)
  • bделитель, b > 0
  • a // bнеполное частное
  • a % bостаток

Деление с остатком: // и % всегда работают в паре. Проверка: частное, умноженное на делитель, плюс остаток должно дать делимое.

Пример 3. Неполное частное и остаток

Вычисли: 1) 47 // 6 и 47 % 6; 2) 5 // 8 и 5 % 8; 3) -17 // 5 и -17 % 5.

Показать решение
1) 6 · 7 = 42 ≤ 47 < 48 = 6 · 8, значит, 47 // 6 = 7, 47 % 6 = 47 − 42 = 5. Проверка: 6 · 7 + 5 = 47.
2) Делимое меньше делителя: 5 // 8 = 0, 5 % 8 = 5 (в остатке само число).
3) В Python // всегда округляет вниз, в сторону меньшего числа: −17 : 5 = −3,4 → -17 // 5 = −4. Остаток: −17 − 5 · (−4) = 3, то есть снова 0 ≤ 3 < 5.
( ) → ** → * / // % → + −2 ** 3 ** 2 = 2 ** 9 = 512

Приоритет операций (убывает слева направо). Операции одного уровня * / // % выполняются слева направо, а ** — справа налево: 2 ** 3 ** 2 = 2 ** 9 = 512. ** сильнее унарного минуса: -2 ** 2 = −4.

Python
a = 7
b = 45
c = b // a % 4 * 3 + b % a ** 2
print(c)
▸ Ожидаемый результат
51
Программа примера 4. На экзамене первая строка — a = int(input()), а с клавиатуры вводится 7.
Пример 4. Закрытое задание в стиле экзамена

Определи результат программы выше, если с клавиатуры введено 7.
A) 15 B) 51 C) 45 D) 6 E) 57

Показать решение
Делим выражение на две части; + выполняется последним.
Левая часть слева направо: b // a = 45 // 7 = 6 → 6 % 4 = 2 → 2 * 3 = 6.
В правой части ** сильнее: a ** 2 = 49, затем 45 % 49 = 45 (45 < 49, остаётся само число).
c = 6 + 45 = 51, ответ B.
Ловушка: кто считает b % a ** 2 как (b % a)², получает 3² = 9 и ошибочно выбирает 15 (A).

Цифры числа и преобразование типов

n = 100·a + 10·b + c ⇒ a = n // 100, b = n // 10 % 10, c = n % 10
где:
  • nтрёхзначное натуральное число
  • aцифра сотен
  • bцифра десятков
  • cцифра единиц (последняя)

n % 10 всегда даёт последнюю цифру, а n // 10 — число без последней цифры. Цифры чисел любой длины с помощью циклов разбираются в уроке «Операции над числами: цифры, делители и простые числа».

Python
n = 739
a = n // 100
b = n // 10 % 10
c = n % 10
print(c * 100 + b * 10 + a, a + b + c, abs(a - c))
▸ Ожидаемый результат
937 19 2
Программа примера 5. В экзаменационном варианте первая строка — n = int(input()).
Пример 5. Работа с цифрами (кодированный ответ)

Что выведет программа выше, если с клавиатуры введено 739?

Показать решение
a = 739 // 100 = 7 (сотни), b = 739 // 10 % 10 = 73 % 10 = 3 (десятки), c = 739 % 10 = 9 (единицы).
Первое значение: 9 · 100 + 3 · 10 + 7 = 937 — число, записанное задом наперёд.
Второе: 7 + 3 + 9 = 19 — сумма цифр.
Третье: abs(7 - 9) = |−2| = 2.
print разделяет три значения пробелами: 937 19 2.

Преобразование типов. str() превращает число в строку, а int() — строку или вещественное число в целое: str(45) + '1' → 451, int('45') + 1 → 46, int(7.9) → 7 (дробная часть просто отбрасывается, а не округляется). len(str(n)) даёт количество цифр: len(str(2026)) → 4. abs(x) возвращает модуль числа: abs(-12) → 12.

Быстрый счёт: что вернёт Python?
  1. 1.17 // 5 →
  2. 2.17 % 5 →
  3. 3.2 ** 3 ** 2 →
  4. 4.-7 // 2 →
  5. 5.int('12') + 3 →
  6. 6.len(str(40961)) →

Задания экзамена: что выведет программа?

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

  1. 1
    Заведи таблицу переменных

    Нарисуй столбец для каждой переменной и запиши начальные значения. Если есть input(), запиши данный ввод с нужным типом: int(input()) → число, input() → строка.

  2. 2
    Иди строка за строкой

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

  3. 3
    Соблюдай приоритет

    В длинном выражении сначала **, потом * / // % слева направо, затем + -. Записывай промежуточные результаты.

  4. 4
    Следи за типами

    / всегда даёт float (8 / 2 → 4.0); для строк + — склейка, а * — повторение.

  5. 5
    Проверь формат вывода

    print(a, b) разделяет значения одним пробелом, каждый print выводит новую строку. Варианты ответа часто отличаются именно пробелами и строками.

Задание

Фильм длится t секунд. Выведи в одной строке через пробел, сколько это целых часов, минут и секунд. Проверь программу для t = 7384 (в экзаменационном варианте было бы t = int(input())).

Задание · Python
t = 7384
# hours, minutes, seconds
▸ Ожидаемый результат
2 3 4
Задание

В одной строке через пробел даны два натуральных числа: line = '38 7'. Раздели их через split(), преобразуй с помощью int() и выведи в одной строке неполное частное, остаток и проверочное значение (делитель · частное + остаток).

Задание · Python
line = '38 7'
# split, convert, print quotient, remainder, check
▸ Ожидаемый результат
5 3 38

Главное

  • Транслятор переводит программу с языка высокого уровня на машинный: компилятор переводит всю программу заранее в исполняемый файл, интерпретатор переводит и сразу выполняет команды по одной. Python — интерпретируемый язык.
  • = — присваивание: сначала вычисляется правая часть, затем результат записывается в переменную слева.
  • input() всегда возвращает строку: для числа — int(input()), для нескольких значений в строке — input().split().
  • // даёт неполное частное, % — остаток: a = b · (a // b) + a % b; n % 10 — последняя цифра, n // 10 — число без неё.
  • Приоритет: скобки → ** (справа налево) → * / // % (слева направо) → + -; / всегда даёт float.

Проверь себя

Вопросов: 12. Каждый правильный ответ приносит XP.

1 / 12
Как называется транслятор, который до выполнения переводит всю программу на машинный язык и создаёт исполняемый файл?