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