如何让函数返回 2 个单独的值? [复制]
Posted
技术标签:
【中文标题】如何让函数返回 2 个单独的值? [复制]【英文标题】:How to have a function return 2 sperate values? [duplicate] 【发布时间】:2021-12-25 04:58:57 【问题描述】:我正在尝试编写一个函数来返回男性和女性的 BAC。我的作业的 BAC 公式是 BAC = (drinks / Weight * R)
,其中 R 是男性和女性的不同值。我如何让它返回两个性别的值?
这是我尝试使用但不起作用的代码:
if sex =='M':
R = 3.8
BAC = (drinks / Weight * R)
BAC = BAC - (0.01 * (Duration / 40))
return BAC
if sex == 'F':
R = 4.5
BAC = (drinks / Weight * R)
BAC = BAC - (0.01 * (Duration / 40))
return BAC
我在代码中有另一个定义性别的函数,但将它放入函数中似乎会使事情复杂化,所以我认为我需要完全删除变量性别,但我不确定从那里去哪里。
【问题讨论】:
你的代码是无效的python:未定义的变量和return
在函数之外。
@Michael:它是有效的 Python,只是不完整,而不是 minimal reproducible example。
【参考方案1】:
使用元组作为返回值:
# we're inside a function def here
RM = 3.8
BACM = (drinks / Weight * RM)
BACM = BACM - (0.01 * (Duration / 40))
RF = 4.5
BACF = (drinks / Weight * RF)
BACF = BAFC - (0.01 * (Duration / 40))
return BACM, BACF
【讨论】:
【参考方案2】:在 python 中,返回 2 个值就像返回一个元组(基本上是一个列表)。这可能非常有用,尤其是在与解构列表混合时。 示例:
def get_bac():
maleBAC = 50 # random number for now, replace with the math necessary
femaleBAC = 75
return maleBAC, femaleBAC
male, female = get_bac()
print(male) # 50
print(female) # 75
【讨论】:
可能会更清楚地说return maleBAC, femaleBAC
【参考方案3】:
这听起来像xy problem。虽然您的问题的答案是您可以返回任何集合类型,例如 tuple
、Sequence
、Mapping
,甚至创建自己的类,但接受性别作为函数的参数更简单.
【讨论】:
以上是关于如何让函数返回 2 个单独的值? [复制]的主要内容,如果未能解决你的问题,请参考以下文章