Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的完全数_Python_Loops_While Loop - Fatal编程技术网

python中的完全数

python中的完全数,python,loops,while-loop,Python,Loops,While Loop,我正在编写一个代码,到目前为止,这就是我所拥有的全部。我被困在这一点上。任何帮助都将不胜感激。布尔值函数perfectn的程序,它分别根据参数n的值是否为完美数计算并返回布尔值True或False def main(): numPerfects = eval(input("How many perfect numbers do you want to find?")) perfectsFound=0 possiblePerfect=1 while(perfects

我正在编写一个代码,到目前为止,这就是我所拥有的全部。我被困在这一点上。任何帮助都将不胜感激。布尔值函数perfectn的程序,它分别根据参数n的值是否为完美数计算并返回布尔值True或False

def main():
    numPerfects = eval(input("How many perfect numbers do you want to find?"))
    perfectsFound=0
    possiblePerfect=1
    while(perfectsFound < numPerfects):
        if (perfect(possiblePerfect)):
            perfectsFound += 1
            print ("{0:0}}.{1:0}".format(perfectsFound, possiblePerfect))
        #end if
    #end while
#end main

main()

您可以通过检查可以分割一个数字的所有值加起来是否等于该数字的两倍来完成此操作:

def isperfect(n):
    factors = [1]+[i for i in range(2,n+1) if n%i == 0]
    if sum(factors) == 2*n: 
        return True
    return False

for i in range(1000):
    if isperfect(i):
        print(i)
,结果是:

6
28
496

我投票结束这个问题,因为这既不是代码编写,也不是教程服务。我在运行代码时收到了这个错误。你知道这是什么意思吗?回溯上次调用:isperfect TypeError:isperfect缺少1个必需的位置参数:“n”是,但运行此代码时没有得到该错误。这是说你没有就你的“isperfect”呼吁进行辩论。你必须给它一个数字。例如:“isperfect10”。@Chris如果这个答案帮助你解决了问题,你应该接受它。