Как найти сумму цифр числа в питоне

от admin

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

Сложить или перемножить цифры числа — задача, встречающаяся почти каждому программисту. Она позволяет не только проверить умение писать код и придумывать правильные алгоритмы, но и даёт возможность оценить синтаксис и функционал используемого языка.

Сумма цифр

Реализация программы на разных языках программирования мало чем отличается. Но из-за концепций и особенностей синтаксиса решение на языке Python получается более коротким и простым, чем, например, решение на C++.

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

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

Во второй строке объявляется переменная, в которую будет записываться сумма. Переменная обязательна должна быть равна нулю. Иначе полученная сумма будет отличаться от реальной (некоторые люди путают сложение и произведение чисел, поэтому пишут не ноль, а единицу).

В цикле while происходит суммирование цифр. В 4 строке программа получает младший разряд числа. Например, если число равно 125, программа получает 5. Полученный младший разряд прибавляется к переменной суммы.

Строка 5: использованный младший разряд отбрасывается (делится на 10), то есть если было 125, то станет 12. Обязательно необходимо использовать целочисленное деление, то есть деление без остатка, иначе цифра не отбросится, а уйдет в дробную часть результата.

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

В этом примере мы посчитали с помощью Python сумму цифр трёхзначного числа 555.

Произведение цифр

Программа на Python для вычисления произведения цифр числа имеет похожую структуру и принцип работы. Однако есть некоторые важные отличия:

Во-первых, переменная для хранения произведения равна единице, если присвоить ей ноль, то и само произведения будет всегда равно нулю. Во-вторых, теперь в цикле while очередная цифра не прибавляется к переменной, а является её множителем.

Важный момент, из-за того что оператор умножения имеет более высокий приоритет выполнения, чем оператор остатка от деления, выражение «num % 10» помещается в круглые скобки. Если не сделать этого, программа сначала будет умножать переменную mult на число и только потом брать от неё остаток.

Пример работы программы:

Частные случаи

Рассмотренные варианты программ являются самыми простыми. Однако существует ещё много частных случаев.

Число задано строкой

Когда программа получает ввод с помощью input, интерпретатор автоматически присваивает переменной строковый тип, если попытаться использовать эту переменную в вычислениях, возникнет ошибка.

В рассмотренных скриптах эта проблема была решена следующим образом:

Задано дробное

Если пользователь вводит дробное число, стандартная реализация перестаёт работать. Дробная часть не учитывается, т.к. в программе происходит деление на 10. Даже если преобразовывать введенное число к целому с помощью int , то будут отброшены все дробные цифры.

Рассмотрим программу для вычисления произведения цифр дробного числа (аналогично с суммой):

Пример выполнения программы:

Эта программа правильно вычисляет произведение цифр любого числа:

  • Целое.
  • Дробное > 1.
  • Дробное < 1.

Реализация программы специально была сделана через строки, с помощью функции split введённое число делится на дробную и целую части. Дробная часть обрабатывается также, как и целая.

При приведении к действительному

Подход, описанный выше выбран потому, что из-за неточного представления десятичных дробей в двоичном виде (в котором работает компьютер), реальное представление числа отличается от ожидаемого. В итоге, если пользователь вводит число 0.55, то если привести её к действительному числу с помощью float , в переменную записывается значение 0.54999…8. В итоге, результат получается неточным, если ограничить количество итераций цикла, либо цикл является бесконечным, пример:

Если бы в переменной реально было бы записано значение 5.55, то программа работала бы нормально. Однако в переменную b на самом деле помещается 0,54999… Это приводит к бесконечному выделению и отбрасыванию старшего разряда.

Вот пример вывода полученной программы:

Программа вывела переменную b , как 0.5499999999999998, после умножения на 10, её значение уже будет равно 5.499999999999998. Если вычесть из этого числа 5, то получим 0.4999999999999982. На конце добавилась цифра 2!

Таким образом прошло много итераций и в итоге b стало равно 0. В ходе перемножений среди цифр из которых состояло b были и нули. Поэтому результат равен 0.

Найти сумму цифр числа в Python

Для изу­че­ния ба­зо­вых кон­струк­ций язы­ка Python пре­по­да­ва­те­ли обыч­но все­гда пред­ла­га­ют про­стые и по­нят­ные за­да­чи школь­но­го уров­ня. Но, не смот­ря на это, та­кие за­да­чи по­лез­ны и учат не толь­ко язы­ку, но и уме­нию ре­а­ли­зо­вы­вать ал­го­рит­мы. Рас­смот­рим тут од­ну из та­ких за­дач.

Рас­смот­рим несколь­ко ва­ри­ан­тов ре­ше­ния этой за­да­чи. Про­стей­ший и самій оче­вид­ный спо­соб ре­ше­ния за­да­чи со­сто­ит в том, чтобы по­лу­чить каж­дую из цифр, со­став­ля­ю­щих дан­ное чис­ло. Для это­го по­сле­до­ва­тель­но бу­дем де­лить ис­ход­ное чис­ло n на 10 на­це­ло (на­хо­дит раз­ря­ды чис­ла). Де­ле­ние бу­дем вы­пол­нять в цик­ле, в ко­то­ром сра­зу же и бу­дем на­кап­ли­вать тре­бу­е­мую сум­му цифр — suma, а так­же за­по­ми­нать ре­зуль­тат де­ле­ния для но­вой ите­ра­ции цик­ла в ту же пе­ре­мен­ную n. Де­ле­ние (цикл) про­дол­жа­ет­ся по­ка чис­ло n не до­стигнет нуле­во­го зна­че­ния.

Но, мож­но обой­тись и без де­ле­ния. Для это­го за­дан­ное чис­ло n пре­об­ра­зу­ем в стро­ку s, а за­тем пе­ре­бе­рем в цик­ле по­сле­до­ва­тель­но все сим­во­лы (циф­ры) этой стро­ки. Но, чтобы их мож­но бы­ло сло­жить, они долж­ны быть пре­об­ра­зо­ва­ны в чис­ло­вые зна­че­ния — int(c). И даль­ше оста­ет­ся толь­ко вос­поль­зо­вать­ся функ­ци­ей sum(), чтобы сло­жить эти все циф­ры и по­лу­чить сум­му цифр чис­ла — suma.

Но, нам это­го ма­ло и мы идем даль­ше. А мож­но ли при ре­ше­нии этой за­да­чи из­ба­вить­ся от цик­ла. По­про­бу­ем. Ре­ше­ние бу­дет по­хо­же на преды­ду­щее, но цикл за­ме­ним встро­ен­ной функ­ци­ей map() при­ме­ня­е­мой к каж­до­му эле­мен­ту неко­то­ро­го объ­ек­та. В на­шем слу­чае это сим­во­лы стро­ки str(n), по­лу­чен­ной пре­об­ра­зо­ва­ни­ем ис­ход­но­го чис­ла в стро­ку и ее со­став­ля­ю­щих сим­во­лов в це­лые чис­ла.

Читать:
Что такое символы редактора для отладки ue4

Ес­ли код это­го при­ме­ра не со­всем по­ня­тен, то про­ще бу­дет по­нять сле­ду­ю­щий код — там ис­поль­зу­ем пре­об­ра­зо­ва­ние чис­ла в спи­сок из цифр и даль­ше про­хо­дим­ся по нему функ­ци­ей map()

Python. Решение задач на обработку целых чисел

В данной теме приведены примеры решения наиболее распространенных задач, связанных с обработкой чисел. Изучение темы предполагает базовые знания по основам языка Python, а именно, использование средств ввода/вывода, циклов, списков, функций и тому подобное.

Содержание

  • 1. Выделить все цифры целого числа и представить их в виде списка
  • 2. Определить указанную цифру в целом числе
    • 2.1. Позиция указывается слева
    • 2.2. Позиция задается справа

    Поиск на других ресурсах:

    1. Выделить все цифры целого числа и представить их в виде списка

    нужно заменить на строку

    3. Вычислить сумму цифр целого числа

    # Задача. Вычислить сумму цифр числа # 1. Ввод числа n = input ( «n color: #ff0000;»># 2. Вычислить сумму summ = 0 # Вычисляемая сумма # Цикл выделения цифр из числа и вычисление суммы while n>0: summ = summ + n%10 # взять последнюю цифру и прибавить цифру к сумме n = n/10 # убрать последнюю цифру из числа # 3. Вывести сумму print ( «sum color: #333300;»>⇑

    4. Инвертировать целое число (1234 => 4321)

    Инвертировать число означает, что нужно получить новое число, которое читается как исходное число от конца до начала.

    # Задача. Ивертировать число import math # 1. Ввод числа n = input ( «n color: #ff0000;»># 2. Создание нового инвертированного числа # 2.1. Сначала нужно вычислить количество цифр (порядок) в числе k = 0 n2 = n while n2>0: k = k+1 # увеличить счетчик количества цифр на 1 n2 = n2/10 # Убрать цифру # 2.2. Цикл выделения цифр из числа n и создание инвертированного числа while n>0: # взять последнюю цифру last = n%10 # уменьшить порядок числа k = k-1 # умножить полученную цифру на 10^k # и прибавить ее к новому числу n2 = n2 + int (last*math.pow(10, k)) # n2 — новое число # убрать последнюю цифру из числа n = n/10 # 3. Вывести новое число print ( «n2 color: #333300;»>⇑

    5. Функция GetNumCount() . Определить количество цифр в числе

    Реализовать функцию GetNumCount() , которая определяет количество цифр в целом числе. Функция получает параметром исходное число.

    # Задача. Определить количество цифр в числе import math # Функция GetNumCount() — определить количество цифр в числе def GetNumCount (n): k = 0 # k — результат while n>0: k = k+1 n = n/10 return k # Демонстрация работы функции # Ввод числа n = input ( «n color: #ff0000;»># Вызов функции k = GetNumCount(n) print ( «k color: #333300;»>⇑

    6. Функция GetMaxNum() . Определить максимальную цифру в числе

    В заданном целом числе n (n>0) нужно определить максимальную цифру. Например, если есть число 2883345, то максимальная цифра будет 8.

    # Задача. Определить максимальную цифру в числе import math # Функция GetMaxNum() — определить максимальную цифру в числе def GetMaxNum (n): # получить последнюю цифру числа Max = n%10 while n>0: n = n/10 # уменьшить число if Max < n%10: # сравнить последнюю цифру с максимумом Max = n%10 return Max # Демонстрация работы функции # Ввод числа n = input ( «n color: #ff0000;»># Вызов функции num = GetMaxNum(n) print ( «num color: #333300;»>⇑

    7. Функция GetMinNum() . Определить минимальную цифру в числе

    Задача решается так же как и в предыдущем примере.

    # Задача. Определить минимальную цифру в числе import math # Функция GetMinNum() — определить минимальную цифру в числе def GetMinNum (n): # получить последнюю цифру числа Min = n%10 while n>0: n = n/10 # уменьшить число if Min > n%10: # сравнить последнюю цифру с минимумом Min = n%10 return Min # Демонстрация работы функции # Ввод числа n = input ( «n color: #ff0000;»># Вызов функции num = GetMinNum(n) print ( «num color: #333300;»>⇑

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

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

    Первый заключается в том, чтобы преобразовать число в строку и обращаться к каждому элементу по индексу с помощью цикла for.

    result = input()
    suma = 0
    mult = 1
    for num in result :
    suma += int(num)
    mult *= int(num)

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

    Отсюда получаем алгоритм:

    number = int(input())
    plus = 0
    while n > 0:
    temp = number % 10
    plus = plus + temp
    number = number // 10

    На 5 строчке кода, мы получаем последнюю цифру числа, далее проводим с ней разные манипуляции. А на 8 строчке, мы удаляем из числа эту самую последнюю цифру.

    Функция sum () в python

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

    def sum(list):
    result = 0
    for item in list:
    result = result + item
    return result
    print(list([1,3,5,7,9]))

    Понятное дело, что сумму тут можно заменить чем угодно.

    Уже не раз говорилось, что пайтон любит своих пользователей и поэтому уже есть встроенная функция, которая называется Sum(). Она нужна, чтобы сложить все элементы последовательности.

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

    Напоследок хочется напомнить, что самая важная часть в программирование — практика. Поэтому попробуйте написать алгоритмы, написанные выше, сами и это принесет большую пользу. Успехов!

Похожие статьи