使用'all()'函数在IF语句中进行多次布尔测试

时间:2016-07-21 00:36:05

标签: python function boolean-logic boolean-expression boolean-operations

def common(num):
    #returns true if num is divisible by all the 'i' integers

    if all(num%divisor==0 for divisor in (1,10)):
        return True
    else:
        return False

print(common(2520)) --> True
print(common(10))   --> True
print(common(17))   --> False

大家好,这个函数应该判断'num'是否是所有'i'数字的公倍数。我无法弄清楚为什么10回归True?不是'all()'意味着每个测试都必须为True,因为整个事情都是真的吗? 我用错了吗?我应该使用哪些更好的功能?感谢您的任何见解。

-wt

1 个答案:

答案 0 :(得分:3)

寻找自己的方法:

num=10
for divisor in (1,10):
    print(divisor, num%divisor , num%divisor==0)

给出

1 0 True
10 0 True

让您理解(1,10)是一个元组,而您当然想要range(1,10)

请注意,函数common()具有与

相同的返回值
 all(num%divisor==0 for divisor in range(1,10))

然后您可以将其定义为:

def common(num):
    return all(num%divisor==0 for divisor in range(1,10))