我编写了一些代码来评估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
Run Code Online (Sandbox Code Playgroud)
我只是一个初学者,但在代码中一切似乎都很好,除非我错误地使用了"或"语句或错误地检查了可分性.这让我想到了主要问题.任何帮助,将不胜感激.
你需要这样做:
if result2 % 3 == 0 or result2 % 5 == 0:
Run Code Online (Sandbox Code Playgroud)
否则它被解析为if (result2 % 3==0) or (5==0):,这显然是错误的5 != 0.
另一个建议可能非常有用,因为您有更多数字要检查可分性:
if any(result2 % i == 0 for i in (3, 5)):
Run Code Online (Sandbox Code Playgroud)
这是你似乎想要做的更简单的版本(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)
Run Code Online (Sandbox Code Playgroud)
或者,使用De Morgan的定律和事实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))
Run Code Online (Sandbox Code Playgroud)