打印字符串相邻字符时触发Index out of range错误的技术求助
问题与解决
问题背景
给定字符串:
stg = 'AVBFGHJ'
需要输出相邻字符对,最后一个字符搭配None,预期输出:
AV VB BF FG GH HJ J None
尝试以下代码时触发Index out of range错误:
for i in range(len(stg)): print(stg[i],stg[i+1])
错误原因
字符串索引从0开始,长度为n的字符串最大索引是n-1。当循环到i = len(stg)-1(即最后一个字符的索引)时,i+1超出了字符串的索引范围,因此抛出索引越界错误。
解决方案
方法1:拆分循环与收尾处理
先遍历到倒数第二个字符,输出相邻对,最后单独处理最后一个字符:
stg = 'AVBFGHJ' # 遍历前len(stg)-1个字符,输出相邻对 for i in range(len(stg)-1): print(stg[i], stg[i+1]) print() # 打印空行分隔 # 处理最后一个字符与None的配对 print(stg[-1], None)
方法2:用zip函数批量配对
通过切片将原字符串与「原字符串从第二个字符开始 + [None]」配对,一次性遍历所有组合:
stg = 'AVBFGHJ' # 生成配对:原字符串每个字符 对应 下一个字符/None pairs = zip(stg, stg[1:] + [None]) for idx, (char, next_char) in enumerate(pairs): print(char, next_char) # 最后一对后不打印空行 if idx != len(stg)-1: print()
两种方法都能得到符合预期的输出。
内容的提问来源于stack exchange,提问作者nogoriv567
相关产品推荐
相关产品推荐

