Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как составить цикл в python который перемножает цифры числа

**** Ученик (32), на голосовании 1 месяц назад
b = len(str(a)) #Длинна строки
i = 1
a = int(input())
counter = 1
while i <= b:
counter *= a % 10
a = a // 10
i += 1
print(counter) # Произведение цифр числа

#При работе цикла он не перемножает цифры по типу (1*2*4*8*7)
а просто выводит единицу
Голосование за лучший ответ
what Знаток (371) 2 месяца назад
def multiply_digits(number):
"""Перемножает цифры числа.

Args:
number: Число, цифры которого нужно перемножить.

Returns:
Произведение цифр числа.
"""

product = 1
for digit in str(number):
product *= int(digit)
return product

# Пример использования
number = 12345
result = multiply_digits(number)
print(f"Произведение цифр числа {number}: {result}")
```
Vasyok Мудрец (19666) 2 месяца назад
попробуй рекурсией

def foo(a):
□□□□if a<=1:
□□□□□□□□return 1
□□□□return (a%10)*foo(a//10)

потом вызови его
print(foo(123))
Александр Лонберг Мыслитель (8560) 2 месяца назад
Если предположить что это целое, то и разобрать можно сразу на цифры не прибегая к "int % 10".
И вместо цикла использовать reduce
 from functools import reduce

num = "1234"
digits = [int(v) for v in num]
print(reduce(lambda a, v: a * v, digits))
# => 24
... или так
 reduce(lambda a, v: a * int(v), num, 1) 
Похожие вопросы