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

问题描述 投票:1回答:1

我的想法:

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
1个回答
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))
© www.soinside.com 2019 - 2024. All rights reserved.