有人可以帮我解决这个问题吗?我总是收到此代码错误,但不知道出了什么问题?
x= 1523
while x <= 10503:
x=x+2
print sum(x)
编辑。很抱歉不清楚。是的,我想得到从 1523 到 10503(包括)(2 的间隔)的所有数字的总和。
有人可以帮我解决这个问题吗?我总是收到此代码错误,但不知道出了什么问题?
x= 1523
while x <= 10503:
x=x+2
print sum(x)
编辑。很抱歉不清楚。是的,我想得到从 1523 到 10503(包括)(2 的间隔)的所有数字的总和。
pythonic解决方案是:
print(sum(range(1523, 10504, 2)))
(使用 while 循环来构建一个包含整数范围的列表有点傻,因为有一个内置函数可以更有效地完成它。)
为什么要使用循环?
>>> ((10503-1523+2)//2 * (1523 + 10503))//2
27004383
这只是老问题“从 1 到 100 的所有整数的总和是多少?”的扩展。这是
50*101 (1+100 + 2+99 + 3+98 + ... 50+51)
问题在于 sum() 仅适用于可迭代类型,例如元组、列表或类似类型。
而且您正在将总和应用于整数,所以这行不通。
你可以尝试这样的事情:
x = 1523
x_list = []
while x <= 10503:
x=x+2
x_list.append(x)
print(sum(x_list))
我假设你想得到一个等差数列中所有数字的总和,它的第一个元素是 1523,最后一个元素是 10503,它们的共同点是 2。从你的问题中不清楚