【问题标题】:What happens when start value < end value with range() cmd in Python?当 Python 中使用 range() cmd 的起始值 < 结束值时会发生什么?
【发布时间】:2017-12-14 21:58:16
【问题描述】:

我们知道range(m,n) 给出m, m+1, m+2... n - 1,增量器默认为1。但是,当m &gt;= n 时会发生什么?

示例 1:

示例 2:

在这种情况下会不会是默认的incrementer = -1 而不是incrementer = 1,还是会抛出错误,或者什么都不会发生?

提前致谢。

【问题讨论】:

  • 你尝试的时候发生了什么?
  • 如果有办法找出来就好了。
  • 你为什么不试试看,会发生什么?如果m >= n,则range(m, n) 的循环将被忽略而不会出现错误消息。除非,您指定一个负步 - range(10, 1, -1) 倒数。
  • @timgeb 我自己没有运行代码,因为我正在准备计算机科学的期末考试,我试图在运行它并得到答案之前弄清楚它。在决赛中,我们将获得代码并告诉我们结果将是什么。
  • @karathrace99 我们和口译员给你答案的区别在哪里?

标签: python algorithm for-loop range increment


【解决方案1】:

range 命令返回一个值列表。如果您的“开始”值大于“结束”值,则返回一个空列表。

默认增量值为正 1。但是,您可以使用第三个参数作为增量值。您可以将其作为 -1 传递,然后 range() 将返回一个递减值,正如您所寻找的那样。

这是针对 Python 2 的。在 Py3 中,情况相似但又不同。

【讨论】:

  • 虽然这个答案是正确的,但我否决了它,因为 OP 表现出不应该支持的懒惰程度。许多其他人不同意这样的投票,我支持他们。
  • @Gary02127 好的,这是有道理的。我在想如果没有 range() 中的第三个参数,它可能会是空的,但我想确保我的语义适合我的考试。谢谢!
  • @timgeb 我长期以来一直使用 stackoverflow 来补充我的 CSC 教育。我在这里用它来澄清一个关键语义与 range() fn 我在继续之前不理解和需要。如果我只是运行解释器,那将不会真正帮助我学习;它不会解释任何事情(告诉我“为什么”),它只会产生一个我不明白的答案。我将继续以这种方式使用这个论坛,即使有些人不支持初学者。社区适合所有人。
  • @karathrace99 除了在解释器中测试,还可以read the doc ...明确表示:“如果step为正,则最后一个元素是最大开始+ i * step小于停止;如果 step 为负数,则最后一个元素是最小的 start + i * step 大于 stop。step 不能为零(否则引发 ValueError)"
猜你喜欢
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多