Сложение цифр двузначных чисел: примеры на Python

Раздел: Основы Python -> Арифметические операции

При работе с числами в Python часто требуется найти сумму составляющих его цифр. Для двузначного числа (от 10 до 99) это особенно просто. В этой статье разберём несколько способов вычисления суммы цифр, от самого эффективного до альтернативных.

Основной способ: деление нацело и остаток

Наиболее эффективный метод использует целочисленное деление (//) и остаток от деления (%). Первое действие - отделить десятки от единиц. Для числа n десятки: n // 10, единицы: n % 10. Сумма: n // 10 + n % 10.

# Пример для числа 47
n = 47
sum_digits = n // 10 + n % 10
print(sum_digits)  # Вывод: 11

сумма трех чисел python (сумма трех чисел в python)

Пояснение:

  • n // 10 - целая часть от деления на 10, для 47 это 4.
  • n % 10 - остаток, для 47 это 7.
  • Сложение даёт 4+7=11.

Возможные проблемы и ошибки:

  • Использование обычного деления / вместо // - получится дробное число (4.7), что не подходит для сложения с целым.
  • Если число не двузначное (например, 5 или 100), метод всё равно сработает, но для однозначного числа десятки будут 0, для трёхзначного - сумма будет не просто десятки+единицы, а сотни+десятки+единицы. Для универсальности лучше использовать цикл.

Когда использовать:

Этот способ идеален, когда точно известно, что число двузначное. Он быстр и не требует преобразования типов.

Как использовать строковое представление числа?

Преобразуем число в строку, затем берём каждый символ и преобразуем обратно в целое число.

n = 73
s = str(n)
sum_digits = int(s[0]) + int(s[1])
print(sum_digits)  # 10

Python программы вычисления (программы для вычислений на python)

Проблемы:

  • Работает только для двузначных чисел. Если число может быть другой длины, нужно писать цикл по строке.
  • Избыточное преобразование типов, что может быть медленнее арифметического метода.

Когда использовать:

Этот метод полезен, когда требуется не только сумма, но и доступ к каждой цифре как к символу, или когда число изначально пришло как строка.

Как вычислить сумму цифр с помощью цикла while?

Универсальный способ для любого целого числа: извлекаем последнюю цифру (остаток от деления на 10) и добавляем к сумме, затем отбрасываем последнюю цифру (целочисленное деление на 10). Повторяем, пока число не станет 0.

n = 85
sum_digits = 0
while n > 0:
    sum_digits += n % 10
    n //= 10
print(sum_digits)  # 13

программа суммы на python (программа для вычисления суммы на python)

Проблемы:

  • Оригинальное значение n теряется. Если нужно сохранить число, копируйте его в другую переменную.
  • Для отрицательных чисел цикл не выполнится (n > 0 ложно). Нужно предусмотреть обработку абсолютного значения.

Когда использовать:

Когда число может быть любой длины (трёхзначное, четырёхзначное и т.д.) или точное количество цифр неизвестно.

Как использовать функции map и sum?

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

n = 92
sum_digits = sum(map(int, str(n)))
print(sum_digits)  # 11

Пояснение:

str(n) превращает число в строку '92', map(int, ...) применяет функцию int к каждому символу, возвращая последовательность чисел [9, 2], а sum() складывает их.

Проблемы:

  • Также работает для чисел любой длины, но требует преобразования в строку. Может быть медленнее арифметического цикла.
  • Необходимо помнить, что строка может содержать знак минуса; для отрицательных чисел int('-') вызовет ошибку. Лучше брать модуль числа.

Когда использовать:

Когда требуется лаконичный код и не критична производительность. Подходит для скриптов и прототипов.

- Python сумма двух чисел (сумма двух чисел в python)
- следующее число python (следующее число в python)
- Python разность чисел (разность чисел в python)

Расширенные примеры помогут закрепить понимание различных подходов и их применения в реальных задачах.

Пример 1. Функция суммы цифр для любого целого числа (включая отрицательные)

Пример
def digit_sum(n):
    n = abs(n)
    s = 0
    while n:
        s += n % 10
        n //= 10
    return s

print(digit_sum(123))   # 6
print(digit_sum(-504))  # 9 (считается 5+0+4)
print(digit_sum(0))     # 0
6
9
0

Пример 2. Вычисление суммы цифр для списка двузначных чисел

Пример
numbers = [34, 78, 21, 99]
for num in numbers:
    sum_d = num // 10 + num % 10
    print(f"{num}: {sum_d}")
34: 7
78: 15
21: 3
99: 18

Пример 3. Использование ввода пользователя с проверкой на двузначность

Пример
try:
    value = int(input("Введите двузначное число: "))
    if 10 <= value <= 99:
        s = value // 10 + value % 10
        print(f"Сумма цифр: {s}")
    else:
        print("Число не является двузначным")
except ValueError:
    print("Введено не число")
Введите двузначное число: 56
Сумма цифр: 11

Пример 4. Сравнение производительности методов (для 1 млн вызовов)

Пример
import time

n = 47
start = time.perf_counter()
for _ in range(1_000_000):
    s = n // 10 + n % 10
end = time.perf_counter()
print(f"Арифметический: {end - start:.4f} сек")

start = time.perf_counter()
for _ in range(1_000_000):
    s = int(str(n)[0]) + int(str(n)[1])
end = time.perf_counter()
print(f"Строковый: {end - start:.4f} сек")

start = time.perf_counter()
for _ in range(1_000_000):
    s = sum(map(int, str(n)))
end = time.perf_counter()
print(f"Map+sum: {end - start:.4f} сек")
Арифметический: 0.0891 сек
Строковый: 0.1523 сек
Map+sum: 0.2125 сек

Пример 5. Обработка отрицательных чисел с помощью модуля

Пример
def digit_sum_abs(n):
    total = 0
    n = abs(n)
    while n:
        total += n % 10
        n //= 10
    return total

print(digit_sum_abs(-89))  # 17
17

Пример 6. Использование рекурсии для образовательных целей

Пример
def recursive_sum(n):
    if n == 0:
        return 0
    return n % 10 + recursive_sum(n // 10)

print(recursive_sum(48))  # 12
12

Вычисление суммы цифр двузначного числа в Python - comments

En
сумма двузначного числа python (python)