ЯдроКодаподготовка к экзаменам
Учебная платформа

Загружаем материалы

Подготавливаем материалы и навигацию по разделу.

Цифры числа в Python: деление на 10 и остаток

Автор: · Обновлено

Последнюю цифру положительного целого числа даёт остаток от деления на 10, а операция // 10 удаляет эту цифру. Повторяя два действия, можно разобрать число справа налево без преобразования в строку.

Трассировка разрядов

number = 4072

while number > 0:
    digit = number % 10
    print(digit)
    number //= 10

Вывод будет обратным исходной записи:

2
7
0
4

После первой итерации number становится 407, затем 40, 4 и 0. Нулевая цифра внутри числа не теряется: при number = 40 остаток равен 0.

Особый случай самого нуля

Для исходного number = 0 условие while number > 0 сразу ложно, хотя запись числа содержит одну цифру. Этот случай нужно обработать отдельно, если задача считает количество цифр или выводит их. Отрицательные числа обычно переводят в положительные через abs, если знак не считается цифрой.

Типичная ошибка — использовать обычное деление /: после него появляется float, и цикл перестаёт работать с целыми разрядами. Другая ошибка — забыть менять number, получив бесконечный цикл. Если исходное значение понадобится позже, сохраните рабочую копию current = number.

Сумма цифр с проверкой

Прочитайте неотрицательное целое число и найдите сумму его цифр. Для 4072 ожидается 13, для 5 — 5, для 0 — 0. Сначала составьте таблицу current, digit, total для каждого шага. Затем добавьте подсчёт количества цифр и явно обработайте ноль. Сравните результат с вариантом через строку, но объясните, почему арифметический алгоритм не зависит от символов.

Исходное число и рабочая копия

Разберите число 12030, одновременно найдя сумму цифр, их количество и число нулей. Сохраните original, а деление выполняйте над current. После цикла выведите оба значения и убедитесь, что исходное не потеряно. Отдельно обработайте original == 0: количество цифр должно быть один, нулевых цифр — одна. Затем восстановите обратную запись из извлечённых цифр и объясните, почему порядок получился зеркальным. Упражнение связывает арифметические операции с управлением состоянием и заставляет явно определить поведение особого случая.

Практикум: цифры числа и потеря ведущих нулей

Для числа 50720 получите справа налево цифры через % 10 и // 10, считая их сумму и количество нулей. Заполните первые три итерации вручную. Отдельно обработайте число 0, потому что обычный цикл while number > 0 не выполнится ни разу. Затем прочитайте строку "007" и сравните задачу о записи с задачей о числовом значении: после int ведущие нули исчезнут. Выберите представление согласно условию, а отрицательный знак обработайте явно.

Контрольная точка

Почему алгоритм извлекает цифры в обратном порядке? Покажите частное и остаток на одном шаге и предложите способ восстановить исходный порядок, если он нужен для вывода.

Частые вопросы

Что лучше для цифр: число или строка?

Арифметический подход полезен для понимания разрядов и задач без ведущих нулей. Строка сохраняет точную запись и удобна для шаблонов. Ограничения задачи определяют модель, а не привычка автора.

Источники