У меня мини-програма предназначена для считания произведения елементов числа
Например задаем число 25 и результат: 2*5=10, но функция rap() почему-то выводит только последний элемент в случае 25 в списке fold оставляет только 5 и если напишем например 12334334, функция оставит только 4.
firstfold = []
def rap(a):
while a > 0:
fold.append(a % 10)
a = a // 10
return fold
a = int(input("Enter numbers: "))
rap(a)
firstfold.extend(fold)
print(firstfold)
result = 1 # перемножаем элементы между собой
for i in range(0, len(firstfold)):
result = result * firstfold[i]
print(result)
Ответы (2 шт):
Автор решения: icYFTL
→ Ссылка
Слишком много кода.
from functools import reduce
reduce(lambda x, y: x*y, (int(c) for c in input()))
*ty to Shamus
Автор решения: Shamus Rezol
→ Ссылка
def rap(a):
while a > 0:
fold.append(a % 10)
a = a // 10
return fold
a = int(input("Enter numbers: "))
rap(a)
firstfold.extend(fold)
print(firstfold)
result = 1 #перемножає елемнти між собою
for i in range(0, len(firstfold)):
result = result * firstfold[i]
print(result)
Тут мы видим, что в функции rap возвращается некоторая глобальная переменная fold в конце первой итерации цикла. То есть fold+(a%10, ). Достаточно опустить инструкцию return на уровень ниже и объявить fold как локальную переменную перед циклом во избежание каких-либо ошибок при многократном вызове. Таким образом, в fold добавятся все цифры числа a.
def rap(a):
fold=list()
while a > 0:
fold.append(a % 10)
a = a // 10
return fold