Арифметика и ввод данных

Осваиваем арифметические операции Python и учимся получать данные от пользователя.

Python — отличный калькулятор: он умеет не только складывать и умножать, но и находить остаток от деления и возводить в степень.

Python как калькулятор

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

ОперацияЗнакПримерРезультат
сложение+7 + 310
вычитание-7 - 34
умножение*7 * 321
деление/7 / 32.333...
целочисленное деление//7 // 32
остаток от деления%7 % 31
возведение в степень**7 ** 3343

Два особенных деления

Обычное деление / всегда даёт дробь (даже 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().
Проверьте себя
1. Чему равно 17 % 5 (остаток от деления)?
A3
B2
C3.4
D12
2. Какой тип данных возвращает функция input?
Aint
Bfloat
Cstr (строку)
Dbool
3. Как проверить, что число n чётное?
An / 2 == 0
Bn % 2 == 0
Cn // 2 == 0
Dn ** 2 == 0
4. Чему равно 7 // 2?
A3.5
B3
C4
D1

Закрепите практикой

Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.

Поддержать проект