-5

我需要使用 elif 来回答这个问题吗?我该怎么做?对不起,超级菜鸟问题。

def hint1(p1, p2, p3, p4):
    ''' (bool, bool, bool, bool) -> bool
    Return True iff at least one of the boolen parameters 
    p1, p2, p3, or p4 is True. 
    >>> hint1(False, True, False, True)
    True
    '''
4

4 回答 4

4
def hint1(*args):
    return any(args)

any函数接受一个可迭代对象,True如果其中的任何元素为真则返回。

问题是它any需要一个可迭代的,而不是一堆单独的值。

这就是它的*args用途。它接受您所有的参数并将它们放在一个元组中,该元组被馈送到您的单个参数中。然后,您可以将该元组传递给any您的可迭代对象。有关更多详细信息,请参阅教程中的任意参数列表


正如 Elazar 指出的那样,这不适用于恰好 4 个参数,它适用于任意数量的参数(甚至 0 个)。这是更好还是更差取决于您的用例。

如果您想在 3 个或 5 个参数上出错,您当然可以添加一个显式测试:

if len(args) != 4:
    raise TypeError("The number of arguments thou shalt count is "
                    "four, no more, no less. Four shall be the "
                    "number thou shalt count, and the number of "
                    "the counting shall be four. Five shalt thou "
                    "not count, nor either count thou three, "
                    "excepting that thou then proceed to four. Six "
                    "is right out.")

但实际上,在这种情况下只使用静态参数列表要简单得多。

于 2013-05-29T18:39:02.857 回答
1

尽可能短...

def hint1(p1,p2,p3,p4):
    return any([p1,p2,p3,p4])
于 2013-05-29T18:36:58.670 回答
0

any()方法采用单个可迭代对象,如果任何元素为真,则返回真。

def hint1(p1, p2, p3, p4):
    return any([p1, p2, p3, p4])
于 2013-05-29T18:37:22.740 回答
-2

你可以试试

def hint1(p1,p2,p3,p4):
    if p1 or p2 or p3 or p4:
        return True

或者

def hint1(p1,p2,p3,p4)
    if p1:
        return True
    if p2:
        return True
    if p3:
        return True
    if p4:
        return True
    return False
于 2013-05-29T18:34:15.197 回答