2016-06-30 4 views
-1

は私が解決しようとしている質問はここにある:プロジェクトオイラー#6のPython

https://projecteuler.net/problem=6が、私はこれを試みたが、すべてのことが印刷されたされた2つのゼロ:

sumsquare = 0 
ssum = 0 
def sumsquaredif(n): 
    for i in range(1, n+1): 
     num = i ** 2 
     num += sumsquare 
     i += ssum 
    squaresum = ssum**2 
    print (squaresum) 
    print (sumsquare) 
    return 
sumsquaredif(10) 

そしてもちろん、私は思いますsquaresumからsumsquareを減算してそれを出力するコードを追加する必要があります。しかし、この暫定コードは機能していません。誰かが助けてくれたら本当に感謝しています。私はまだ初心者です。ありがとうございました!

+0

あなたが行 'I + = ssum'を持っていないのはなぜ? –

+1

あなたは 'ssum = 0'を割り当て、決してそれを変更したり、何も追加したりしません。 –

答えて

2

+=割り当てが間違っています! num += sumsquareは、現在の数値に合計を加算しています。これは逆ではなく、ssumで似ています。また、合計変数は関数内で宣言する必要があります。

def sumsquaredif(n): 
    sumsquare = 0 # inside function 
    ssum = 0  # inside function 
    for i in range(1, n+1): 
     num = i ** 2 
     sumsquare += num # inversed 
     ssum += i   # inversed 
    squaresum = ssum**2 

また、リストの内包表記を使用して、そのコードがはるかに短くすることができます:

sumsquare = sum(n for n in range(1, n+1))**2 
squaresum = sum(n**2 for n in range(1, n+1)) 
関連する問題