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

数组左旋转Python代码输出异常:未执行旋转操作求助

问题分析与解决:数组左旋转代码未生效

嘿,我帮你找到了问题的根源——你的leftRotate函数里的循环条件写错啦!

看这段代码:

while (d-1) > 0:
    leftRotatebyOne(arr, n)

当你输入旋转次数d=1时,d-1等于0,完全不满足>0的判断条件,所以循环一次都没跑,leftRotatebyOne根本没被调用,数组当然还是原来的样子!

修复方案

把循环条件改成循环d次就好,每次执行完单步旋转后记得把d减1,不然会变成死循环:

def leftRotate(arr, d, n):
    # 循环d次,每次左移一位
    while d > 0:
        leftRotatebyOne(arr, n)
        d -= 1  # 减少剩余旋转次数

修改后再测试,输入d=1时,循环会执行1次,调用leftRotatebyOne把数组左移一位,就能得到你想要的2 3 1输出了。

更简洁的Python实现方式

其实Python的切片特性可以让这个功能变得超级简单,不用写循环单步旋转的函数,代码更高效也更易读:

def leftRotate(arr, d):
    # 处理旋转次数超过数组长度的情况,避免做无用功
    d = d % len(arr)
    return arr[d:] + arr[:d]

def PrintArray(arr):
    print(" ".join(map(str, arr)))

arr = []
l = int(input("Enter the number of elements: "))
for i in range(0, l):
    ele = int(input())
    arr.append(ele)
d = int(input("Enter the number of rotations: "))
rotated_arr = leftRotate(arr, d)
PrintArray(rotated_arr)

这种方式的时间复杂度是O(n),比原来的O(n*d)高效很多,还自动处理了比如旋转次数大于数组长度的边界场景(比如数组长度3,旋转4次等价于旋转1次)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 09:22:35