如何读取CSV文件参数传入自定义函数计算施加的作用力
解决方法
你当前代码的核心问题有两个:
- 从CSV读取存入字典的所有数值都是字符串类型,直接传入计算函数会触发类型错误
- 数据是按列存储的结构,需要按索引遍历每一行的对应参数调用函数
你可以在现有代码之后添加以下代码完成批量计算:
# 新增列存储计算结果 data['AppliedForce'] = [] # 遍历每一行数据的索引 for i in range(len(data['Mass'])): # 读取对应参数并转换为浮点型 mass = float(data['Mass'][i]) acceleration = float(data['Acceleration'][i]) normal_force = float(data['Normal'][i]) mu_val = float(data['Mu'][i]) # 调用函数计算 result = forceAppliedCalc(mass, acceleration, normal_force, mu_val) # 保留2位小数存入结果列表,可根据需求修改精度 data['AppliedForce'].append(round(result, 2)) # 测试输出前3条结果验证 for i in range(3): print(f"姓名:{data['Name'][i]},计算得出施加作用力:{data['AppliedForce'][i]}")
如果需要把计算结果写回新的CSV文件,可补充以下代码:
# 写入结果到新CSV文件 with open("Result_Data.csv", "w", newline="") as f: writer = csv.writer(f) # 写入表头 writer.writerow(data.keys()) # 按行写入数据 for i in range(len(data['Mass'])): row = [data[key][i] for key in data.keys()] writer.writerow(row)
另外你原来的文件读取代码没有手动关闭文件,更稳妥的写法是用with上下文管理器自动释放资源:
# 优化后的文件读取写法 with open("Data.csv") as file: reader = csv.reader(file, delimiter=",") data = dict() headerRead = False headers = [] for row in reader: if not headerRead: for col_name in row: data[col_name] = [] headers = row headerRead = True else: for i in range(len(row)): data[headers[i]].append(row[i])
内容的提问来源于stack exchange,提问作者Norbu Samdrup
相关产品推荐
相关产品推荐

