Арифметика и ввод данных
Осваиваем арифметические операции Python и учимся получать данные от пользователя.
Python — отличный калькулятор: он умеет не только складывать и умножать, но и находить остаток от деления и возводить в степень.
Python как калькулятор
Любая программа что-то вычисляет, поэтому арифметику нужно знать назубок. Большинство операций выглядят привычно, но есть пара новых и очень полезных. Вот полный набор:
| Операция | Знак | Пример | Результат |
| сложение | + | 7 + 3 | 10 |
| вычитание | - | 7 - 3 | 4 |
| умножение | * | 7 * 3 | 21 |
| деление | / | 7 / 3 | 2.333... |
| целочисленное деление | // | 7 // 3 | 2 |
| остаток от деления | % | 7 % 3 | 1 |
| возведение в степень | ** | 7 ** 3 | 343 |
Два особенных деления
Обычное деление / всегда даёт дробь (даже 6 / 2 = 3.0). А вот две новые операции очень пригодятся:
- Целочисленное деление
//делит и отбрасывает дробную часть.17 // 5= 3 (сколько целых пятёрок в семнадцати). - Остаток
%даёт то, что осталось после целого деления.17 % 5= 2 (после трёх пятёрок осталось 2).
Остаток — невероятно полезная штука. Например, число чётное тогда и только тогда, когда остаток от деления на 2 равен нулю: n % 2 == 0. Этим приёмом мы уже пользовались в разделе про алгоритмы.
Операция остатка
%помогает узнать делимость:n % k == 0значит, что n делится на k нацело.
Преобразование типов
Иногда одно и то же значение нужно представить в разном виде. Число 5 и строка "5" для Python — это разные вещи: с числом можно считать, а строку — склеивать. Чтобы превращать одно в другое, есть функции-преобразователи: int() делает целое число, float() — дробное, str() — строку. Это очень частая операция, особенно при вводе данных, который мы сейчас разберём.
vozrast_text = "14" # это строка, например, из ввода
vozrast = int(vozrast_text) # превратили в число
print("Через 5 лет будет:", vozrast + 5)
# Обратно: число в строку, чтобы склеить с текстом
ochki = 100
soobshchenie = "У тебя " + str(ochki) + " очков"
print(soobshchenie)
Вывод:
Через 5 лет будет: 19 У тебя 100 очков
Без int() мы не смогли бы прибавить 5 к строке, а без str() — склеить число с текстом знаком +. Эти преобразования — мостик между «текстовым» и «числовым» миром, и пользоваться ими придётся постоянно.
Порядок действий
Python соблюдает обычные математические правила: сначала степень, потом умножение и деление, потом сложение и вычитание. Скобки меняют порядок, как в математике. 2 + 3 * 4 = 14, а (2 + 3) * 4 = 20.
Ввод данных: input
До сих пор все числа мы писали прямо в коде. Но интересно, когда программа спрашивает данные у пользователя. За это отвечает функция input. Она показывает приглашение, ждёт, пока человек введёт что-то и нажмёт Enter, и возвращает введённое.
Важнейшая тонкость: input всегда возвращает строку, даже если ввели число. Чтобы считать с ним арифметику, строку надо превратить в число: int(...) — в целое, float(...) — в дробное.
vozrast = int(input("Сколько тебе лет? "))
print("Через год будет", vozrast + 1)
Этот код мы показываем для чтения (он ждёт ввода с клавиатуры). А чтобы пример точно отработал на странице, ниже мы заменим input на готовое значение — результат будет тот же.
Попробуй сам
Программа считает стоимость покупки и сдачу. Вместо input мы подставили готовые числа, чтобы пример сразу запустился, — но в реальной программе их вводил бы пользователь.
# В настоящей программе эти числа ввёл бы пользователь
cena = 75 # цена одной тетради
kolichestvo = 4 # сколько тетрадей
dali = 500 # сколько денег дали
stoimost = cena * kolichestvo
sdacha = dali - stoimost
print("Стоимость покупки:", stoimost, "руб.")
print("Сдача:", sdacha, "руб.")
# Бонус: сколько целых тетрадей можно купить на 500 руб.
print("На 500 руб. влезет тетрадей:", dali // cena)
print("И останется:", dali % cena, "руб.")
Вывод:
Стоимость покупки: 300 руб. Сдача: 200 руб. На 500 руб. влезет тетрадей: 6 И останется: 50 руб.
Поменяй цену и количество — программа всё пересчитает. Обрати особое внимание на две последние строки: // сказал, сколько целых тетрадей помещается в бюджет, а % — сколько денег останется. Эти две операции вместе решают кучу задач.
Задача: чётное или нечётное, и не только
Соберём арифметику и остаток в одной полезной программе. Она разбирает число «по косточкам»: чётное ли оно, делится ли на 3, какая у него последняя цифра. Последнюю цифру, кстати, тоже даёт остаток — от деления на 10.
chislo = 1234
print("Число:", chislo)
print("Последняя цифра:", chislo % 10)
print("Чётное?" , chislo % 2 == 0)
print("Делится на 3?", chislo % 3 == 0)
print("Делится на 5?", chislo % 5 == 0)
print("Сотен в числе:", chislo // 100)
Вывод:
Число: 1234 Последняя цифра: 4 Чётное? True Делится на 3? False Делится на 5? False Сотен в числе: 12
Обрати внимание, как пара операций % и // позволяет «вытащить» из числа что угодно: % 10 даёт последнюю цифру, // 100 — число сотен. Эти приёмы — рабочая лошадка множества задач: от проверки делимости до разбора чисел по разрядам. Поменяй chislo на свой год рождения или номер телефона и посмотри, что покажет программа. Так абстрактные % и // превращаются в реальный инструмент.
Частые ошибки
- Забыть превратить ввод в число.
inputдаёт строку; безint()илиfloat()арифметика не сработает. - Путать
/и//. Обычное деление даёт дробь, целочисленное — целую часть. - Делить на ноль.
5 / 0вызовет ошибку — на ноль делить нельзя, как и в математике.
Запомни
- Арифметика Python:
+ - * /, а также//(целая часть),%(остаток),**(степень). - Остаток
%проверяет делимость:n % 2 == 0— число чётное. inputполучает данные от пользователя и всегда возвращает строку.- Чтобы считать арифметику с вводом, превращай строку в число через
int()илиfloat().
Закрепите практикой
Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.