【问题标题】:Why this expression returns 10 when I expect it to return 15? [duplicate]为什么这个表达式在我期望它返回 15 时返回 10? [复制]
【发布时间】:2017-02-19 18:56:58
【问题描述】:

在 Python 控制台中,此代码应返回 15,但它返回 10。 怎么了?

print(sum(range(5)))

【问题讨论】:

  • 运行range(5) 看看那个子表达式给你什么
  • range(n)0 开头到n-1。更多信息请参考range()文档

标签: python python-3.x


【解决方案1】:

因为ranges 是独占的,它们不包括您指定的最后一个 (stop) 元素,来自 the documentation on range objects

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

省略step 默认值为1

你基本上是在总结这个:

list(range(5))
[0, 1, 2, 3, 4]

显然,总和为10

【讨论】:

  • 我的错,我把它和 print(sum([1, 2, 3, 4, 5])) 搞混了。
【解决方案2】:

在python中,

range(5) 等价于[0,5)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 2013-04-26
    • 2020-06-13
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多