python筛选完美数

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

1、函数的编写。如果正整数n符合如下条件,则称n为完美数
a)n是正整数;
b)n不是10的倍数(n的末尾不能包含0);
c)k为n去掉0之后所得的数 k不等于n 而且k是n的一个因子(n的中间应至少包括1个0)。
前几个完美数为:105 108 405 1001 1005 1008 2002 2025。要求:
1)编写函数is_perfectnumber(n) 当n为完美数时 返回为真 否则返回为假;
2)编写函数compute_perfectnumber (n) 返回[1,n]范围内的完美数列。

def is_perfectnumber(n):
    if n%10 == 0: return False
    if '0' not in str(n): return False
    k = int(str(n).replace('0',''))
    return True if n%k==0 else False

def compute_perfectnumber(n):
    num_list = []
    for i in range(1,n+1):
        if is_perfectnumber(i):num_list.append(i)
    return num_list

print(compute_perfectnumber(int(input())))
def is_perfectnumber(n):
    flag = True
    if not isinstance(n, int):
        flag = False
    elif n < 1:
        flag = False
    elif n % 10 == 0:
        flag = False
    elif '0' not in str(n).strip("0"):
        flag = False
    else:        
        k = int(str(n).replace('0', ''))
        if k == n or not n % k == 0:
            flag = False
    return flag
            
res = is_perfectnumber(105)

def  compute_perfectnumber (n):
    return list(filter(is_perfectnumber, range(1, n + 1)))

res = compute_perfectnumber(3000)
print(res)