elif <= неверный синтаксис? - PullRequest
0 голосов
/ 17 февраля 2020

В настоящее время я работаю над калькулятором, используя 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

Я думаю, что здесь что-то не хватает, так как я почти уверен, что <= является допустимым синтаксисом. </p>

Кто-нибудь получил идея, что может быть не так? Дайте мне знать, если вы хотите увидеть больше строк.

Ответы [ 2 ]

2 голосов
/ 17 февраля 2020

elif age >= 31 and age <= 60:

При использовании оператора and необходимо написать переменную для сравнения, поскольку каждое выражение до и после and стоит самостоятельно.

1 голос
/ 17 февраля 2020

Или, если вы используете Numpy, вы можете сделать свой код намного проще и функционализировать логи c следующим образом:

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
...