Очень частый приём в задачах: пройти по цифрам числа — посчитать их сумму, найти максимальную, перевернуть число. Можно превратить число в строкуТекстовое значение в кавычках: "привет". Неизменяема. По-английски string (str)., но есть красивый чисто математический способ через уже знакомые операторы % 10 и // 10.
n % 10 — даёт последнюю цифру числа.
n // 10 — отрезает последнюю цифру (делит нацело на 10).
Повторяя эти два шага в циклеКонструкция, повторяющая блок кода: for перебирает элементы, while — пока условие истинно.while, мы «отщипываем» цифры одну за другой справа налево, пока число не превратится в 0.
▶ digits.py
Следите за n: 1234 → 123 → 12 → 1 → 0. На каждом шаге n % 10 выдаёт очередную правую цифру, а n // 10 сдвигает число вправо. Когда n становится 0, цикл останавливается.
💡Совет
Этот шаблон — «% 10 чтобы взять цифру, // 10 чтобы её убрать» — нужно запомнить наизусть. На нём строятся десятки задач: сумма цифр, количество цифр, переворот числа, проверка на палиндром.
Сумма цифр
Соберём классику — сумму цифр числа. Заводим накопитель total = 0 и в цикле прибавляем каждую отрезанную цифру.
▶ digit-sum.py
💡Совет
Предскажите вывод. Что окажется в rev после кода ниже для числа 123? Подсказка: на каждом шаге к rev приписывается цифра справа.
▶ predict-reverse.py
Получится 321 — число перевернулось. Трюк rev = rev * 10 + цифра сдвигает накопленное на разряд влево и дописывает новую цифру в конец. Это «сборка числа из цифр» — обратная операция к разбору.
⚠️ Частые ошибки новичков
Ошибка. Забыть строку n //= 10 — тогда n не меняется, n % 10 всегда даёт одну и ту же цифру, и получается бесконечный цикл. Запустите код (защита оборвёт его через 15 секунд) и почините: добавьте уменьшение n.
▶ broken-digits.py
Заданиерешение.py
Дано число n = 9081. Посчитайте сумму его цифр и сохраните в переменную s (для 9081 это 9+0+8+1 = 18).
Заданиерешение.py
Дано число n = 7... вернее, посчитайте количество цифр в числе n = 50000 и сохраните в count (должно получиться 5). Используйте деление на 10 в цикле.
❓Проверь себя
Что даёт выражение 4567 % 10?
Что делает 4567 // 10?
Почему цикл while n > 0 завершается при разборе числа на цифры?
ℹ️Важно
✅ Что вы узнали
n % 10 — последняя цифра, n // 10 — отрезать её.
Цикл «% 10 + // 10» перебирает цифры справа налево.
Сумма цифр — накопитель плюс цифра на каждом шаге.
Комментарии
Загрузка…
Загрузка комментариев…