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

Python实现列表顺时针循环旋转时出现IndexError问题求助

数组顺时针旋转代码报错原因及修复方案

报错根本原因梳理

  • 空列表不支持直接索引赋值,触发IndexError
    Python 中未预先填充元素的空列表没有任何可用索引位,哪怕你计算出的i+k、i+k-N的取值范围在0~N-1之间,对长度为0的Arr2执行索引赋值操作也会直接抛出索引越界错误。修复方式为初始化Arr2时就指定和原数组相同的长度,示例:Arr2 = [0]*N。
  • if分支的else缩进错误,逻辑完全不符合预期
    你当前代码里的else和for循环同级,属于Python特有的for-else语法(for循环正常执行完未触发break就会执行else内代码),不是你想要的if条件不成立时的分支。需要将else缩进调整到和if同级,才能正确对应判断逻辑。
  • 变量名大小写不匹配,会触发NameError
    你定义的循环变量是小写的i,但取值时用了大写的Arr[I],Python大小写敏感,解决索引报错后运行到这一行会直接抛出变量未定义错误,统一改成小写i即可。
  • (可选优化)输入的数组元素默认是字符串类型,直接输出会带引号不符合预期,可以在append时转成int类型:Arr.append(int(a))。

修正后的可运行代码

Arr = []
N = int(input("Enter the number of elements:"))
k = int(input())
if k > N:
    k = k % N
# 初始化等长的结果数组
Arr2 = [0] * N

for i in range(0, N):
    a = input()
    Arr.append(int(a))

for i in range(0, N):
    if (i + k) < N:
        Arr2[i + k] = Arr[i]
    else:
        Arr2[i + k - N] = Arr[i]
# 按空格分隔输出符合示例要求
print(' '.join(map(str, Arr2)))

验证效果

输入N=5,K=2,数组元素依次输入10、20、30、40、50时,输出为40 50 10 20 30,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:39:01