Python - 创建一个函数来检查一个数字是否可被其他数字除

时间:2015-11-11 11:04:02

标签: python

我试图创建一个功能,测试一个数字是否可以被其他数字整除(在*args部分提交)。

当我运行is_divisible(13, 2, 4)时,我的函数返回False,当我运行is_divisible(12, 2, 4)时返回True。但是is_divisible(6, 8, 10, 2)会返回True。我不知道什么是错的,任何帮助都会受到高度赞赏。

def is_divisible(numerator, *args):
    divisors = list(args)
    for number in range(len(divisors)): 
        x = divisors.pop()
        if numerator % x != 0:
            return False
        else:
            return True

2 个答案:

答案 0 :(得分:2)

使用any的更多pythonic解决方案:

>>> def is_divisible(numerator, *args):
    return not any(numerator % divisor for divisor in args)

>>> is_divisible(13,4,2)
False
>>> is_divisible(60,3,2)
True

答案 1 :(得分:0)

def is_divisible(numerator, *args):
    divisors = list(args)
    for divisor in divisors: 
        if numerator % divisor != 0:
            return False
    return True

print(is_divisible(6, 8, 10, 2))

这是您稍微修改过的代码。我认为你想要检查你的号码是否可以被列表中的所有数字整除,这就是我将return True移出for块的原因。否则你会在*args的第一个数字上返回结果,因此你错误地True,因为6可以被2整除(但不能被8或10整除)。