Python实训题:实现生产线产品产量平均值计算函数的疑问
解决生产线产量平均值计算问题
嘿,我来帮你理清这个困惑!其实你不用纠结时间周期的问题——咱们先从给定的输入输出反推一下计算逻辑,就能明白啦:
看示例里的计算:
- line1的产量数据是
[5,6,5,1],总和17,除以4条记录得到4.25,和输出完全匹配 - line3的产量数据是
[4,-1,12,16],总和31,除以4条记录得到7.75,也和输出一致
这说明输入里的第二个参数(那个全是0的字段)要么是占位符,要么所有记录都属于同一个统计周期,不需要计算时间间隔。我们只需要按生产线分组,收集所有对应的产量值,然后直接计算平均值就行。
下面是实现这个逻辑的Python函数:
def calculate_line_average(input_data): # 用字典存储每条生产线的所有产量数据 line_records = {} for line_name, _, production in input_data: # 如果生产线还没在字典里,初始化一个空列表 if line_name not in line_records: line_records[line_name] = [] # 添加当前产量值到对应生产线的列表 line_records[line_name].append(production) # 计算每条生产线的平均值,返回结果字典 return { line: sum(records) / len(records) for line, records in line_records.items() } # 测试示例输入 input_example = [ ('line1', 0, 5), ('line1', 0, 6), ('line2', 0, 3), ('line1', 0, 5), ('line3', 0, 4), ('line2', 0, 9), ('line3', 0, -1), ('line2', 0, 9), ('line2', 0, 10), ('line3', 0, 12), ('line1', 0, 1), ('line3', 0, 16) ] print(calculate_line_average(input_example)) # 输出:{'line1': 4.25, 'line2': 7.75, 'line3': 7.75}
代码说明:
- 我们用
line_records字典来分组存储每条生产线的所有产量数据,键是生产线名称,值是对应产量的列表 - 遍历输入数据时,直接忽略第二个字段(因为它不影响计算),把产量值添加到对应生产线的列表里
- 最后用字典推导式,对每条生产线的产量列表计算总和除以数量,得到平均值
如果之后题目要求过滤无效值(比如负数产量),只需要在添加数据的时候加个判断,比如if production >= 0再添加就行,但根据示例,这里不需要过滤负数哦。
内容的提问来源于stack exchange,提问作者Mattia Amendola
相关产品推荐
相关产品推荐

