首页 > 解决方案 > Python 函数,它接受一个正整数 n 并返回所有小于 n 的正整数的平方和

问题描述

我的想法:

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 对象不可迭代。我的回答有什么问题?你能根据我的想法进行修改吗?

标签: python

解决方案


封闭式

首先,要知道平方和有一个封闭的形式。这是转移到总和的公式n - 1

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

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

实际上,所有幂和都有一个已知的封闭形式

关于您的代码

您不能调用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))

推荐阅读