如何让函数返回两个独立值?计算男女BAC值的多返回实现方法
实现方案
你不需要保留sex变量和对应的条件判断逻辑,直接分别计算男性、女性对应的两个BAC值,打包返回即可,完全可以规避sex变量带来的复杂度问题:
def calculate_bac_for_both_gender(drinks, Weight, Duration): # 提前定义两性对应的R系数 R_MALE = 3.8 R_FEMALE = 4.5 # 提取公共计算项,避免重复计算 time_deduction = 0.01 * (Duration / 40) # 分别计算两性BAC male_bac = (drinks / Weight * R_MALE) - time_deduction female_bac = (drinks / Weight * R_FEMALE) - time_deduction # 以字典格式返回结果,取值更直观 return { "male_bac": round(male_bac, 4), "female_bac": round(female_bac, 4) }
调用示例
你直接传入饮酒量、体重、时长三个参数即可,无需传入性别参数:
# 示例:饮酒5份,体重70kg,饮酒后时长120分钟 result = calculate_bac_for_both_gender(drinks=5, Weight=70, Duration=120) print(result) # 输出样例:{'male_bac': 0.2414, 'female_bac': 0.2914}
可扩展优化写法
如果后续需要新增其他群体的R系数,你可以把R系数统一放到配置字典中批量计算,无需重复编写计算逻辑:
def calculate_all_bac(drinks, Weight, Duration): # 所有群体的R系数统一配置 r_config = { "男性": 3.8, "女性": 4.5 } time_deduction = 0.01 * (Duration / 40) res = {} for group, r_val in r_config.items(): res[group] = round((drinks / Weight * r_val) - time_deduction, 4) return res
内容的提问来源于stack exchange,提问作者jrdn462
相关产品推荐
相关产品推荐

