Python数据分段求和追踪最大值报错ValueError求助
问题解决:空行分隔段落求和及最大值追踪
原始数据
data = """1000 2000 3000 4000 5000 6000 7000 8000 9000 10000"""
需求说明
将空行分隔的每段数字求和,同时维护max_sum追踪各段和的最大值:
- 第一段1000、2000、3000的和为6000,与初始max_sum(如0)比较
- 第二段4000的和与当前max_sum比较
- 遇到空行时重置求和值,依次处理所有段落
错误代码及报错信息
错误代码
max_num = 0 sum = 0 for line in data: # print(line) sum = sum + int(line) if line in ['\n', '\r\n']: sum=0 max_num = max(max_num, sum)
报错信息
sum = sum + int(line) ValueError: invalid literal for int() with base 10: '\n'
错误原因
直接遍历data字符串会逐个字符迭代,而非按行分割,\n会被当作单独元素处理,转整数必然报错。即便按行分割,空行直接转整数也会失败,必须先判断行是否为空。
修正后的代码
max_sum = 0 current_sum = 0 # 按行分割数据,兼容不同换行符 for line in data.splitlines(): # 去除行首尾空白,判断是否为空行 stripped_line = line.strip() if not stripped_line: # 空行时更新最大值,重置当前求和 max_sum = max(max_sum, current_sum) current_sum = 0 else: # 非空行则累加数值 current_sum += int(stripped_line) # 循环结束后,补充处理最后一段的和 max_sum = max(max_sum, current_sum) print(max_sum) # 输出:24000
代码说明
- 使用
splitlines()按行分割数据,自动处理\n、\r\n等不同换行符 - 对每行执行
strip()去除首尾空白,判断是否为空行:- 空行时,先将当前段的和与
max_sum比较更新,再重置current_sum - 非空行则转为整数累加到
current_sum
- 空行时,先将当前段的和与
- 循环结束后,最后一段没有后续空行触发最大值更新,需单独做一次比较
内容的提问来源于stack exchange,提问作者RushHour
相关产品推荐
相关产品推荐

