如何在Python中用多组参数调用函数并求和输出
批量计算化学品排放总量的解决方案
首先调整你的chemicalemissions函数,让它返回计算得到的MTCO2e值(而非仅打印),这样才能在批量处理时收集每组结果:
# 补充示例全局变量(替换为你的实际值) lbstokg = 0.453592 galtofloz = 1 / 128 # 1加仑=128液盎司 MJgeneral = 100 kgCO2perMJperkgactiveingredient = 0.0001 kgCO2etoMTCO2e = 0.001 def chemicalemissions(chemical, acres, amountperacre, units): # Cayuse Plus 计算逻辑 cayuseplusdensity = 10.26 activeingredientcayuseplus = 0.25 if chemical == 'Cayuse Plus': densitykg = cayuseplusdensity * lbstokg if units == 'fl oz': densitykg = densitykg * galtofloz totalamountappliedkg = densitykg * amountperacre * acres totalkgactiveingredient = totalamountappliedkg * activeingredientcayuseplus totalMJ = MJgeneral * totalkgactiveingredient MTCO2e = totalMJ * kgCO2perMJperkgactiveingredient * kgCO2etoMTCO2e return MTCO2e # Tri-Fol 计算逻辑 trifoldensity = 10.1 trifolactiveingredient = 0.25 if chemical == 'Tri-Fol': densitykg = trifoldensity * lbstokg if units == 'fl oz': densitykg = densitykg * galtofloz totalamountappliedkg = densitykg * amountperacre * acres totalkgactiveingredient = totalamountappliedkg * trifolactiveingredient totalMJ = MJgeneral * totalkgactiveingredient MTCO2e = totalMJ * kgCO2perMJperkgactiveingredient * kgCO2etoMTCO2e return MTCO2e # 未匹配化学品时返回0,也可根据需求抛出异常 return 0
批量处理与求和实现
把所有待计算的参数组合存入列表,每个元素是包含(chemical, acres, amountperacre, units)的元组,遍历列表调用函数并累加结果:
# 示例批量参数,替换为你的实际数据 batch_params = [ ('Cayuse Plus', 10, 5, 'gal'), ('Tri-Fol', 20, 3, 'fl oz'), ('Cayuse Plus', 15, 2, 'fl oz') ] total_MTCO2e = 0 for params in batch_params: # 用*args解包元组参数传入函数 single_result = chemicalemissions(*params) total_MTCO2e += single_result print(f"总MTCO2e排放量: {total_MTCO2e}")
关于*args的说明
*args完全适用于当前场景:当你把每组参数打包成元组后,调用函数时用*params可以自动将元组元素拆分为函数需要的四个位置参数,完美匹配参数类型与顺序。
额外优化建议
可以把化学品的密度、有效成分占比整理成字典,减少重复的if-else逻辑:
chemical_info = { 'Cayuse Plus': {'density': 10.26, 'active_ingredient': 0.25}, 'Tri-Fol': {'density': 10.1, 'active_ingredient': 0.25} }
后续在函数中直接通过字典获取对应数据,让代码更简洁易维护。
内容的提问来源于stack exchange,提问作者RMoazed
相关产品推荐
相关产品推荐

