如何读取txt文件中的4x4数字矩阵并完成指定数学运算
问题分析与实现方案
现有代码的问题
- 缩进错误:
with代码块下的for循环没有正确缩进,Python依赖缩进判断代码层级,该问题会直接触发语法错误。 - 报错直接原因:
sum()函数要求传入可迭代对象(如列表、元组等包含多个元素的集合),你将单个整数类型的iq1传入sum(),单个整数无法被迭代,因此触发int is not iterable报错。 - 逻辑缺陷:代码仅逐行提取单个季度的数值,没有存储全量数据,无法完成region行求和、quarter列求和以及全局求和的需求。
- 冗余操作:
line.split()本身返回的就是列表,不需要再用list(data)做重复转换。
数据转换与计算实现
首先读取txt文件时将所有字符串格式的数字批量转换为整数,存储为二维列表即可用于数学运算,完整实现代码如下:
# 读取文件并转换为整数型二维列表 all_data = [] with open("data.txt", 'r') as data_file: for line in data_file: # 去掉每行首尾空白字符,分割后批量转成int row = list(map(int, line.strip().split())) all_data.append(row) # 计算4个region的总和(每行对应一个region) region_sums = [sum(row) for row in all_data] for idx, region_sum in enumerate(region_sums, 1): print(f"Region {idx} 总和:{region_sum}") # 计算4个quarter的总和(每列对应一个quarter) quarter_sums = [sum(col) for col in zip(*all_data)] for idx, quarter_sum in enumerate(quarter_sums, 1): print(f"Quarter {idx} 总和:{quarter_sum}") # 计算所有数据总求和 total_sum = sum(region_sums) print(f"全量数据总求和:{total_sum}")
如果你的txt文件中每行的数字是用逗号或者其他符号分隔的,把split()的括号里加上对应分隔符即可,比如逗号分隔就改成split(',')。
内容的提问来源于stack exchange,提问作者oneston
相关产品推荐
相关产品推荐

