在不使用if的情况下定义函数时使用多个参数?

时间:2018-02-11 22:43:22

标签: python function boolean arguments

这些是我的说明https://cs1110.cs.virginia.edu/pa05-maydate.html

 def creepy(x, y):
        x = (x // 2)+7
        y = (y*2-13)
        return x > y

我应该用一个函数编写一个文件:令人毛骨悚然。令人毛骨悚然的应该有两个论点,两个人的年龄。如果两者可能相互约会而不会令人毛骨悚然,那么它应该返回False。

X和Y表示两个人彼此约会的可接受年龄。 x =您年龄的一半加上七岁 y =你的年龄减去十三岁

所有代码必须在函数内。我知道我做错了,因为我习惯使用“Else / if”来完成这样的事情。

我应该如何定义我的函数?

1 个答案:

答案 0 :(得分:1)

我相信你误解了这个问题。您从源头提及的两个条件从您的年龄开始,并提供可接受的较低年龄限制和可接受的年龄上限。有两个条件,因为每个输入年龄都有两个答案,一个较低,一个较高。

但你的任务是拿一对数字,其中第一个数字总是较小的数字,并说明较大的数字是否高于可接受的年龄上限。所以你只需要一个条件,而不是两个。

def creepy(x, y):
    return x < (y // 2) + 7

您的来源将这些作为可接受的答案:

How old are you? 17
You can date people between 15 and 21 years old
How old are you? 70
You can date people between 42 and 127

我们可以通过输入这些数字来测试函数creepy,如下所示:

>>> creepy(14,17)
True
>>> creepy(15,17)
False
>>> creepy(17,21)
False
>>> creepy(17,22)
True

这些结果与输入17匹配;输出15-21。

>>> creepy(41,70)
True
>>> creepy(42,70)
False
>>> creepy(70,127)
False
>>> creepy(70,128)
True

这些结果与输入70匹配;输出42-127。

如果您希望该功能在较旧/较年轻的方向上处理年龄计算,则仍然不需要两个条件。你可以这样做:

def creepy(x, y):
    if x <= y:
        return x < (y // 2) + 7
    else:
        return creepy(y, x)