elif <= 语法无效?

elif <= invalid syntax?

我目前正在使用 pandas 开发一个计算器,为了确定一个变量,我使用了嵌套的 if 语句。但不幸的是,我从下面的代码中得到了一个无效的语法错误。

    if net_option == 'Y':
        if age <= 30:
            desired_net = 0.15
        elif age >= 31 and <= 60:
            desired_net = 0.12
        elif age >= 61 and <= 90:
            desired_net = 0.11
        elif age >= 91 and <= 140:
            desired_net = 0.10
        elif age >= 141 and <= 180:
            desired_net = 0.09
        elif age >= 181 and <= 245:
            desired_net = 0.08
        elif age >= 246 and <= 270:
            desired_net = 0.07
        elif age >= 271 and <= 365:
            desired_net = 0.6
        elif age >= 366 and <= 500:
            desired_net = 0.3
        elif: age >= 501 and <= 700:
            desired_net = 0.0
        elif age > 700:
            desired_net = -0.1
        else:
            desired_net = 0.1
    else:
        desired_net = desired_net

错误信息:

elif age >= 31 and <= 60:
                    ^
SyntaxError: invalid syntax

我想我在这里遗漏了一些东西,因为我很确定 <= 是一个有效的语法。

有没有人知道可能出了什么问题?如果您想查看更多行,请告诉我。

elif age >= 31 and age <= 60:

当使用and运算符时,您需要再次编写要比较的变量,因为and前后的每个表达式都是独立的。

或者,如果您使用 Numpy,您可以使您的代码更简单,并使逻辑功能化,如下所示:

def get_desired_net(age):   
    desired_net = {0:0.15, 31:0.12, 61:0.11, 91:0.10, 141:0.09, 181:0.08, 246:0.07, 271:0.06, 366:0.03, 501:0.00, 701:-0.01}

    keys_array = np.array(list(desired_net.keys()))

    max_age = max(keys_array[keys_array <= age])

    return desired_net[max_age]

>>> get_desired_net(15)
0.15
>>> get_desired_net(30)
0.15
>>> get_desired_net(31)
0.12
>>> get_desired_net(700)
0.0
>>> get_desired_net(701)
-0.01