python - 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 对象不可迭代。我的回答有什么问题?你能根据我的想法进行修改吗?
解决方案
封闭式
首先,要知道平方和有一个封闭的形式。这是转移到总和的公式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))
推荐阅读
- html - 响应式 div 元素与背景图像相同?
- python - Tensorflow 2 ValueError:没有为任何变量提供梯度:自定义损失函数
- sql - Clickhouse 数组字段 - 检查是否有任何项目符合条件
- javascript - array.map() 不会在 React 的网格容器中水平渲染项目
- react-native - React Native Facebook Flipper 线程 9:EXC_BAD_ACCESS(代码=1,地址=0x20...1)
- elasticsearch - 映射时出现 Elasticsearch 错误 - 未知设置
- c++ - 我可以在 C++ 中使用数组作为 struct 的属性吗?
- python - 如何从 keras 中的单个自定义损失函数访问所有输出
- reactjs - reactjs:如何根据后端权限显示导航项目
- java - 根据正则表达式拆分数组