这样写完美数为啥不对啊

while True:
try:
def yinhe(n):
m=0
for i in range(1,n):
if n%i==0:
m+=i
return m
a=eval(input())
x=0
for j in (1,a):
if j==yinhe(j):
x+=1
print(x)
except:
break

你用代码块模式重新粘贴一下吧,现在缩进有问题
示例代码如下
有帮助望采纳~

def isPerfect(num: int):
    result = 0
    for i in range(1, num):
        if num % i == 0:
            result += i
    return result == num


for i in range(1, 60):
    if(isPerfect(i)):
        print(i)

img

应该两层循环才对


n=int(input())
for x in range(1,n+1):
    sum = 0
    for a in range(1,x):
       
        if x%a == 0 and x != a:
            sum += a
    if sum == x:
        print(x)

img

搞清楚了,少写了一个range