取正整数n并返回小于n的所有正整数的平方和的Python函数

时间:2018-09-02 21:24:48

标签: python

我的想法:

def sum_square(n):

    result = 0
    if n > 0:
        i = iter(n)
        for i in n:
            result += i * i
        return result
    elif n <= 0:
        raise ValueError("n should be positive")
print(sum_square(4))

但是,终端显示int对象不可迭代。 我的答案怎么了?可以根据我的想法进行修改吗?

1 个答案:

答案 0 :(得分:4)

关闭表格

首先,知道平方和为closed form。这是将公式累加为n - 1的公式。

def sum_square(n):
    if n < 0:
        raise ValueError('n must be positive')

    return n*(n-1)*(2*n-1)//6

实际上,所有权力之和都具有a known closed form

关于您的代码

您不能用整数调用iter(n),您的意思可能是range(n)

def sum_square(n):
    result = 0
    if n > 0:
        for i in range(n):
            result += i * i
        return result
    elif n <= 0:
        raise ValueError("n should be positive")

尽管可以使用sum简化上述操作。

def sum_square(n):
    return sum(x**2 for x in range(n))