当我希望它返回15时,为什么这个表达式返回10?

Adr*_*vet 1 python python-3.x

在Python控制台中,此代码应返回15,但它返回10.有什么问题?

print(sum(range(5)))
Run Code Online (Sandbox Code Playgroud)

Jim*_*ard 5

因为ranges是独占的,所以它们不包括stop您指定的last()元素,来自范围对象的文档:

对于正步骤,范围的内容r由公式确定,r[i] = start + step*i其中i >= 0 r[i] < stop

省略step默认值为1.

你基本上总结了这个:

list(range(5))
[0, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

这显然是总结的10.