-1

有人可以帮我解决这个问题吗?我总是收到此代码错误,但不知道出了什么问题?

x= 1523

while x <= 10503:
    x=x+2
    print sum(x)

编辑。很抱歉不清楚。是的,我想得到从 1523 到 10503(包括)(2 的间隔)的所有数字的总和。

4

4 回答 4

6

pythonic解决方案是:

print(sum(range(1523, 10504, 2)))

(使用 while 循环来构建一个包含整数范围的列表有点傻,因为有一个内置函数可以更有效地完成它。)

于 2012-10-30T11:56:50.470 回答
5

为什么要使用循环?

>>> ((10503-1523+2)//2  * (1523 + 10503))//2
27004383

这只是老问题“从 1 到 100 的所有整数的总和是多少?”的扩展。这是

50*101 (1+100 + 2+99 + 3+98 + ... 50+51)
于 2012-10-30T12:23:09.720 回答
2

问题在于 sum() 仅适用于可迭代类型,例如元组、列表或类似类型。

而且您正在将总和应用于整数,所以这行不通。

于 2012-10-30T11:35:17.963 回答
0

你可以尝试这样的事情:

x = 1523
x_list = []
while x <= 10503:
    x=x+2
    x_list.append(x)
print(sum(x_list))

我假设你想得到一个等差数列中所有数字的总和,它的第一个元素是 1523,最后一个元素是 10503,它们的共同点是 2。从​​你的问题中不清楚

于 2012-10-30T11:46:20.353 回答