Частые ошибки при решении: сумма цифр числа
Каждая учебная задача таит пару-тройку грабель; вот они.
Задача
Найти сумму цифр натурального числа n, например для 1234 ответ 1 + 2 + 3 + 4 = 10.
Решение
def digit_sum(n: int) -> int:
total = 0
while n > 0:
total += n % 10 # берём последнюю цифру
n //= 10 # отбрасываем её
return total
print(digit_sum(1234))
Как это работает
Операция n % 10 выделяет последнюю цифру, а целочисленное деление n //= 10 убирает её. Цикл продолжается, пока число не станет нулём.
Пример работы
10
Сложность
O(log n) по времени — по числу цифр, O(1) по памяти.
Частые ошибки
1. Не обрабатывать крайние случаи. Пустой ввод, ноль, отрицательные числа — именно там решение чаще всего ломается. 2. Смешивать типы данных. Строки и числа ведут себя по-разному; неявное приведение типов — источник неочевидных багов. 3. Писать код без проверки на маленьких примерах. Прогоните решение вручную на 2-3 значениях, прежде чем считать задачу решённой.
Если решение заработало с первого раза — всё равно сверьтесь со списком ошибок: половина багов рождается при доработках.