Найти тему
МОЙ РЕПЕТИТОР

Как найти сумму цифр числа в Python?

Оглавление
Содержание статьи.
Содержание статьи.
Суммирование числовых значений – распространенная задача в программировании.


Дано число, например 345
Нужно найти сумму цифр числа в Python, то есть: 3 + 4 + 5 = 12

ИСПОЛЬЗОВАНИЕ ЦИКЛА While

-2

❗Важно: алгоритм работает с числами, а не со строками или другими типами переменных. То есть на вход алгоритма должно поступать целое число (int). Для корректного отображения ответа лучше использовать именно целый тип чисел (int), без запятых.

Цикл while - используется для многократного выполнения блока кода, пока заданное условие остаётся истинным

⇨ 1. ДАНО ИСХОДНОЕ ЧИСЛО, СУММУ ЦИФР КОТОРОГО НЕОБХОДИМО НАЙТИ

digit = 12345

⇨ 2. ВВОДИМ ПЕРЕМЕННУЮ ДЛЯ СУММЫ (S) И ОБНУЛЯЕМ ЕЁ

sum1 = 0

⇨ 3. ЗАПУСКАЕМ ЦИКЛ WHILE

while digit > 0:

Данный цикл работает до тех пор, пока выполняется условие (digit > 0). Если переменная (digit) становится меньше или равна 0, то цикл while перестаёт работать, то есть выполнять алгоритм внутри него.

⇨ 4. ОТДЕЛЯЕМ ПОСЛЕДНЮЮ НА ДАННЫЙ МОМЕНТ ЦИФРУ ЧИСЛА И ПРИБАВЛЯЕМ ЕЁ К ПЕРЕМЕННОЙ СУММЫ

Для этого используем операцию остаток от деления (mod) в Python - (%)

sum1 = sum1 + (digit % 10)

[более короткая запись] sum1 += digit % 10

оператор % – остаток от деления в Python
Пример работы оператора % (остаток от деления) в Python.
Пример работы оператора % (остаток от деления) в Python.

⇨ 5. УМЕНЬШАЕМ ИСХОДНОЕ ЧИСЛО НА ОДИН РАЗРЯД

Для этого используем операцию целочисленного деления в Python - (//)

digit = digit // 10 (digit //= 10)

Для чего нужен данный шаг? ⇨ Чтобы перейти к следующей цифре числа

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

оператор // – целочисленное деление в Python
Пример работы оператора % (целочисленное деление) в Python.
Пример работы оператора % (целочисленное деление) в Python.

Операция схожа с обыкновенным делением. Необходимо взять целое число и остаток отбросить.

❗ВАЖНО

Шаги 4 и 5 выполняем внутри цикла while. Чтобы каждый шаг выполнялся в автоматическом режиме и для всего числа, а не только для первой цифры. Также, алгоритм получится универсальным и сможет работать для любых чисел: двухзначных, трёхзначных и так далее.

⇨ 6. ВЫВОДИМ РЕЗУЛЬТАТ НА ЭКРАН

print("Сумма цифр числа:", sum1)

Полный алгоритм для вычисления суммы цифр числа через цикл while:

Алгоритм нахождения суммы цифр числа через цикл while в Python (IDLE)
Алгоритм нахождения суммы цифр числа через цикл while в Python (IDLE)

Текст программы:

digit = 12345
sum1 = 0
while digit > 0:
sum1 = sum1 + (digit % 10)
digit = digit // 10
print("Сумма цифр числа:", sum1)

👇В конце статьи подробное описание работы алгоритма

☒ ИСПОЛЬЗОВАНИЕ РЕКУРСИИ

-6

Рекурсивная функция — это функция, которая вызывает саму себя. Рекурсивная функция будет находить сумму цифр числа, путем разделения числа на цифры и вызова функции для каждой цифры. На каждом уровне рекурсии будет добавляться текущая цифра к сумме, а затем вызывать функцию с оставшейся частью числа.

Алгоритм нахождения суммы цифр числа через рекурсивную функцию в Python (IDLE)
Алгоритм нахождения суммы цифр числа через рекурсивную функцию в Python (IDLE)
Рекурсивная функция — это функция, которая вызывает саму себя

Текст программы:

def f(n):
if n < 10:
return n
else:
return n % 10 + f(n // 10)
print(f(123))

☒ ЕСЛИ ЧИСЛО В ВИДЕ СТРОКИ (Str)

-8

Подходит для случаев, когда исходная строка состоит только из символов чисел ('123', '53', '8901'). Если в строке есть недопустимые символы ('1a23', 'h<2!3'), то данный метод не сработает.

На вход программы поступает строка типа (str), а не число (int)

s = '123' (s – str)

🆘Как найти сумму цифр числа, если число дано в виде строки?

В языке Python строки — это тип данных, который используется для
представления текста. В Python вы можете создать строку, используя двойные или одинарные кавычки.

  1. Перевести строку в число: str int (строка число)
  2. Воспользоваться предыдущим алгоритмом: "Нахождение суммы цифр целого числа"
Как преобразовать строку в число?

С помощью команды int(), где в скобках указывается строка, которую нужно перевести.

Когда в строке только символы чисел ('0123456789') :

Код программы, которая переводит строку в число и выводит на экран.
Код программы, которая переводит строку в число и выводит на экран.

Когда строка содержит недопустимые символы:

Программа выдаёт ошибку, если строка содержит недопустимые символы.
Программа выдаёт ошибку, если строка содержит недопустимые символы.

Функция int() пытается преобразовать переданную ей строку в десятичное целое число, но строка содержит недопустимые символы (в данном случае это «а» и «!»), которые не могут быть частью числа в системе счисления с основанием 10.

type — это атрибут в Python, который используется для определения типа переменной или объекта.

В Python в переменную типа int может быть записано число неограниченной длины. Единственное ограничение длины — это размер оперативной памяти.

Например, возможно даже такое число в Python:

с = 123453485632952439856234875624378546235

Полный алгоритм для вычисления суммы цифр числа, если число в виде строки:

Алгоритм нахождение суммы цифр целого числа, если число представлено строкой.
Алгоритм нахождение суммы цифр целого числа, если число представлено строкой.

Текст программы:

digit_str = '12345'
digit = int(digit_str)
sum1 = 0
while digit > 0:
sum1 = sum1 + (digit % 10)
digit = digit // 10
print("Сумма цифр числа:", sum1)

МЕТОД Count()

-12

С помощью данного метода можно вычислить сумму цифр в строке (str). То есть если дана строка, содержащая в себе символы чисел. Для целых чисел данный метод не подходит (int).

Метод count() в Python используется для подсчёта количества вхождений подстроки (или символа) в строку.

Пример работы метода count() для строки (s).
Пример работы метода count() для строки (s).
Метод count в Python помогает узнать, сколько раз встречается какой-либо символ внутри строки или другого набора данных.

❗Для целых чисел метод count() не применим.

Программа выдаёт ошибку, если использовать метод count() с числами.
Программа выдаёт ошибку, если использовать метод count() с числами.

Чтобы понять как использовать count() для подсчёта суммы цифр в строке, рассмотрим следующий пример:

Пример для понимания работы метода count().
Пример для понимания работы метода count().

В строке находятся только символы 2, других символов нет. Подсчитаем сумму цифр строки вручную: 2 + 2 + 2 = 6.

Подсчитаем сумму с помощью count() : s.count('2') * 2 = 6

❗ПРАВИЛО:

Чтобы подсчитать сумму цифр строки с помощью метода count(), нужно количество символов умножить на сам символ.

Ещё один пример для понимания работы метода count():

Пример для понимания работы метода count().
Пример для понимания работы метода count().

В строке находятся только символы цифр 3 и 8, других символов нет. Подсчитаем сумму цифр строки вручную: 3 + 3 + 3 = 9 и 8 + 8 = 16

Общая сумма: 9 + 16 = 25

Подсчитаем сумму с помощью count() : s.count('3') * 3 + s.count('8') * 8 = 25

Если умножить количество цифр в строке на саму цифру, то получится сумма цифр строки

Примеры:

Пример вычисления суммы цифр строки (a = '3443') через метод count().
Пример вычисления суммы цифр строки (a = '3443') через метод count().
Пример вычисления суммы цифр строки через метод count().
Пример вычисления суммы цифр строки через метод count().

Метод count() применим к следующим типам последовательностей в Python:

  1. Строки (str) — возвращает количество вхождений подстроки в строку
  2. Списки (list) — возвращает количество элементов с заданным значением
  3. Кортежи (tuple) — работает аналогично спискам
  4. Байтовые объекты (bytes) — считает количество вхождений значения value, которое должно быть целым числом или объектом, который можно преобразовать в целое число
  5. Множества (set) — подсчитывает количество элементов в множестве.

☒ list + map + sum

-19

❗Для продвинутых программистов

Сумму цифр в строке можно найти с помощью встроенной функции (map), встроенной функции (sum) и с использованием списка (list)

Текст программы:

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

Подробный разбор алгоритма:

  1. На вход программе подаётся строка (str):
    с = '12345'
  2. Создаётся новый список (list), которому присваивается имя (my)
    my = list(map(int, c))
  3. Внутри списка выполняется функция (map).
    Данная функция применяется к каждому отдельному элементу строки (с).
    То есть (
    map) выполнится отдельно для первого элемента строки ('1'), для второго элемента строки ('2') и так далее.
Что делает функция (map)?

Она преобразует каждый элемент строки из строкового типа (str) в целый (int).

  • ('1') (str) => 1 (int)
  • ('2') (str) => 2 (int)
  • ('3') (str) => 3 (int)
  • ('4') (str) => 4 (int)
  • ('5') (str) => 5 (int)

Для чего нужен данный шаг? Чтобы применить функцию (sum) к списку (list)

Почему нельзя применить функцию (sum) к исходному списку?

Функция sum() в Python — это встроенная функция, которая возвращает сумму всех числовых элементов в итерируемом объекте (например, списке или кортеже).

❗ВАЖНО

(sum) работает только с целым типом данных. То есть в списке (list) должны быть элементы целого типа (int)

🚫Ниже приведён пример кода, когда список состоит из символов (str), а не чисел (int). IDLE выдаст ошибку, так как операция sum не может выполнить сложение строк.

-21

Объяснение метода (list + sum + map) в общих чертах:

функция (map) берёт каждый элемент строки (с) и преобразует его в число. После этого записывает данное число в список (my). На выходе получается новый список (my), состоящий из числовых элементов строки.
print(my) # >>> [1, 2, 3, 4, 5]

  • 4. Выводится результат на экран
    print(sum(my)) # >>> 15
-22
-23

Для удобства обозначим переменные следующим образом:

digit с = 12345
sum1
s = 0

  • 1 шаг. Условие цикла (while c > 0):
    c = 12345 (12345 > 0) – верно, значит переходим к следующему шагу в алгоритме
    s = s + (c % 10) | s = 0 + (12345 %10) | s = 0 + 5 | s = 5
    c = c // 10 | c = 12345 // 10 | c = 1234

Значения переменных после выполнения 1 шага: с = 1234 | s = 5

  • 2 шаг Условие цикла while: c = 1234 (1234 > 0) – ВЕРНО
    s = 5 + (1234 % 10) | s = s + 4 | s = 9
    c = 1234 // 10 | c = 123

Значения переменных после выполнения 2 шага: с = 123 | s = 9

  • 3 шаг Условие цикла while: c = 123 (123 > 0) – ВЕРНО
    s = 9 + (123 % 10) | s = 9 + 3 | s = 12
    c = 123 // 10 | c = 12

Значения переменных после выполнения 3 шага: с = 12 | s = 12

  • 4 шаг Условие цикла while: c = 12 (12 > 0) – ВЕРНО
    s = 12 + (12 % 10) | s = 12 + 2 | s = 14
    c = 12 // 10 | c = 1

Значения переменных после выполнения 4 шага: с = 1 | s = 14

  • 5 шаг Условие цикла while: c = 1 (1 > 0) – ВЕРНО
    s = 14 + (1 % 10) | s = 14 + 1 | s = 15
    c = 1 // 10 | c = 0

Значения переменных после выполнения 5 шага: с = 0 | s = 15

  • 6 шаг Условие цикла while: c = 0 (0 > 0) – НЕВЕРНО
    Цикл while завершит свою работу так как перестанет выполнятся условие.

❗ВАЖНО

ЦИКЛ WHILE РАБОТАЕТ ДО ТЕХ ПОР, ПОКА ВЫПОЛНЯЕТСЯ УСЛОВИЕ

Далее алгоритм перейдёт к следующей строке в программе:

print("Сумма цифр числа =", s)

После запуска программы появится надпись:

>>> Сумма цифр числа = 15

-24

Наука
7 млн интересуются