Как найти сумму чисел трехзначного числа python

Сумма цифр трехзначного числа

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

Например, если было введено 349, программа должна вывести на экран число 16, так как

3 + 4 + 9 = 16.

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

Как извлечь отдельные цифры из числа? Если число разделить нацело на десять, в остатке будет последняя цифра этого числа. Например, если 349 разделить нацело на 10, то получится частное 34 и остаток 9. Если потом 34 разделить также, получится частное 3 и остаток 4; далее при делении 3 на 10 получим частное 0 и остаток 3.

В языках программирования почти всегда есть две операции:

1) нахождение целого при делении нацело,

2) нахождение остатка при делении нацело.

В языке программирования Python первая операция обозначается // (двумя знаками деления), а вторая — % (знаком процента). Например:

>>> 34 // 10
3
>>> 34 % 10
4

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

>>> 34.5 % 10
4.5
>>> 34.5 // 10
3.0
>>> 34.5 // 12.9
2.0

Алгоритм нахождения суммы цифр трехзначного числа abc (где a — сотни, b — десятки и c — единицы) можно описать так:

  1. Найти остаток от деления abc на 10, записать его в переменную d1. Это будет цифра c.
  2. Избавиться от цифры c в числе abc, разделив его нацело на 10.
  3. Найти остаток от деления ab на 10, записать его в переменную d2. Это будет цифра b.
  4. Избавиться от цифры b в числе ab, разделив его нацело на 10.
  5. Число a однозначное. Это еще одна цифра исходного числа.
  6. Сложить оставшееся число a со значениями переменных d1 и d2.
n = input("Введите трехзначное число: ")
n = int(n)
 
d1 = n % 10
n = n // 10
d2 = n % 10
n = n // 10
 
print("Сумма цифр числа:", n + d2 + d3)

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

Введите трехзначное число: 742
Сумма цифр числа: 13

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

  1. Остаток от деления на 10 исходного числа дает последнюю цифру числа.
  2. Если найти остаток от деления на 100 исходного числа, то мы получи последние две цифры числа. Далее следует разделить полученное двухзначное число нацело на 10, и у нас окажется вторая цифра числа.
  3. Если исходное трехзначное число разделить нацело на 100, то получится первая цифра числа.
n = input("Введите трехзначное число: ")
n = int(n)
 
d1 = n % 10
d2 = n % 100 // 10
d3 = n // 100
 
print("Сумма цифр числа:", d1 + d2 + d3)

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

n = input("Введите трехзначное число: ")
 
# Извлекается первый[0] символ строки, 
# преобразуется к целому.
# Аналогично второй[1] и третий[2].
a = int(n[0])
b = int(n[1])
c = int(n[2])
 
print("Сумма цифр числа:", a + b + c)

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

В этом случае надо воспользоваться функциями randint(), randrange() или random() из модуля random. Первым двум функциям передаются диапазоны: randint(100, 999), randrange(100, 1000). Получить трехзначное число, используя random() немного сложнее:

# Функция random генерирует
# случайное дробное число от 0 до 1
from random import random
 
# При умножении на 900 получается случайное
# число от 0 до 899.(9).
# Если прибавить 100, то получится
# от 100 до 999.(9).
n = random() * 900 + 100
 
# Отбрасывается дробная часть, 
# число выводится на экран
n = int(n)
print(n)
 
# Извлекается старший разряд числа
# путем деления нацело на 100
a = n // 100
 
# Деление нацело на 10 удаляет 
# последнюю цифру числа.
# Затем нахождение остатка при 
# делении на 10 извлекает последнюю цифру,
# которая в исходном числе была средней.
b = (n // 10) % 10
 
# Младший разряд числа находится
# как остаток при делении нацело на 10.
c = n % 10
 
print(a+b+c)

Больше задач в PDF

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

На чтение 3 мин Просмотров 1.7к. Опубликовано

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

Нахождение суммы и произведения цифр трехзначного числа с помощью арифметических операций

Решить данную задачу можно с помощью применения простых математических операций. Сначала посмотри код, а после разберём его подробнее:

num = int(input("Введите трехзначное число: "))

# Получение цифр числа
digit1 = num // 100
digit2 = (num % 100) // 10
digit3 = num % 10

# Вычисление суммы цифр
sum_of_digits = digit1 + digit2 + digit3
print(f"Сумма цифр числа {num} равна {sum_of_digits}")

# Вычисление произведения цифр
product_of_digits = digit1 * digit2 * digit3
print(f"Произведение цифр числа {num} равно {product_of_digits}")
  1. Сначала мы получаем трехзначное число от пользователя, используя функцию input(). Функция input() возвращает строку, которую мы преобразуем в целое число с помощью функции int().
  2. Затем мы получаем каждую цифру числа, используя операции целочисленного деления и остатка от деления. Для первой цифры мы используем целочисленное деление на 100, чтобы получить первую цифру числа. Для второй цифры мы используем операцию остатка от деления на 100, чтобы получить последние две цифры числа, а затем выполняем целочисленное деление на 10, чтобы получить вторую цифру числа. Для третьей цифры мы используем операцию остатка от деления на 10, чтобы получить последнюю цифру числа.
  3. Затем мы вычисляем сумму цифр, складывая каждую цифру, и сохраняем ее в переменную sum_of_digits.
  4. Мы также вычисляем произведение цифр, умножая каждую цифру, и сохраняем его в переменную product_of_digits.
  5. Наконец, мы выводим сумму и произведение цифр с помощью функции print(). Мы используем символы форматирования {} для вставки переменных num, sum_of_digits и product_of_digits в строку.

Мы можем использовать цикл while и оптимизировать наш код для работы с целочисленными числами любого порядка:

# Получаем трехзначное число от пользователя
num = int(input("Введите трехзначное число: "))

# Инициализируем переменные для хранения суммы и произведения цифр
digit_sum = 0
digit_product = 1

# Разбиваем число на цифры с помощью операций деления и остатка от деления
while num != 0:
    # Получаем последнюю цифру числа
    digit = num % 10
    # Добавляем ее к сумме цифр
    digit_sum += digit
    # Умножаем ее на произведение цифр
    digit_product *= digit
    # Убираем последнюю цифру из числа
    num //= 10

# Выводим результаты на экран
print("Сумма цифр:", digit_sum)
print("Произведение цифр:", digit_product)

Нахождение суммы и произведения цифр трехзначного числа с помощью цикла for и извлечения символов строки

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

Вот пример решения нашей задачи:

num = input("Введите трехзначное число: ")
sum = 0
product = 1
for digit in num:
    sum += int(digit)
    product *= int(digit)

print("Сумма цифр:", sum)
print("Произведение цифр:", product)

Здесь мы сначала создаем переменные sum и product для хранения суммы и произведения цифр соответственно.

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

Наконец, мы выводим результаты на экран с помощью функции print().

Данный код будет работать для целых чисел любого порядка.

Python_lesson01.py


This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

Show hidden characters

»’Задача 2
Найдите сумму цифр трехзначного числа.
Пример:
123 -> 6 (1 + 2 + 3)
100 -> 1 (1 + 0 + 0)»’
a = 123
print(a//100 + a//10%10 + a%10)
# или
num = input(‘Введите 3-х значное число: ‘)
res = 0
if len(num) == 3:
for i in num:
res += int(i)
print(res)
else:
print(‘Вы ввели не 3-х значное число’)


This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

Show hidden characters

»’Задача 4
Петя, Катя и Сережа делают из бумаги журавликов. Вместе они сделали S журавликов.
Сколько журавликов сделал каждый ребенок, если известно, что Петя и Сережа сделали одинаковое количество журавликов,
а Катя сделала в два раза больше журавликов, чем Петя и Сережа вместе?
Пример:
6 -> 1 4 1
24 -> 4 16 4
60 -> 10 40 10»’
s = 60
print(‘Петя и Сережа сделали по’, s/6, ‘шт’)
print(‘Маша сделала ‘, s/6*4, ‘шт’)


This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

Show hidden characters

»’Задача 6
Вы пользуетесь общественным транспортом? Вероятно, вы расплачивались за проезд и получали билет с номером.
Счастливым билетом называют такой билет с шестизначным номером, где сумма первых трех цифр равна сумме последних трех.
Т.е. билет с номером 385916 – счастливый, т.к. 3+8+5=9+1+6.
Вам требуется написать программу, которая проверяет счастливость билета.
Пример:
385916 -> yes
123456 -> no»’
t = input(‘Введите номер билета: ‘)
l = int(t[0]) + int(t[1]) + int(t[2])
r = int(t[3]) + int(t[4]) + int(t[5])
if l == r:
print(‘Yes’)
else:
print(‘NO’)
# или
s = input(‘Введите 6-значный номер билета: ‘)
if len(s) != 6:
print(f’Число {s} не 6-ти значное’)
else:
res1 = 0
res2 = 0
for i in range(len(s)//2):
res1 += int(s[i])
res2 += int(s[len(s)//2 + i])
if res1 == res2:
print(f’{s} счастливый номер’)
else:
print(f’{s} не счастливый номер’)


This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

Show hidden characters

»’Задача 8.
Требуется определить, можно ли от шоколадки размером n × m долек отломить k долек,
если разрешается сделать один разлом по прямой между дольками (то есть разломить шоколадку на два прямоугольника).
Пример:
3 2 4 -> yes
3 2 1 -> no»’
n,m,k = int(input(‘В-те 1-ю сторону: ‘)),int(input(‘В-те 2-ю сторону: ‘)),int(input(‘В-те кол-во долек: ‘))
if k%n == 0 or k%m == 0:
print(‘Yes’)
else: print(‘No’)
# или
if k < n*m and (k % n == 0 or k % m == 0):

На чтение 3 мин Просмотров 928 Опубликовано 18 июня, 2022 Обновлено 18 июня, 2022

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

Например, если было введено 349, программа должна вывести на экран число 16, так как 3 + 4 + 9 = 16.

Как извлечь отдельные цифры из числа? Если число разделить нацело на десять, в остатке будет последняя цифра этого числа. Например, если 349 разделить нацело на 10, то получится частное 34 и остаток 9. Если потом 34 разделить также, получится частное 3 и остаток 4; далее при делении 3 на 10 получим частное 0 и остаток 3.

В языках программирования почти всегда есть две операции:

1) нахождение целого при делении нацело,

2) нахождение остатка при делении нацело.

В языке программирования Python первая операция обозначается // (двумя знаками деления), а вторая — % (знаком процента). Например:

>>> 34 // 10
3
>>> 34 % 10
4

Алгоритм нахождения суммы цифр трехзначного числа abc (где a — сотни, b — десятки и c — единицы) можно описать так:

  1. Найти остаток от деления abc на 10, записать его в переменную d1. Это будет цифра c.
  2. Избавиться от цифры c в числе abc, разделив его нацело на 10.
  3. Найти остаток от деления ab на 10, записать его в переменную d2. Это будет цифра b.
  4. Избавиться от цифры b в числе ab, разделив его нацело на 10.
  5. Число a однозначное. Это еще одна цифра исходного числа.
  6. Сложить оставшееся число a со значениями переменных d1 и d2.
n = input("Введите трехзначное число: ")
n = int(n)
 
d1 = n % 10
n = n // 10
d2 = n % 10
n = n // 10
 
print("Сумма цифр числа:", n + d2 + d3)

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

Введите трехзначное число: 742
Сумма цифр числа: 13

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

  1. Остаток от деления на 10 исходного числа дает последнюю цифру числа.
  2. Если найти остаток от деления на 100 исходного числа, то мы получи последние две цифры числа. Далее следует разделить полученное двухзначное число нацело на 10, и у нас окажется вторая цифра числа.
  3. Если исходное трехзначное число разделить нацело на 100, то получится первая цифра числа.
n = input("Введите трехзначное число: ")
n = int(n)
 
d1 = n % 10
d2 = n % 100 // 10
d3 = n // 100
 
print("Сумма цифр числа:", d1 + d2 + d3)

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

n = input("Введите трехзначное число: ")
 
# Извлекается первый[0] символ строки, 
# преобразуется к целому.
# Аналогично второй[1] и третий[2].
a = int(n[0])
b = int(n[1])
c = int(n[2])
 
print("Сумма цифр числа:", a + b + c)

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

В этом случае надо воспользоваться функциями randint(), randrange() или random() из модуля random. Первым двум функциям передаются диапазоны: randint(100, 999), randrange(100, 1000). Получить трехзначное число, используя random() немного сложнее:

# Функция random генерирует
# случайное дробное число от 0 до 1
from random import random
 
# При умножении на 900 получается случайное
# число от 0 до 899.(9).
# Если прибавить 100, то получится
# от 100 до 999.(9).
n = random() * 900 + 100
 
# Отбрасывается дробная часть, 
# число выводится на экран
n = int(n)
print(n)
 
# Извлекается старший разряд числа
# путем деления нацело на 100
a = n // 100
 
# Деление нацело на 10 удаляет 
# последнюю цифру числа.
# Затем нахождение остатка при 
# делении на 10 извлекает последнюю цифру,
# которая в исходном числе была средней.
b = (n // 10) % 10
 
# Младший разряд числа находится
# как остаток при делении нацело на 10.
c = n % 10
 
print(a+b+c)

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

Сумма цифр

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

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

num = int(input("Введите целое: "))
sum = 0
while (num != 0):
    sum = sum + num % 10
    num = num // 10
print("Сумма цифр числа равна: ", sum)

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

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

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

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

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

Введите целое: 555
Сумма цифр числа равна: 15

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

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

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

num = int(input("Введите целое: "))
mult = 1
while (num != 0):
    mult = mult * (num % 10)
    num = num // 10
print("Произведение цифр равно: ", mult)

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

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

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

Введите целое: 55
Произведение цифр равно: 25

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

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

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

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

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

num = int(input("Введите целое: "))

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

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

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

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

num = input("Введите дробное: ")
# разделим введённое (тип данных строка) на две части
x = num.split(".") 
a = int(x[0]) # целая часть
b = int(x[1]) # дробная часть
mult = 1
while (a != 0): # перемножаем числа целой части
    mult = mult * (a % 10)
    a = a // 10
while (b != 0): # перемножаем числа дробной части
    mult = mult * (b % 10)
    b = b // 10
print("Произведение цифр равно:", mult)

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

Введите дробное: 55.5
Произведение цифр равно: 125

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

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

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

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

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

num = float(input("Введите дробное: ")) # Преобразуем строку в дробное
a = int(num) # целая часть, например, 5
b = num - int(num) # дробная часть, например, 0.55
print("a =", a)
print("b =", b)
mult = 1
while (a != 0): # перемножаем числа целой части
    mult = mult * (a % 10)
    a = a // 10
while (b != 0): # b никогда не будет равно 0
    mult = mult * int(b*10) # 0.55 * 10 = 5.5, int(5.5) = 5
    b = b * 10 - int(b * 10)
print("Произведение цифр равно:", mult)

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

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

Введите дробное: 5.55
a = 5
b = 0.5499999999999998
Произведение цифр равно: 0

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

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

Понравилась статья? Поделить с друзьями:
  • Как найти учебник по штрих коду
  • Как найти в призме ребро куба
  • Искаженный лес майнкрафт как найти
  • Как найти директорию гта 5
  • Как исправить крутое тесто для пирожков дрожжевое