Як розбити число на цифри Python: прості способи

Як розбити число на цифри Python: прості способи

Як розбити число на цифри Python — це типове завдання, коли потрібно отримати окремі розряди для перевірки, підрахунку, форматування або подальших обчислень. Найчастіше для цього використовують перетворення числа на рядок, але є й арифметичний спосіб без рядків.

Найпростіший спосіб: перетворити число на рядок

Перетворення числа на рядок у Python дає найкоротший і найчитабельніший спосіб отримати цифри окремо. Кожен символ рядка можна пройти циклом і перетворити назад у ціле число.

Приклад:

number = 48291
digits = [int(d) for d in str(number)]

У результаті ви отримаєте список [4, 8, 2, 9, 1]. Такий підхід добре працює для додатних цілих чисел і зручний майже в усіх прикладних сценаріях.

Перевірка проста: якщо вивести digits, кожна цифра має бути окремим елементом списку. Якщо замість чисел ви бачите символи, значить не вистачило перетворення через int().

Як розбити число на цифри без рядка

Розбити число на цифри без рядка можна через ділення на 10 і остачу від ділення. Цей варіант корисний, коли потрібно працювати саме з арифметикою або уникати проміжного рядкового представлення.

Приклад:

number = 48291
digits = []
while number > 0:
    digits.append(number % 10)
    number //= 10
digits.reverse()

Після виконання digits також міститиме [4, 8, 2, 9, 1]. Спершу цифри збираються у зворотному порядку, тому в кінці потрібен reverse().

Перевірка результату тут теж проста: якщо список вийшов перевернутим, значить пропущено фінальне перевертання. Якщо список порожній, варто перевірити, чи число не дорівнює нулю.

Що робити з нулем і від’ємними числами

Обробка нуля і від’ємних чисел у Python потребує окремої уваги, бо стандартні приклади для додатних значень не покривають усі випадки.

Нуль

Нуль потрібно обробляти окремо, якщо використовується арифметичний цикл. Для 0 список цифр не сформується звичайним while number > 0, тому краще додати окрему умову.

Приклад:

if number == 0:
    digits = [0]

Від’ємні числа

Від’ємні числа краще спочатку перетворити на модуль, а знак зберегти окремо, якщо він має значення для задачі. Інакше в рядковому способі символ завадить перетворенню через int().

Безпечний підхід: спочатку взяти abs(number), а потім уже розбити число на цифри Python звичним способом.

Перевірка коректності тут очевидна: цифри мають бути без мінуса, а знак — оброблений окремо. Якщо вивід падає з помилкою перетворення, значить у рядок потрапив символ .

Який спосіб вибрати в реальному коді

Вибір способу розбиття числа на цифри залежить від задачі, а не від “правильності” одного універсального варіанта. Для більшості побутових сценаріїв найкраще підходить рядковий спосіб, бо він короткий і добре читається.

  • Через рядок — коли потрібен простий і зрозумілий код.
  • Через арифметику — коли важливо працювати без перетворення типів.
  • З окремою обробкою знака — коли можливі від’ємні числа.

Якщо код має працювати з дуже великими числами або в алгоритмічній задачі, арифметичний варіант часто виглядає доречніше. Якщо потрібна швидка утиліта для скрипта, рядковий варіант зазвичай виграє за простотою.

Остаточна перевірка однакова для обох підходів: виведіть список цифр і переконайтеся, що порядок правильний, а значення відповідають початковому числу.