Python循环打印递增字母模式时列表索引越界问题求助
问题诊断与修正方案
核心错误点
- 第一处低级错误:重置k的语句误用了比较运算符
==,而非赋值运算符=。你写的k ==0仅会判断k是否等于0,不会对k的数值做任何修改,所以k会一直递增,最终超过字母列表的最大下标25,触发越界错误。 - 第二处逻辑顺序可优化:你当前的执行顺序是「访问列表元素→k自增→判断重置」,如果后续调整字母列表长度,临界值下仍可能触发越界,建议将重置判断放到访问列表元素之前,保证下标始终合法。
修正后可运行代码
最简修复(仅改运算符)
x = int(input("How much rows you want to print:\n")) letter = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'] k= 0 for row in range(x): for col in range(row+1): print(letter[k],end=" ") k+=1 if k==len(letter): k = 0 # 将比较运算符改为赋值运算符即可 print()
鲁棒性优化版本(调整逻辑顺序)
x = int(input("How much rows you want to print:\n")) letter = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'] letter_len = len(letter) k = 0 for row in range(x): for col in range(row+1): # 访问元素前先做越界判断,适配任意长度的字母列表 if k >= letter_len: k = 0 print(letter[k], end=" ") k += 1 print()
内容的提问来源于stack exchange,提问作者user17086391
相关产品推荐
相关产品推荐

