在n之下找到3或5的倍数

时间:2018-08-10 20:24:06

标签: python

我在弄清楚代码出什么问题时遇到了麻烦。 我想做的是创建一个函数,该函数将告诉我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的总和)

2 个答案:

答案 0 :(得分:3)

您正在使用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)

答案 1 :(得分:0)

这个主意很好,但是不幸的是,您搞砸了变量!

“ Sum”实际上是Python中的内置函数,它返回数字列表的总和。

此外,您的代码实际上并没有遍历给定范围内的数字,而只是使用了传递给for循环中函数的值。这是因为您选择了相同的变量名!

数字通常也不是一个好的变量名。许多依赖项可能具有使用此名称的内置函数。

尝试这样的代码:

def solution(threshold):
    result = 0
    for elem in range(threshold):
        if elem % 3 == 0 or elem % 5 == 0:
            result += elem
    return(result)