如何在Python中正确检测可被除性

1 投票
1 回答
14485 浏览
提问于 2025-04-17 18:30

我写了一段代码,用来检查在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 个回答

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)):

这是你似乎想要做的事情的一个更简单的版本(项目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)

或者,使用德摩根定律和 0 是一个 False 的值这一事实:

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

撰写回答