Теория
Две операции отделяют последнюю цифру
Мы уже знаем смысл остатка и целого деления. Теперь соединим их. Остаток от деления на10 даёт последнюю цифру, а целое деление на 10удаляет её.
number = 538last_digit = number % 10remaining = number // 10print(last_digit)print(remaining)- 538 % 10 даёт 8.
- 538 // 10 даёт 53.
- Исходное число не меняется само: новое значение нужно присвоить переменной.
Повторяем шаг, пока цифры не закончатся
После каждого шага число становится короче. Это знакомый признак подходящегоwhile: состояние явно приближается к нулю.
number = 538total = 0 while number > 0: digit = number % 10 total += digit number //= 10 print(total)Цифры приходят справа налево: 8, затем 3, затем 5. Для суммы порядок не важен. Если порядок важен, это нужно учесть отдельно.
Ноль требует отдельного взгляда
Для положительного числа цикл выполняется хотя бы один раз. Для исходного нуля условиеnumber > 0 сразу ложно. Если задача спрашивает количество цифр, у числа 0 всё равно одна цифра — значит, этот случай нужно назвать явно.
Как построить алгоритм по цифрам
- Уточните вход. Работаем с положительными числами, нулём или всеми целыми?
- Выберите накопитель. Нужны сумма, количество, максимум или новая запись?
- Получите цифру. Используйте остаток от деления на 10.
- Обновите результат. Примените условие только там, где оно нужно.
- Укоротите число. Иначе while никогда не приблизится к остановке.
Практика
Отделите последнюю цифру
Последняя цифра числа 704 — 4, поэтому остаток равен 4.
Укоротите число
После удаления последней цифры 4 остаётся 70.
Проследите две итерации
После первого шага получается 70, после второго — 7.
Сложите цифры
Цикл получает 4, 0 и 7; сумма равна 11.
Посчитайте чётные цифры
Чётные цифры — 8, 4, 0 и 2, всего четыре.
Итог
Вы превратили знакомые %, //, условие и накопитель в полноценный алгоритм обработки целого числа.
Дальше тот же принцип «берём один элемент и обновляем состояние» перейдёт со цифр на строки и коллекции.
Прогресс
0 / 5Вы ещё не решали задания