我已经尝试过以下代码,除了 0 或负数之外,它工作正常,它说: “无法访问未与值关联的局部变量“add_list””。
我已经看到如何通过其他方式完成此操作,我只是想知道是否可以使用 elif 语句来完成。我尝试过“中断”、缩进和不同的顺序,但得到了相同的错误。
def solution(number):
raw_list = range(number)
my_list = []
for num in raw_list:
if num < 0:
my_list.append(0)
return my_list
elif num % 3 == 0 or num % 5 == 0:
my_list.append(num)
add_list = sum(my_list)
return add_list
如果范围不包含 3 或 5 的倍数,则永远不会执行
add_list = sum(my_list)
。结果,当您尝试返回它时,您会收到错误。
无需每次循环都计算总和,因为您会覆盖上一次迭代的总和。将其从循环中取出,那么它就不会依赖于
elif
条件。
def solution(number):
raw_list = range(number)
my_list = []
for num in raw_list:
if num < 0:
my_list.append(0)
return my_list
elif num % 3 == 0 or num % 5 == 0:
my_list.append(num)
add_list = sum(my_list)
return add_list
由于
if
条件永远不可能为真,因此您也可以忽略它。然后你可以将整个事情简化为:
def solution(number):
return sum(num in range(number) if num % 3 == 0 or num % 5 == 0)
顺便说一句,
raw_list
对于变量来说是一个糟糕的名字。 range()
不返回列表,它返回充当生成器的 range
对象。