1

我写了一些代码来计算 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

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

4

1 回答 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)):

这是您似乎正在尝试做的事情的一个更简单的版本(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)

或者,使用德摩根定律和-ish 值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))
于 2013-03-09T11:49:36.010 回答