在一行中返回功能

时间:2013-11-02 15:58:47

标签: python function return

  

使用python代码填写框,这将使程序行为   匹配评论。您不得对代码进行任何其他更改   在括号“()”之外添加代码。

def bypass_line(age, has_acces_card):
''' (int, bool) -> bool
Return True if and only if the person's age is greater than 50 or
they have a access card as indicated by has_access_card.
'''


return (                    )

这是我正在做的一个练习题。我处于两难境地,我知道如何编写代码......

是:

def bypass_line(age, has_vip):
    if age >70 or has_vip =="yes":
        return True
    return False

但如何在()中编写一行代码,以便我回答问题?

3 个答案:

答案 0 :(得分:3)

您的if表达式已经会产生一个布尔值;它是TrueFalse。你可以直接退货:

return age > 70 or has_vip == "yes"

这基本上是if测试的内容;接受你的表达,将其传递给bool(),看看它是True还是False。此处不需要bool(),因为比较运算符(>==)本身已经返回TrueFalse

>>> age = 60
>>> age > 70
False
>>> age = 80
>>> age > 70
True

答案 1 :(得分:2)

像这样:

def bypass_line(age, has_acces_card):
    return age > 50 or has_acces_card == "yes"

这基本上返回由if语句计算的表达式本身。由于表达式已在if语句中返回TrueFalse,因此它将在此处执行相同的操作。

答案 2 :(得分:0)

在bypass_line函数内部,您可以简单地编写

return age > 50 or has_acces_card == "yes"

由于我更像是一个C ++人,我更喜欢像这样组织代码。它帮助我更清楚地思考。

return (age > 50) or (has_acces_card == "yes")

无论哪种方式,代码只是检查该人是否

  • 年龄大于50
  • 有一张门禁卡

如果 为真(因此or),该函数将返回True。否则,它将返回错误。

逻辑与if语句中的逻辑完全相同,只是在True语句中使用了结果Falsereturn(您还有相同的表达式,只是结果在其他地方使用)。你可以在任何地方使用那个(或任何)表达式,例如在print中,变量的定义,作为函数的参数......逻辑总是相同的。