Python中range负步长使用疑问:为何用(10,0,-1)而非(1,11,-1)
为什么Python逆序range不能写成
range(1,11,-1)? Python里的range函数核心逻辑很直白,不管步长是正还是负,它都会遵循「从起始值出发,每次加上步长,直到当前值“越过”结束值就停止迭代」的规则,具体判断条件分两种情况:
- 步长为正:要求当前值 小于 结束值,一旦当前值 >= 结束值,停止
- 步长为负:要求当前值 大于 结束值,一旦当前值 <= 结束值,停止
为什么range(1,11,-1)没用?
起始值是1,结束值是11,步长-1。一开始1就小于11,不满足步长为负时「当前值 > 结束值」的迭代前提,所以这个range直接是空序列,循环根本不会执行,自然打不出任何数字。
为什么range(10,0,-1)能正常工作?
起始值10,结束值0,步长-1:
- 第一次取10,10>0,满足条件,输出
- 10 + (-1) =9,9>0,满足,输出
- 重复直到得到1,1>0,输出
- 1 + (-1)=0,0不满足>0,停止迭代
刚好覆盖10到1的所有数字,实现逆序输出。
代码验证
# 无输出 for num in range(1, 11, -1): print(num) # 输出10到1 for num in range(10, 0, -1): print(num)
内容的提问来源于stack exchange,提问作者aaditya basisth
相关产品推荐
相关产品推荐

