- Различать программу, язык программирования, машинный язык, языки низкого и высокого уровня; сравнивать интерпретатор и компилятор.
- Создавать переменные, узнавать типы
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), который потом работает без транслятора | отдельного файла нет; интерпретатор нужен при каждом запуске |
| Скорость | готовая программа работает быстро | обычно работает медленнее |
| Ошибки | сообщаются по всему тексту до выполнения | останавливается на ошибочной команде; предыдущие уже выполнены |
| Примеры | C, C++, Pascal, Go | Python, 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.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' — строка. Поэтому в каждом задании спрашивай себя: что сейчас лежит в переменной — число или текст? Один и тот же знак + складывает числа, но склеивает строки.
Пусть a = 7, b = 3. Затем по порядку выполняются команды a = a + b, b = a - b, a = a - b. Что выведет print(a, b)?
Показать решениеСкрыть решение
a = a + b → a = 7 + 3 = 10, b = 3b = a - b → b = 10 − 3 = 7, a = 10a = 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().
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='_')| Ввод (клавиатура) | Вывод (экран) |
|---|---|
Leyla143 8 | Leyla 14 11Leyla_is_14 |
Внимательно читай условие: если числа вводятся каждое в отдельной строке, int(input()) повторяется нужное число раз (a = int(input()), b = int(input())); если они записаны в одной строке через пробел, используется input().split(). В письменных заданиях экзамена встречаются обе формы: например, элементы списка могут вводиться одной строкой через пробел, а их количество n — отдельной строкой.
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']. Измени значения и запусти снова.Во время выполнения программы в одной строке вводится 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 * 5 | 22, 12, 85 |
/ | деление; результат всегда float | 17 / 5, 8 / 2 | 3.4, 4.0 |
// | целочисленное деление — неполное частное | 17 // 5 | 3 |
% | остаток от деления | 17 % 5 | 2 |
** | возведение в степень | 2 ** 5 | 32 |
- aделимое (целое число)
- bделитель, b > 0
- a // bнеполное частное
- a % bостаток
Деление с остатком: // и % всегда работают в паре. Проверка: частное, умноженное на делитель, плюс остаток должно дать делимое.
Вычисли: 1) 47 // 6 и 47 % 6; 2) 5 // 8 и 5 % 8; 3) -17 // 5 и -17 % 5.
Показать решениеСкрыть решение
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 ** 2 = −4.
a = 7
b = 45
c = b // a % 4 * 3 + b % a ** 2
print(c)▸ Ожидаемый результат
51
a = int(input()), а с клавиатуры вводится 7.Определи результат программы выше, если с клавиатуры введено 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трёхзначное натуральное число
- aцифра сотен
- bцифра десятков
- cцифра единиц (последняя)
n % 10 всегда даёт последнюю цифру, а n // 10 — число без последней цифры. Цифры чисел любой длины с помощью циклов разбираются в уроке «Операции над числами: цифры, делители и простые числа».
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
n = int(input()).Что выведет программа выше, если с клавиатуры введено 739?
Показать решениеСкрыть решение
Первое значение: 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.
- 1.17 // 5 →
- 2.17 % 5 →
- 3.2 ** 3 ** 2 →
- 4.-7 // 2 →
- 5.int('12') + 3 →
- 6.len(str(40961)) →
Задания экзамена: что выведет программа?
На экзамене программа обычно занимает 5–15 строк, а вопрос один: «определите результат программы». В закрытом задании 5 вариантов ответа, в кодированном ответ пишешь сам. В обоих случаях выигрывает один и тот же способ — «выполнить» программу строка за строкой, как компьютер.
- 1Заведи таблицу переменных
Нарисуй столбец для каждой переменной и запиши начальные значения. Если есть
input(), запиши данный ввод с нужным типом:int(input())→ число,input()→ строка. - 2Иди строка за строкой
После каждого присваивания обновляй только столбец этой переменной и зачёркивай старое значение. Правая часть всегда считается по старым значениям.
- 3Соблюдай приоритет
В длинном выражении сначала
**, потом* / // %слева направо, затем+ -. Записывай промежуточные результаты. - 4Следи за типами
/всегда даётfloat(8 / 2→4.0); для строк+— склейка, а*— повторение. - 5Проверь формат вывода
print(a, b)разделяет значения одним пробелом, каждыйprintвыводит новую строку. Варианты ответа часто отличаются именно пробелами и строками.
Фильм длится t секунд. Выведи в одной строке через пробел, сколько это целых часов, минут и секунд. Проверь программу для t = 7384 (в экзаменационном варианте было бы t = int(input())).
t = 7384
# hours, minutes, seconds▸ Ожидаемый результат
2 3 4
В одной строке через пробел даны два натуральных числа: line = '38 7'. Раздели их через split(), преобразуй с помощью int() и выведи в одной строке неполное частное, остаток и проверочное значение (делитель · частное + остаток).
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.