基于双条件的For循环实现:按指定步数循环打印数组元素
解决数组循环打印时的索引越界问题
错误原因
你的代码存在两个问题:
- 变量名笔误:定义的数组是
ex_ar,但循环里误用了sayi[i]; - 索引越界:数组
ex_ar长度为3,有效索引仅为0、1、2。当step=6时,循环变量i会遍历0-5,当i≥3时,ex_ar[i]超出数组索引范围,触发IndexError。
解决方案
使用**取模运算符%**实现索引的循环复用。取模运算会将循环变量对数组长度取余,结果始终落在数组的有效索引范围内(0到数组长度-1),彻底解决越界问题。
正确代码示例
ex_ar = [1, 2, 3] step = 5 arr_len = len(ex_ar) for i in range(step): print(ex_ar[i % arr_len])
当step=5时,输出符合预期:
1 2 3 1 2
当step=6时,输出为:
1 2 3 1 2 3
原理说明
取模运算i % arr_len的核心作用是让索引循环复用:
i=3时,3%3=0,对应数组第一个元素;i=4时,4%3=1,对应数组第二个元素;i=5时,5%3=2,对应数组第三个元素;- 以此类推,实现数组元素的循环遍历。
内容的提问来源于stack exchange,提问作者Fatih G.
相关产品推荐
相关产品推荐

