你如何正确测试python中的可分性

时间:2013-03-09 11:47:04

标签: python

我写了一些代码来评估x和y之间的整数,并用整数3和5检查可分性。 这是代码。

def div_3_5(start, end):
    result = 0
    result2 = 0
    result3 = 0 
    while start < end:
        result2 = start + result 
        result = result2 - start + 1
        if result2 % 3==0 or 5==0:
            result3 = result3 + 1 
        else:
            result3 = result3 + 0
        return result3

我只是一个初学者,但是代码中的一切似乎都很好,除非我错误地使用了“或”语句或错误地检查了可分性。这让我想到了主要问题。任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:6)

你需要这样做:

if result2 % 3 == 0 or result2 % 5 == 0:

否则会将其解析为if (result2 % 3==0) or (5==0):,这明显错误为5 != 0

另一个建议可能非常有用,因为您有更多数字要检查可分性:

if any(result2 % i == 0 for i in (3, 5)):

这是你似乎想要做的更简单的版本(Project Euler问题1):

def div_3_5(start, end):
    return sum(1 for i in range(start, end+1) if i % 3 == 0 or i % 5 == 0)

或者,使用De Morgan定律以及0False - ish值的事实:

def div_3_5(start, end):
    return sum(1 for i in range(start, end+1) if not (i % 3 and i % 5))