如何在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 个回答
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))