Найти сумму цифр числа в Python
Для изучения базовых конструкций языка Python преподаватели обычно всегда предлагают простые и понятные задачи школьного уровня. Но, не смотря на это, такие задачи полезны и учат не только языку, но и умению реализовывать алгоритмы. Рассмотрим тут одну из таких задач.
Рассмотрим несколько вариантов решения этой задачи. Простейший и самій очевидный способ решения задачи состоит в том, чтобы получить каждую из цифр, составляющих данное число. Для этого последовательно будем делить исходное число n на 10 нацело (находит разряды числа). Деление будем выполнять в цикле, в котором сразу же и будем накапливать требуемую сумму цифр — suma, а также запоминать результат деления для новой итерации цикла в ту же переменную n. Деление (цикл) продолжается пока число n не достигнет нулевого значения.
Но, можно обойтись и без деления. Для этого заданное число n преобразуем в строку s, а затем переберем в цикле последовательно все символы (цифры) этой строки. Но, чтобы их можно было сложить, они должны быть преобразованы в числовые значения — int(c). И дальше остается только воспользоваться функцией sum(), чтобы сложить эти все цифры и получить сумму цифр числа — suma.
Но, нам этого мало и мы идем дальше. А можно ли при решении этой задачи избавиться от цикла. Попробуем. Решение будет похоже на предыдущее, но цикл заменим встроенной функцией map() применяемой к каждому элементу некоторого объекта. В нашем случае это символы строки str(n), полученной преобразованием исходного числа в строку и ее составляющих символов в целые числа.
Если код этого примера не совсем понятен, то проще будет понять следующий код — там используем преобразование числа в список из цифр и дальше проходимся по нему функцией map()
Как получить сумму цифр из числа?
Дается функция:
function digitSum(n) <> где «n» любое целое число от 0 до бесконечности.
Только только обучаюсь JS. Дошел только до этого:
Но не могу понять, числа который возвращаются это строка или массив? Что делать потом? Использовать reduce?
Дайте истинный путь, пожалуйста. Или может быть последовательность рассуждений. Или я, впринципе, в корне неправильно действую? Ответ не надо 🙂 Хочу подразобраться сам.
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;»>⇑
Решение задач на С++
Задача B. Количество нулей
Дано натуральное число N. Напишите функцию int NumberOfZeroes(int n), определяющую количество нулей среди всех цифр числа N.- int NumberOfZeroes( int n)
- <
- int count = 0;
- while (n)
- <
- if (n % 10 == 0)
- count++;
- n /= 10;
- >
- return count;
- >
Задача C. Минимальная и максимальная цифры
Дано натуральное число N. Напишите функцию int MinDigit (int n) и int MaxDigit (int n), определяющие наименьшую и наибольшую цифры данного числа.
Необходимо вывести наименьшую и наибольшую цифры данного числа через пробел.- int MinDigit ( int n)
- <
- int cur;
- int min_n = 9;
- while (n)
- <
- cur = n % 10;
- min_n = min(min_n,cur);
- n /= 10;
- >
- return min_n;
- >
- int MaxDigit ( int n)
- <
- int cur;
- int max_n = 0;
- while (n)
- <
- cur = n % 10;
- max_n = max(max_n,cur);
- n /= 10;
- >
- return max_n;
- >
Задача D. Двоичная запись
Дано натуральное число N. Выведите его представление в двоичном виде в обратном порядке.- int n;
- cin >> n;
- while (n)
- <
- cout << n % 2;
- n >>= 1;
- >
- cout << n;
Задача E. Обращение числа
Напишите функцию int reverse(int n), которая переставляет цифры числа в обратном порядке .Вариант 1. Если перевернутое число не требуется оформлять как отдельную переменную, то можно, просто откусывая последние цифры исходного числа, выписывать их в строку вывода .
- int reverse( int n)
- <
- do
- <
- cout << n % 10;
- n /= 10;
- >
- while (n);
- return 0;
- >
Вариант 2. Но можно и завести отдельную переменную под перевертыш, тогда появится возможность при необходимости использовать результат в дальнейшем.
- int reverse( int n)
- <
- int rev = 0;
- do
- <
- rev = rev * 10 + n % 10;
- n /= 10;
- >
- while (n);
- return rev;
- >
Задача F. Количество палиндромов
Назовем число палиндромом, если оно не меняется при перестановке его цифр в обратном порядке. Напишите функцию bool IsPalindrome (int n), проверяющую по данному числу n, является ли оно палиндромом.
Напишите программу, которая по заданному числу K выводит количество натуральных палиндромов, не превосходящих K.