Разбор задачи: Добавление цифр

Предложенный нами код решения:

def add_digits(num):
    """
    Многократно добавляет все цифры числа до тех пор, пока результат не станет однозначным.
    
    :param num: целое число
    :return: однозначное число
    """
    while num >= 10:
        num = sum(int(digit) for digit in str(num))
    return num

1. Проверка входных данных

Функция принимает одно целое число num.

  • Если число уже является однозначным (т.е. меньше 10), оно будет возвращено сразу без изменений.

2. Основная логика

Цикл while num >= 10:

  • Цикл продолжается до тех пор, пока число состоит из более чем одной цифры (т.е. num >= 10).
  • В каждом шаге цикла мы складываем все цифры числа.

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

Внутри цикла происходит следующее:

  • str(num) превращает число в строку, чтобы можно было пройтись по его цифрам.
  • int(digit) for digit in str(num) — это генератор, который поочередно извлекает каждую цифру строки и преобразует её обратно в целое число.
  • sum(...) — функция, которая суммирует все эти числа.

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

Завершение цикла:

Цикл завершается, когда результат сложения цифр становится однозначным (т.е. когда num < 10).

3. Возвращаемое значение:

Когда цикл завершён, функция возвращает конечное значение num, которое является однозначным числом.

Пример:

Пример 1:

num = 38
  • Изначально число: 38
  • 38 → 3 + 8 = 11
  • 11 → 1 + 1 = 2
  • 2 — однозначное число, возвращаем его.

Пример 2:

num = 0
  • Изначально число: 0
  • 0 — уже однозначное, возвращаем его.

 



Вы должны Войти или Зарегистрироваться чтобы оставлять комментарии