You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中range对象的stop值永远无法命中时会发生什么?

Python中range参数方向不匹配时无输出的原因

range()是Python内置的序列生成函数,本身不会因为步长方向和起止范围冲突抛出错误,无输出是参数触发了即时终止的判定逻辑,属于符合设计预期的正常表现。

range的核心运行规则

  • 函数签名为range(start, stop, step),生成序列时从start开始,每次累加step得到下一个值,直到满足终止条件就停止生成,全程不会做「stop是否能被抵达」的校验。
  • 终止条件和步长符号严格绑定:
    • 步长为正数时:只要当前计算值 ≥ stop,立刻终止
    • 步长为负数时:只要当前计算值 ≤ stop,立刻终止

你的代码无输出的具体原因

你编写的代码为:

for i in range(-10, 11, -6):
    print(i)

这里传入的start=-10、stop=11、step=-6:

  1. 步长为负数,触发「当前值 ≤ stop 就终止」的判定规则
  2. 初始的start值-10本身就小于stop值11,在生成第一个值之前就已经满足终止条件
  3. 整个range序列是空的,for循环一次都不会执行,因此既不会报错,也没有任何输出。

常见的正确写法参考

  • 如果要正向从-10遍历到11以内、步长为6:用range(-10, 11, 6),会依次生成-10, -4, 2, 8
  • 如果要反向从-10往更小值遍历、步长为-6:需要把stop设为小于start的数,比如range(-10, -30, -6),会依次生成-10, -16, -22, -28

内容的提问来源于stack exchange,提问作者ArthurEzenwanne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 20:09:11