欧拉计划 #6 Python
Project Euler #6 Python
我要解决的问题在这里:https://projecteuler.net/problem=6
我试过了,但打印出来的都是两个零:
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 并打印它。但是这个初步代码不起作用。如果有人能提供帮助,我将不胜感激。我还是个初学者。谢谢!
您的 +=
分配方式错误! 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))
我要解决的问题在这里:https://projecteuler.net/problem=6
我试过了,但打印出来的都是两个零:
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 并打印它。但是这个初步代码不起作用。如果有人能提供帮助,我将不胜感激。我还是个初学者。谢谢!
您的 +=
分配方式错误! 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))