Числа и арифметика
В Python 3 выражение 7 / 2 даёт 3.5, 7 // 2 даёт 3, а 7 % 2 возвращает остаток 1.
Предскажи результаты четырёх делений, прежде чем читать дальше
Закрой вывод ниже и запиши, что, по-твоему, выведет каждая строка. Большинство верно угадывает первую и ошибается хотя бы в одной из остальных. С этой ошибки и начнётся урок.
print(7 / 2)
print(8 / 2)
print(7 // 2)
print(7 % 2)3.5
4.0
3
1Вторая строка часто удивляет. 8 / 2 равно ровно 4, но Python выводит 4.0. Причина в том, что / всегда возвращает float, число с десятичной точкой, даже при делении нацело. Для целочисленного деления есть отдельный оператор //: он делит и округляет результат вниз до целого. Парный ему оператор % возвращает остаток. Вместе они отвечают на знакомый по начальной школе вопрос: «7 разделить на 2 будет 3 и 1 в остатке».
% полезен чаще, чем кажется. Число чётное, если n % 2 равно 0. Последнюю цифру числа даёт n % 10. Чтобы перевести 135 минут в часы и минуты, вычисли 135 // 60 часов и 135 % 60 минут.
minutes = 135
print(minutes // 60, "h", minutes % 60, "min")
print(2026 % 2, 2027 % 2)
print(4589 % 10)2 h 15 min
0 1
9Остальные операторы и порядок действий в Python
| Оператор | Значение | Пример | Результат |
|---|---|---|---|
| + | сложение | 7 + 2 | 9 |
| - | вычитание | 7 - 2 | 5 |
| * | умножение | 7 * 2 | 14 |
| / | деление (float) | 7 / 2 | 3.5 |
| // | целочисленное деление с округлением вниз | 7 // 2 | 3 |
| % | остаток | 7 % 2 | 1 |
| ** | возведение в степень | 7 ** 2 | 49 |
Python следует тому же порядку, что и на уроках математики: сначала **, затем *, /, // и %, затем + и -, слева направо внутри каждой группы. Скобки выполняются раньше всего, поэтому при сомнении добавь их. Это ничего не стоит, а следующему читателю будет понятнее твой замысел.
print(2 + 3 * 4)
print((2 + 3) * 4)
print(2 ** 10)
print(10_000 * 3)14
20
1024
30000В последней строке показано удобство записи: Python разрешает подчёркивания внутри длинных чисел, поэтому 10_000 читать проще, чем 10000. При вычислении они игнорируются и в выводе не появляются. Запятые так использовать нельзя: запятая уже означает переход к следующему значению.
Дробные числа хранятся в двоичной форме, поэтому иногда возникает крошечная погрешность
Попробуй 0.1 + 0.2. В учебнике Python целая глава объясняет, почему ответ равен 0.30000000000000004, а не 0.3. Числа float хранятся в двоичной форме, и 0.1 нельзя точно представить в ней, как 1/3 нельзя точно представить конечной десятичной дробью. Погрешность мала, и round() скрывает её при выводе. Учти, что round() округляет значение ровно посередине к чётному соседу: на странице встроенных функций round(0.5) даёт 0, а round(1.5) даёт 2. Для денег в целых вонах или центах храни суммы как int, и проблемы не будет совсем.
print(0.1 + 0.2)
print(round(0.1 + 0.2, 2))
print(round(0.5), round(1.5), round(2.5))
print(int(3.99), float(7))0.30000000000000004
0.3
0 2 2
3 7.0input() всегда возвращает строку
input() показывает приглашение, ждёт, пока пользователь введёт текст и нажмёт Enter, и возвращает введённое строкой. Даже при вводе 15 ты получишь "15", то есть текст. Для арифметики преобразуй его с помощью int() или float(). Применение int() к float отбрасывает дробную часть, а не округляет: int(3.99) даёт 3.
age = input("How old are you? ")
next_year = int(age) + 1
print("Next year you will be", next_year)How old are you? 14
Next year you will be 15| / | Деление, всегда возвращающее float: 8 / 2 даёт 4.0 |
| // | Деление с округлением вниз: 7 // 2 даёт 3 |
| % | Остаток: 7 % 2 даёт 1 |
| ** | Степень: 2 ** 3 даёт 8 |
| int() | Преобразует "15" или 3.9 в целое число (15, 3) |
| input() | Считывает введённую пользователем строку текста |
| round(x, n) | Округляет до n знаков после точки; значения ровно посередине округляются к чётному соседу |
- Что выведет этот код?
print(9 / 3) - Что выведет этот код?
print(17 // 5, 17 % 5) - Что выведет этот код?
print(2 + 3 * 4 ** 2) - Что выведет этот код?
print(2 ** 3) - Что выведет этот код?
print(2 ^ 3)861An error
- Что выведет этот код?
print(int("20") + 5) - Что выведет этот код?
print("20" + "5") - Что выведет этот код?
print(int(7.9)) - Что выведет этот код?
print(round(2.5)) - Булочка стоит 3500 вон, у тебя 10 000 вон. Что выведет этот код?
won = 10000 price = 3500 print(won // price, won % price) - Какое выражение проверяет, чётно ли n?
- n / 2 == 0
- n // 2 == 0
- n % 2 == 0
- n ** 2 == 0
- «2 ^ 3 равно 8». В Python ^ является побитовым оператором, и 2 ^ 3 равно 1. Для степени нужен **, поэтому 2 ** 3 равно 8. Программа выполняется без ошибки, из-за чего такую оплошность трудно заметить.
- «Если я введу число, input() вернёт число». Функция всегда возвращает строку. Выражение "14" + 1 вызывает TypeError: can only concatenate str (not "int") to str. Сначала преобразуй ввод: int(input(...)).
- «0.1 + 0.2 == 0.3 даёт True». Получится False, потому что 0.1 + 0.2 равно 0.30000000000000004. Сравнивай округлённые значения, например round(0.1 + 0.2, 2) == 0.3, или считай целые единицы (воны, центы) с типом int.
- / всегда возвращает float; // даёт целочисленное частное; % даёт остаток.
- ** обозначает степень, а ^ нет.
- Порядок: скобки, **, затем * / // %, затем + -.
- 0.1 + 0.2 равно 0.30000000000000004; храни деньги как int.
- input() возвращает строку; преобразуй её с помощью int() или float().
Источники курса (6)
- Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
- Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
- Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
- General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
- Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
- Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)
Проверено: 2026-10-19