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

如何让自定义实现的Python range函数支持负步长参数

问题根因

自定义myRange函数负步长场景无法输出预期结果的核心原因有两个:

  • 步长为负的逻辑分支遗漏了return res语句,仅在步长为正的分支配置了返回值,当传入负步长时函数执行完毕后会默认返回None
  • 现有逻辑未处理步长为0的异常,和内置range的行为不一致(内置range会抛出ValueError: range() arg 3 must not be zero异常)

修复后代码

def myRange(start, stop = None, step = None):
    if step == None and stop == None:
        stop = start
        start = 0
        step = 1
    elif step == None:
        step = 1
    # 对齐内置range的步长为0异常逻辑
    if step == 0:
        raise ValueError("myRange() arg 3 must not be zero")
    res = []
    if step < 0:
        while stop < start:
            res.append(start)
            start += step
    else:
        while start < stop:
            res.append(start)
            start += step
    # 将返回语句移到所有分支外,覆盖正负步长场景
    return res

def main():
    print(myRange(5, 20))
    print(myRange(5, 100, 5))
    print(myRange(20, 10, -1))
    print(list(range(20, 10, -1)))
    print(myRange(100, 500, 50))
if __name__ == '__main__':
    main()

运行输出

[5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
[20, 19, 18, 17, 16, 15, 14, 13, 12, 11]
[20, 19, 18, 17, 16, 15, 14, 13, 12, 11]
[100, 150, 200, 250, 300, 350, 400, 450]

修复后负步长场景的输出和内置range完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:39:03