2016-04-07 8 views
-2

私はコードを作成しています。これはこれまでのところすべてです。私はこの時点で立ち往生しています。どんな助けでも大歓迎です。ブール値関数perfect(n)のプログラムで、パラメータnの値が完全な数であるかどうかに応じてブール値TrueまたはFalseをそれぞれ計算して返します。Pythonで完璧な数字

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() 
+5

これはコード作成サービスでもチュートリアルサービスでもないので、このトピックをオフトピックとして閉じるよう投票しています – jonrsharpe

答えて

0

は「数」を分ける「ことができます」すべての値がその「数」のダブルまで追加する場合は、チェックすることでこれを行うことができます:

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 
+0

コード実行時にこのエラーが発生しました。それが何を意味するか知っていますか?トレースバック(最新の最後のコール): ファイル "/Users/kalebdill/Documents/Untitled.py" isperfect() TypeError:isperfect()missing 1必要な位置引数: 'n' – Chris

+0

はい、このコードを実行してもそのエラーは発生しませんでした。それは、あなたが 'isperfect()'のあなたの呼び出しに引数を与えなかったということです。あなたはそれに番号を与える必要があります。たとえば、 'isperfect(10)'などです。 – armatita

+0

@Chrisこの回答が問題の解決に役立つ場合は、それを受け入れるべきです。 – armatita

関連する問題