首页 > 解决方案 > 在“n”下面找到 3 或 5 的倍数

问题描述

我无法弄清楚我的代码有什么问题。我想要做的是创建一个函数,它会告诉我 3 和 5 的所有倍数的总和低于给定的“数字”。

这是我所拥有的:

def solution(number):
    sum = 0
    for numbers in range(1,number):
        if number%3 == 0 or number%5 == 0:
            sum += number
    return sum

它给了我 90。我需要 23(3、5、6、9 的总和)

标签: python

解决方案


您正在使用number(函数参数)而不是numbers(循环变量)。

也许这就是为什么您应该使用描述性和可区分的变量名称的原因。在您的情况下,您使用了两个非常相似的变量名称,同时还重新绑定了内置函数的名称sum。如果代码看起来更像:

def solution(number):
    total = 0
    for n in range(1, number):
        if n%3 == 0 or n%5 == 0:
            total += n
    return total

或更简洁地说:

def solution(number):
    return sum(n for n in range(1, number) if n%3 == 0 or n%5 == 0)

推荐阅读