Посчитать сумму и произведение цифр числа

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

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

В коде ниже выражение добавления цифры к сумме можно поместить в ветку if также как произведение.

n = int(input())
mult = 1
summa = 0
while n > 0:
	if n%10 != 0:
		mult = mult * (n%10)
	summa = summa + n%10
	n = n // 10
 
print("Сумма цифр:", summa)
print("Произведение значащих цифр:", mult)

В языке программирования Python решить подобную задачу может быть легче другим способом. Можно оставить число в строковом представлении и далее в цикле for перебрать символы строки.

n = input()
mult = 1
summa = 0
for i in n:
	summa += int(i)
	if int(i) != 0:
		mult *= int(i)
 
print("Сумма цифр:", summa)
print("Произведение значащих цифр:", mult)

Примечание. Выражение summa += int(i) - это то же самое, что summa = summa + int(i). Аналогичная сокращенная форма используется и для умножения.

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

n = input()
mult = 1
summa = 0
for i in n:
	if i in ['1','2','3','4','5','6','7','8','9']: # или '1' <= i <= '9'
		summa += int(i)
		if int(i) != 0:
			mult *= int(i)
 
print("Сумма цифр:", summa)
print("Произведение значащих цифр:", mult)

Комментарии

inp = str(input('Введите число: '))
list = list(inp)
product = 1;
for i in list:
    product *= int(i)
print(product)

Ответ на от Harut

1) имя объекта (переменная) никогда не называть list, иначе вы переопределите значение целого метода (ошибка: list not callable) 2) любое число, имеющее 0, вернет произведение 0, хотя в исходном примере есть специально условие для этого: ноль не учитывать 3) отсутствует сумма. итого: если исправить ошибки (потратив время), то ваш код будет аналогичен примеру в статье, с одним только отличием - потраченным на устранение ошибок временем.