Вы были очень близки. Вот исправленная версия вашей собственной попытки для диапазона до 30. Проблема заключалась в том, что ваша функция работала только для двух цифр. Здесь я использую условие if-else, чтобы проверить, меньше ли число 10. Если это так, я просто возводю его в квадрат, иначе я отправляю его вашей функции.
В функции вы не возводили в квадрат числа. Вам также не нужно listemm
. Вы можете напрямую использовать range
в своем понимании списка.
def mult(liste):
a=1
for i in liste:
a*=i**2 # Square here (the problem was partly here)
return a
qe= [numb**2 if numb<10 else mult(int(digit) for digit in str(numb)) for numb in range(1,30)]
print(qe)
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 0, 4, 16, 36, 64, 100, 144, 196, 256, 324]