3 或 5 的倍数可以使用 else if 语句来完成吗?

问题描述 投票:0回答:1

我已经尝试过以下代码,除了 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
python if-statement
1个回答
0
投票

如果范围不包含 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
对象。

© www.soinside.com 2019 - 2024. All rights reserved.