Python中range()函数循环无输出的相关规则及原理咨询
Python中range()函数的运行规则:为什么range(11, -2)没有输出?
要搞懂这个问题,得先吃透Python里range()函数的核心运行逻辑:
range()的完整语法是range(start, stop, step),其中step(步长)默认值为1。- 生成序列的前提是:步长的方向必须和起始值到结束值的方向一致:
- 当
step为正数时,只有start < stop,才会生成从start开始、每次加step直到接近但不超过stop的序列; - 当
step为负数时,只有start > stop,才会生成从start开始、每次减step的绝对值直到接近但不低于stop的序列; - 如果方向不匹配,或者
start等于stop,range()直接返回空序列。
- 当
回到你的例子:
- 初始代码里的
range(11, -2)用了默认步长1(正数),但start=11明显大于stop=-2,方向完全相反,所以range()返回空序列,for循环遍历空序列自然没有任何输出。 - 修复后的
range(11, 0, -2)把步长设为-2(负数),此时start=11 > stop=0,方向匹配,所以会生成11,9,7,5,3,1这样的序列,循环就能正常执行。
内容的提问来源于stack exchange,提问作者Prearea
相关产品推荐
相关产品推荐

