Во втором вложении - правила преобразования и список эквивалентных символов для записи операций.
def f():
result = []
for i in range(100, 10000):
str_num = str(i)
num = sum([int(x) ** len(str_num) for x in str_num])
if num == i:
result.append(i)
return result
Положительные числа - от 1 до 7, их сумма 1+2..+7=28
отрицательные - от - 15 до -1, их произведение -(1*2*3*...*15) посчитаешь на калькуляторе
<u>Напечатано будет число 22.</u>
В переменой m накапливается сумма элементов массива Work, не меньших текущего значения m.
Первоначально m=0, поэтому Work[1]=5 попадает в m.
Work[2]=4, но 4<m, поэтому m не меняется.
Work[3]=5 и 5=m, поэтому значение m увеличивается до 10.
Элементы Work со значением, меньшим 10, m не меняют.
Work[6]=12, 12>m, поэтому значение m увеличивается до 22.
В массиве нет значений 22 и больше, поэтому m больше не меняется.