Python Glossary English

все Python 3Циклыконструкция

Обработка цифр числа

практика

Паттерн перебора цифр числа через строковое преобразование или деление на 10. Используется для задач: сумма цифр, произведение, подсчёт, максимальная цифра.

Синтаксис

for d in str(abs(n)): | while n > 0: d = n % 10; n //= 10

Вариант while n > 0 вообще не заходит в тело при n = 0 и даёт пустой результат — ноль приходится обрабатывать отдельно. Для отрицательных чисел нужен abs(): в str(n) минус станет символом '-', на котором int(d) упадёт, а % и // с отрицательными работают не так, как обычно ждут.

Примеры

n = 12345
print(sum(int(d) for d in str(n)))  # → 15 — сумма цифр
print(len(str(abs(n))))  # → 5 — количество цифр
print(max(int(d) for d in str(n)))  # → 5 — наибольшая цифра
n = 12345
product = 1
for d in str(n):
    product *= int(d)
print(product)  # → 120 — произведение цифр
# Без перевода в строку: divmod
n, total = 12345, 0
while n:
    n, d = divmod(n, 10)
    total += d
print(total)  # → 15
print(int(str(4321)[::-1]))  # → 1234 — перевёрнутое число

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности