Python解密隐藏信息代码运行出现IndexError索引越界错误如何解决
错误成因
- 文件读取逻辑错误:你调用
file.read()将整个文件内容读取为单个长字符串,后续for line in file实际遍历的是字符串里的每个单个字符,而不是你预期的文本行。当遍历到换行、空格等空白字符时,执行strip()后会得到空字符串,此时访问line[0]就会触发索引越界。 - 缺少空行校验:就算你正确读取了每行内容,原文本也可能存在全为空白字符的空行,
strip()后同样会得到空字符串,直接取下标0也会报错。
修复后可运行代码
letter = input('Letter: ').lower() hidden_message = [] with open('puzzle.txt', 'r') as file: # 直接迭代文件对象即可逐行读取 for line in file: processed_line = line.strip().lower() # 先判断非空再访问下标 if processed_line and processed_line[0] == letter: hidden_message.append(processed_line[-1]) print(''.join(hidden_message))
修复说明
- 移除了
file.read()调用,直接迭代文件对象实现逐行读取,符合业务逻辑 - 新增非空判断,仅处理
strip()后不为空的行,从根源避免空字符串索引报错 - 将用户输入的指定字母统一转小写,和行内容的大小写处理逻辑对齐,避免大小写不一致导致匹配失败
内容的提问来源于stack exchange,提问作者Hides - In - Barrels
相关产品推荐
相关产品推荐

