Advent Of Code 2022第1题:处理文件换行时求和数组遇阻求助
问题分析与修复
你的代码存在两个核心问题:
- 用
f.read().split("\n")分割文件内容后,空行对应的元素是空字符串"",而非"\n"——因为split方法会将分隔符本身从结果中移除,所以if i == "\n"这个判断永远不会触发。 - 遇到空字符串时,执行
int(str(i))会抛出ValueError,因为空字符串无法转换为整数。
修复后的代码
with open("input.txt") as f: list_array = f.read().split("\n") new_array = [] current_sum = 0 # 避免使用sum作为变量名,它是Python内置函数 for item in list_array: if not item: # 直接检测是否为空字符串 new_array.append(current_sum) current_sum = 0 else: current_sum += int(item) # item本身已是字符串,无需额外转换 # 处理最后一组没有空行结尾的情况 if current_sum != 0: new_array.append(current_sum) print(new_array)
关键改动说明
- 将判断条件改为
if not item,精准识别空行对应的元素 - 仅对非空字符串执行转整数累加操作,避免触发转换异常
- 循环结束后额外判断一次,确保最后一组数字的总和也被加入结果数组
- 变量名从
sum改为current_sum,避免覆盖Python内置的sum()函数
内容的提问来源于stack exchange,提问作者Riyan Nayak
相关产品推荐
相关产品推荐

